Ситуация такова: домен example.com имеет учетные записи электронной почты в двух системах: некоторые учетные записи находятся на удаленном сервере Exchange (Microsoft 365), а некоторые учетные записи электронной почты находятся на выделенном сервере ubuntu. Электронные письма поступают на сервер обмена, и если получатель не существует на этом сервере обмена, они будут ретранслированы на сервер ubuntu через соединитель отправителя. Теперь я хочу настроить сервер ubuntu:
Как мне настроить Postfix для ретрансляции всех писем неизвестным получателям в домене example.com на другой почтовый сервер?
Проблема в том, что, когда пользователь на сервере ubuntu хочет отправить электронное письмо пользователю, который находится на сервере обмена, электронное письмо возвращается локально с "Recipient address rejected: User unknown in virtual mailbox table
"ошибка. Обычные электронные письма получателям, отличным отexample.com, работают нормально.
Я уже смотрел на Настройка разделенного домена Postfix и Разделение писем для одного домена на два но одно не помогло, а другое решение не сработало для меня (см. Вещи, которые пробовали до сих пор).
Вот отрывок из Postfix main.cf:
myhostname = myserver.mydomain.com
mydomain = example.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
relay_domains = mysql:/etc/postfix/mysql_relay_domains_maps.cf
virtual_alias_domains =
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_mailbox_base = /var/local/example/mail
virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
transport_maps = mysql:/etc/postfix/mysql_transport_maps.cf hash:/etc/postfix/transport
(пропускаю несколько неудачных попыток)
Сделал адаптер MySQL для транспортной карты. Я сделал это, потому что на многих форумах вам предлагают статически вставлять внешние адреса электронной почты в транспортную карту. Поскольку они неизвестны, мне нужно будет создать этот список транспорта динамически. Я создал запрос, который сообщал бы Postfix доставлять почту на существующие учетные записи электронной почты на виртуальные (то есть локально), а если не найден, на сервер обмена через SMPT. Таким образом, это либо вернет это, если будет найдено: :virtual
или если электронное письмо не было найдено в таблице почтового ящика: smtp:example-com.mail.protection.outlook.com:25
.
Этот подход работает, НО ТОЛЬКО если учетная запись электронной почты существует локально. Электронные письма на неизвестные учетные записи не передаются, а возвращаются вместе с сообщением Recipient address rejected: User unknown in virtual mailbox table
. Я проверил это, отключив выходные данные: электронные письма на существующие локальные учетные записи, которые ретранслируются (конечно, нежелательно, просто тест).