Есть Postfix + авторизация пользователей в mysql. Так вот появилась необходимость почту,
приходящую на какой-нить адрес ещё пересылать кому-угодно. Т.е. не форвардить письмо,
а именно копию отсылать на нужный адрес. Притом хочется чтобы всё было красиво и понятно.
Решение:
Postfix ищет virtual_maps в базе mysql
virtual_maps=hash:/etc/postfix/virtual_maps.cf
virtual_maps.cf содержит запрос который по адресу email выдает alias.
Что-то типа такого:
user = postfix
password = postfix
dbname = mail
table = alias
select_field = goto
where_field = address
hosts = 127.0.0.1
На goto идет почта, которая предназначается для address. Т.е. на один физический maildir
(или другой конечный пункт) собирается почта от разных алиасов.
Проблема в том что при такой конфигурации не сделать так чтобы почта для user@domain.com
шла и на alias1@domain.com и на alias2@domain2.com
После анализа того, как механизм Postfix читает возврат от mysql получаем:
Нужно чтобы почта для локального юзера user@domain.com приходила на
user@domain.com + на mail@domain2.com
и + ещё куда нить :) При этом везде должна лежать копия.
Обычно таблица alias содержит вот что:
address goto
email1 email2
email3 email2
...
email5 email_other
Надо сделать так.
address goto
email other_email1,other_email2,...
Т.е. через запятую без пробелом указываем все те адреса куда надо послать копию письма.
hash:/mysql примет строку и КОРРЕКТНО подставит её куда надо, а сам Postfix нормально
всё выставит в очередь сообщений и отправит. Там же указываем адрес локальной доставки.
И всё :) Никаких скиптов, procmail и прочей бурды.
Теперь представьте гибкость и легкость с такими вещами как redirect, forwarding, copy + mysql.
|