приветствую
для переменной confMAIL_BACKUP реализовано еще одно значение
REMOTE_SMTP, при использовании которого будет производиться
маршрутизация копий локальных писем на удаленный SMTP сервер без
перезаписи адреса получателя.
define(`confMAIL_BACKUP', `REMOTE_SMTP')
понадобилось такое для клиента, который захотел, чтобы на backup MX была
доступна по IMAP почта, полученная им в случае недоступности primary MX,
да еще чтобы доступ можно было получить по тем же логинам и паролям, что
и на primary MX. при восстановлении доступности primary MX копии (вернее
оригиналы) писем должны быть доставлены на primary MX.
т. е. на backup MX одни и те же домены должны быть одновременно и
локальными и рилеемыми.
физически в списке рилеемых доменов локальные домены указывать не нужно.
также такую схему работы можно считать неким специфическим вариантом
бекапа всей входящей почты на удаленном SMTP сервере.
одновременно с REMOTE_SMTP можно использовать и другие значения для
confMAIL_BACKUP (например, SYSTEM_FILTER), указывая их через пробел:
define(`confMAIL_BACKUP', `SYSTEM_FILTER REMOTE_SMTP')
при использовании REMOTE_SMTP в качестве значения confMAIL_BACKUP можно
уточнить список доменов, входящая почта которых должна копировать на
удаленный SMTP сервер. список указывается в переменной
confMAIL_BACKUP_REMOTE_SMTP_DOMAIN_LIST.
значение по умолчанию:
define(`confMAIL_BACKUP_REMOTE_SMTP_DOMAIN_LIST', `+local_domains')
можно копировать почту всех доменов, кроме, например, $qualify_domain:
define(`confMAIL_BACKUP_REMOTE_SMTP_DOMAIN_LIST', `!$qualify_domain :
+local_domains')
адрес удаленного SMTP сервера указывается в переменной
confMAIL_BACKUP_REMOTE_SMTP_HOST:
define(`confMAIL_BACKUP_REMOTE_SMTP_HOST', `backup.relay.domain.tld')
т. к. роутер, средствами которого реализован данный функционал,
срабатывает раньше роутера локальной доставки, то в нем нужно отдельно
проверить существование получателей в локальных доменах. для этого
применяются те же условия, что и в роутерах локальной доставки в
зависимости от confVIRT_MDIR_USERLIST.
вот реальный пример роутера для define(`confVIRT_MDIR_USERLIST', `MYSQL'):
local_delivery_copy_smtp:
driver = manualroute
transport = remote_smtp
domains = !$qualify_domain : +local_domains
condition = ${lookup mysql{ \
SELECT login as id, maildir as home, maildir as maildir \
FROM users WHERE login="${quote_mysql:$local_part@$domain}" \
}{yes}{no}}
route_data = backup.relay.domain.tld
no_verify
unseen
набор полей в SQL запросе избыточен для данной задачи, но, как я уже
писал, запрос используется тот же, что и для проверки существования
адреса получателя в роутере локальной доставки. что должно привести к
кешированию результата выполнения запроса и использованию
прокешированного результата при локальной доставке.
p. s. данный фукнционал реализован только для случаев, когда в
confDELIVERY_TO указано значение MDIR_VIRTUAL. для доставки почты в
мейлбоксы или мейлдиры системных пользователей данный функционал не
реализован.
--
Best wishes Victor Ustugov mailto:victor на corvax.kiev.ua
public GnuPG/PGP key: http://victor.corvax.kiev.ua/corvax.asc
ICQ UIN: 371808614 JID: corvax_at_nb на jabber.corvax.kiev.ua
nic-handle: CRV-UANIC