Страница 1 из 1

правило пересылки

Добавлено: 2008-07-25 9:21:03
belya-dj
Доброго времени суток всем!
Есть такая задача - есть домен (почтовый Exim+Courier+MySQL) есть много юзверей, в базе юзеров есть поле типа "может/не может слать в мир" тип ENUM и два значения "Y"/"N", т.е. только локальная отправка - по домену или есть возможность слать и "наружу". Если прав нет и всё равно почта шлёццо она должна тогда упасть на определённый ящик типа info@domen.ru.
Насколько я понимаю надо добавить сначала проверку на "может/не может" а потом или пустить на remote_smtp или переслать на ящик info@domen.ru.

1. Добавил роутер:

Код: Выделить всё

# на этом роутере проверяеться возможность отправки почты изнутри организации для определённого пользователя

        domen_mail_local:
                          data = accept
                       domains = +local_domains
                     condition = ${if eq{}{${lookup mysql{SELECT `outgoing` FROM `users` WHERE `username`='${local_part}'}}}{no}{yes}}
                     transport = domen_local_delivery
                       no_more
По идее он должен отправить письмо на транспорт domen_local_delivery если стоит запрет на отправку писем из домена наружу.

2. Надо добавить транспорт который производит доставку на ящик info@domen.ru

Код: Выделить всё

       domen_local_delivery:
                        driver = appendfile
                  check_string = ""
               create_directory
              delivery_date_add
               return_path_add
               envelope_to_add
                   headers_add = X-ReSended: by Exim on mail.domen.ru
                     directory = /var/vmail/info@domen.ru
Но здесь я тормознулся - не могу понять чего ещё не хватает.

Гложат сомнения ещё по поводу того, что не будет ли за роутер "цепляться" приходящая почта.
Помогите/подскажите плиз где что не так. Или как это можно организовать проще.

Re: правило пересылки

Добавлено: 2008-07-25 9:44:40
dikens3
Сразу ошибка.
local_part - это переменная не аутентифицированного пользователя, а получателя.

Т.е. к примеру у тебя пользователь user@mydomain.ru отправляет (но ему запрещено!!) почту на remoteuser@remotedomain.ru, тогда в переменной local_part будет remoteuser. Т.о. проверка не сработает.

если у тебя аутентифицированные пользователи, тогда нужно примерно так:

Код: Выделить всё

condition = ${if eq{}{${lookup mysql{SELECT `outgoing` FROM `users` WHERE `username`='${quote_mysql:$authenticated_id}' LIMIT 1}}}{no}{yes}}