Назад | Перейти на главную страницу

Два технологически разных почтовых сервера (Postfix / Exchange) для одного домена

У меня есть пара пользователей почтового сервера Debain Postfix. Все хорошо. Теперь нам нужно поместить некоторых пользователей на размещенный сервер Exchange (Office 365).

Можно ли настроить почтовые серверы и DNS MX для одного домена таким образом, чтобы, если почтовый ящик пользователя не находится на server1, поиск перенаправлялся на server2?

Спасибо Питер

Ну .... нет и да.

Проблема в том, что когда выполняется поиск записи MX DNS, DNS-сервер не знает, кто является пользователем (эта информация не отправляется на DNS-сервер), поэтому DNS-сервер не может отправлять MX-записи, специально предназначенные для некоторые пользователи. Было бы странно (техническая фраза - «нарушение многоуровневости»), чтобы DNS так много знала о ваших пользователях. А что, если бы в письме было 2 человека To: строка, один был для одного из исходных пользователей, а другой для пользователей Exchange? Это сбивает с толку.

Давайте назовем пользователей, чья электронная почта доставляется на сервер Postfix, «Группа P», а пользователей, которые хотят, чтобы их электронная почта доставлялась в Exchange, «Группа E».

Решение состоит в том, чтобы сервер Postfix доставлял электронные письма группы P локально и пересылал электронные письма группы E на сервер Exchange. Точно так же серверы Exchange должны знать, чтобы доставлять электронные письма группы E локально, а электронные письма группы P необходимо пересылать.

Главное - убедиться, что эти два сервера имеют одинаковую информацию. В противном случае оба сервера будут доставлять сообщения человека локально или (что еще хуже) ни один из них не подумает, что он отвечает за электронную почту, и будет пинг-понг между серверами.

Решение, если Группа E мала:

Если группа E короткая (т.е. всего несколько исключений), вы можете сделать это:

  • В Postfix настройте псевдонимы для каждого пользователя, чтобы пересылать его электронную почту в свою учетную запись Exchange.
  • В Exchange настройте сервер для пересылки электронной почты неизвестных пользователей на сервер Postfix. (К сожалению, я не знаю настроек для этого, так как я не знаю Exchange).

Решение для крупных сайтов:

Для более крупных конфигураций я рекомендую, чтобы два сервера (назовите их serverE.example.com и serverP.example.com) были настроены для доставки локальной электронной почты для user@serverE.example.com и user@serverP.example.com соответственно, но не доставлять электронную почту локально для user@example.com. Каждый компьютер обращается к базе данных LDAP / ActiceDirectory, которая указывает, что (например) адрес электронной почты tom@example.com доставлен на адрес tom@serverP.example.com, а адрес электронной почты geri@example.com - на адрес geri@serverE.example.com . Таким образом, все будет синхронизировано, и у вас будет только одно место для обновления.

Малоизвестный факт: с постфиксом, если aliases файл содержит:

tom: tom@serverP.example.com
geri: geri@serverE.example.com

И mydestination mail.cf содержит serverP.example.com но нет serverE.example.com, затем напишите на tom будет доставлен на месте и по почте geri будет перенаправлен на serverE. Это не создаст петли!

Я поднимаю эту проблему, потому что, прежде чем я это узнал, я написал большой скрипт Perl, который генерировал aliases файлы для каждого почтового сервера, чтобы (например) tom не появлялся в aliases файл для serverP, просто все остальные. Как только я это узнал, я удалил сценарий. Точно так же aliases файл мог быть на всех машинах. (Конечно, поскольку Exchange не использует aliases файлы, на этих серверах необходимо сделать что-то еще.)

Если myorigin = example.com то исходящее письмо будет иметь "tom@example.com" в From: линия, и никто не поймет, что есть два почтовых сервера. (Я не знаю эквивалента Exchange, но уверен, что он существует.)

Совет по тестированию

При тестировании этой конфигурации не просто проверяйте, попадает ли входящая электронная почта в нужное место. Также убедитесь, что электронная почта, отправленная от каждого клиента, попадает в нужное место. Например, попросите пользователя Exchange отправить сообщение To: tom, geri и убедитесь, что оба доставлены. Попросите пользователя Debian сделать то же самое. Я видел ситуации, когда (например) псевдонимы и / или пересылка не были настроены прямо на обеих машинах, и электронные письма доставлялись локально для пользователя. tom на обоих серверах. tom приходилось читать электронную почту в обоих местах, пока это не было исправлено. Ой!

Один из способов - заставить Postfix получать всю почту, а затем пересылать ее на сервер Exchange на основе правил / псевдонимов и т. Д.

Как сказали другие пользователи, это то, что известно как совместное использование пространства имен SMTP. Вы упомянули пару пользователей в системе Postfix. Я бы отправил всю электронную почту на сервер Exchange, а затем передал бы электронную почту неизвестных пользователей системе Postfix. Посмотрите в свойствах SMTP по умолчанию. Вам нужно будет найти что-нибудь с надписью «Пересылать всю почту с неразрешенными получателями на хост:».

Если у вас только несколько пользователей в postfix, вероятно, будет проще создать почтовые контакты в Exchange и поместить пользователей postfix во внутренний поддомен.

Вы хотите что-то конкретное, например, маршрутизацию почты через Exchange Online Protection?

Лучшая практика заключается в том, что у вас будет только одна служба в вашей записи MX, а вторая служба должна быть авторизована для отправки почты через основную (коннектор на языке Exchange).

Вы можете отправлять SMTP через обе службы если вы настраиваете SPF для обеих служб для отправки от имени вашего почтового домена.