Настраиваю Postfix\Dovecot в сожительстве с MS Exchange.
Виртуальные пользователи для них берутся из AD (в терминологии Exchange - «mail-enabled user») - т.е. это пользователи (для авторизации) с указанным почтовым адресом, но без ящика на Exchange. Почтовый домен у них с Exchange общий.
Чтобы postfix понимал куда доставлять письма, транспорт (отдать по virtual_transport Dovecot-у или отдать по transport_maps на Exchange) определяется LDAP-запросом (проверяет наличие полей mail и homeMDB, отдает «smtp[111.222.333.444]:25», где 111.222.333.444 - адрес сервера Exchange).
Если работать только с этими полями - всё вроде работает. Но! На самом деле у пользователя Exchange адресов может быть несколько, и по-хорошему надо проверять содержимое поля proxyAddress, где перечислены все адреса пользователя. Я сделал такой запрос - и при проверке postmap -q оно отрабатывает как часы, но при реальной отправке - что-то закольцовывается, и возникает ошибка «postfix/smtp[xxxx]: fatal: garbage after numerical service in server description: [111.222.333.444]:25, smtp:[111.222.333.444]:25, smtp[111.222.333.444]:25, smtp[111.222.333.444]:25, smtp[111.222.333.444]:25, smtp[111.222.333.444]:25... ».
Собственно, вопрос: можно как-то заставить postfix сначала проверять наличие адреса в таблице virtual_mailbox_maps, а только потом лезть в transport_maps?
ldap, postfix, transport