Здравствуйте, Павел.
Вы писали 4 октября 2013 г., 0:05:49:
> Добрый день.
> Имеется почтовый сервер с exim.
> Работает в связке с mysql базой данных.
> Роутер для почтовых алиасов:
> system_aliases:
> driver = redirect
> allow_fail
> allow_defer
> file_transport = address_file
> pipe_transport = address_pipe
> data = ${lookup mysql{SELECT recipients FROM aliases WHERE
> local_part='${local_part}' AND domain='${domain}'}}
> Делает выборку из БД, таблицы aliases, смотрит на адрес назначения
> письма и достаёт получателей.
> Им и направляет письмо, полученное на определённый алиас.
> Появилась задача.
> Нужно сделать так, чтобы доставка на определённый алиас была
> контролируема, нужно фильтровать письма на основании того - кому
> разрешено отправлять на конкретный алиас, а кому - нет. В рамках данной
> задачи приемлемым фильтрацию только по from - адресу отправителя,
> осознавая, что адрес можно подменить и т.д, и валидацио отправителя
> осуществлять не будем.
> К примеру, в таблице aliases добавить поле accept_from типа text, в
> котором вписывать те адреса (их может быть несколько, указываются через
> запятую в поле), которым разрешено отправлять письма на тот или иной алиас.
> Транспорты:
> local_delivery:
> driver = appendfile
> check_string = ""
> create_directory
> delivery_date_add
> directory = /mail/$domain/$local_part
> directory_mode = 770
> envelope_to_add
> group = mail
> maildir_format
> maildir_tag = ,S=$message_size
> message_prefix = ""
> message_suffix = ""
> mode = 0660
> quota = ${lookup mysql{SELECT quota FROM users WHERE
> login='${local_part}' AND domain='${domain}'}{${value}M}}
> quota_size_regex = S=(\d+)$
> quota_warn_threshold = 75%
> return_path_add
> address_pipe:
> driver = pipe
> return_output
> address_file:
> driver = appendfile
> delivery_date_add
> envelope_to_add
> return_path_add
> Просьба порекомендовать - каким образом это можно сделать.
> Если нужны дополнительные данные из конфигурации exim, могу предоставить.
> Спасибо.
я делал personal whitelist вот таким образом
warn
domains = +relay_to_domains:+local_domains
set acl_m2= ${lookup mysql{GET_WL ea.account='$local_part' and
ed.name='$domain'}}
condition = ${if !eq{$acl_m2}{}{1}{0}}
set acl_m2 = ${tr{$acl_m2}{,}{|}}
set acl_m2 = ^($acl_m2)\$
accept
domains = +relay_to_domains:+local_domains
condition = ${if !eq{$acl_m2}{}{1}{0}}
condition = ${if match{$sender_address}{$acl_m2}{yes}{no}}
logwrite = Accept from $sender_address to $local_part@$domain by
personal whitelist.
set acl_m6 = whitelisted
те select возвращает поле в котором адреса отправителя перечислены
через запятую, меняем запятую на |, обвешиваем признаком начали и
конца, и делаем на полученый стринг match
тебе еще deny потом нужно сделать для всех остальных
или инвертировать accept
--
С уважением,
Alexander mailto:[email protected]
_______________________________________________
Exim-users mailing list
[email protected]
http://mailground.net/mailman/listinfo/exim-users