Почтовые серверы · 2 min read · Sep 30, 2025

Настройка Postfix в качестве резервного MX

В этом руководстве я покажу, как вы можете настроить почтовый сервер Postfix в качестве резервного почтового обменника для домена, чтобы он принимал письма для этого домена в случае, если основной почтовый обменник недоступен или недостижим, и передавал письма на основной MX, как только тот снова станет доступен.

1 Предварительная заметка

Я хочу настроить резервный MX для домена example.com. В этом примере основной MX для example.com называется mx1.example.com (IP-адрес 1.2.3.4), поэтому я называю резервный MX mx2.example.com (IP-адрес 1.2.3.5).

Я создал MX записи для example.com, которые выглядят следующим образом:

example.com.               86400   IN      MX      10 mx1.example.com.  
example.com.               86400   IN      MX      20 mx2.example.com.

Важно, чтобы основной MX имел более низкое число (10) и, следовательно, более высокий приоритет, чем резервный MX (20).

Я предполагаю, что Postfix на mx2.example.com уже установлен и работает.

2 Настройка Postfix на mx2.example.com

Чтобы сделать mx2.example.com резервным MX для домена example.com, все, что нам нужно сделать, это изменить/добавить три строки в /etc/postfix/main.cf:

nano /etc/postfix/main.cf

Сначала убедитесь, что smtpd_recipient_restrictions содержат permit_mynetworks и reject_unauth_destination, так что что-то вроде этого будет в порядке:

[...]
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
[...]

Затем мы должны добавить example.com в параметр relay_domains; если в /etc/postfix/main.cf еще нет параметра relay_domains, следующее подойдет:

[...]
relay_domains = $mydestination, example.com
[...]

И, наконец, мы добавляем пустой параметр relay_recipient_maps в /etc/postfix/main.cf:

[...]
relay_recipient_maps =
[...]

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

Есть одна важная вещь, которую я должен добавить: вы не должны перечислять example.com в следующих параметрах в /etc/postfix/main.cf:

  • mydestination
  • virtual_alias_domains
  • virtual_mailbox_domains

Вот и все. Все, что нам нужно сделать сейчас, это перезапустить Postfix:

service postfix restart

3 Тестирование

Чтобы протестировать новый резервный MX, мы отключаем MTA (Postfix, Sendmail, Exim и т.д.) на mx1.example.com и отправляем электронное письмо с какого-либо удаленного сервера на учетную запись example.com (например, [email protected]).

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

Jun 6 18:29:16 mail postfix/smtp[17746]: AF814144146: to=<[email protected]>, relay=mx2.example.com[1.2.3.5], delay=1, status=sent (250 2.0.0 Ok: queued as DCA5A1BF40F)

Как вы видите, письмо было отправлено на mx2.example.com вместо mx1.example.com, потому что mx1.example.com недоступен. Теперь давайте взглянем на журнал почты mx2.example.com:

Jun 6 18:29:16 mx2 postfix/qmgr[3049]: DCA5A1BF40F: from=<[email protected]>, size=892, nrcpt=1 (queue active)  
Jun 6 18:29:16 mx2 postfix/smtpd[3051]: disconnect from mail.blabla.tld[1.2.3.6]  
Jun 6 18:29:16 mx2 postfix/smtp[3057]: connect to mx1.test1.de[1.2.3.4]: Connection refused (port 25)  
Jun 6 18:29:16 mx2 postfix/smtp[3057]: DCA5A1BF40F: to=<[email protected]>, relay=none, delay=0.07, delays=0.03/0.02/0.01/0, dsn=4.4.1, status=deferred (connect to mx1.test1.de[1.2.3.4]: Connection refused)

mx2.example.com принял письмо и попытался подключиться к mx1.example.com, чтобы доставить его на основной MX. Поскольку основной MX отключен, mx2.example.com не может доставить письмо и сохраняет его в почтовой очереди до тех пор, пока mx1.example.com снова не станет доступен.

Теперь мы снова запускаем MTA на mx1.example.com. Резервный MX не сразу доставит отложенное письмо, но через несколько минут вы должны увидеть что-то вроде этого в журнале почты mx2.example.com:

Jun 6 18:56:44 mx2 postfix/qmgr[3080]: DCA5A1BF40F: from=<[email protected]>, size=892, nrcpt=1 (queue active)  
Jun 6 18:56:45 mx2 postfix/smtp[3083]: DCA5A1BF40F: to=<[email protected]>, relay=mx1.example.com[1.2.3.4]:25, delay=1648, delays=1648/0.09/0.4/0.12, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 167995B0109)

Письмо было доставлено на основной MX, где вы можете увидеть это в журнале почты:

Jun 6 18:56:45 mx1 postfix/local[4963]: 167995B0109: to=<[email protected]>, orig_to=<[email protected]>, relay=local, delay=0.54, delays=0.08/0.02/0/0.43, dsn=2.0.0, status=sent (delivered to command: /usr/bin/procmail -f-)

Таким образом, ни одно письмо не было потеряно, пока mx1.example.com был отключен, и пользователи могут продолжать получать свои письма с mx1.example.com.

4 Ссылки

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.