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

Postfix smtp client HELO на двойном стеке ipv4 / ipv6

У меня есть почтовый сервер Postfix, настроенный для исходящей электронной почты, на сервере с двойным стеком (IPv4 + IPv6).

Адрес IPv4 является частным, поскольку он используется совместно с другими службами в одном и том же соединении (SNAT связан с общедоступным IPv4), а адрес IPv6 является общедоступным и уникальным (глобальная область действия, маршрутизация в Интернете).

В этой ситуации общедоступные адреса IPv4 и IPv6 обычно имеют разные обратные DNS (записи PTR), поэтому я бы хотел, чтобы Postfix использовал HELO в своем SMTP-клиенте для сопоставления с обратным DNS. Это сопоставление рекомендуется, потому что при асимметричной настройке срабатывает активная фильтрация почты.

Моя ситуация:

Используемое имя хоста HELO должно зависеть от семейства адресов, которое SMTP-клиент использует для установки соединения. Если он отправляется через IPv4, HELO должен быть srv1.example.com, и если клиент отправляет через IPv6, HELO должен быть srv1-postfix.example.com чтобы соответствовать лучшим практикам SMTP.

Как это можно сделать? Я бы хотел избежать любой формы NAT в IPv6.


Я видел это: постфиксный баннер SMTP с несколькими IP. Здесь это не очень полезно, поскольку объясняет, как установить баннер для домена на розетки для прослушивания (smtpd), а не Клиент SMTP (smtp).

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

В настоящее время имя хоста, с которым ваш почтовый сервер будет отображаться на IPv4, отличается от того, которое он использует на IPv6.

Самое простое решение - просто выровнять имена серверов, чтобы почтовый сервер был известен под одним и тем же именем хоста как в IPv4, так и в IPv6.

Другими словами: дайте хосту новое имя и измените имя хоста, которое использует ваш Postfix, с srv1-postfix на srv1 и соответствующим образом обновите записи IPv6.

Тогда вы получите обычную ситуацию, когда ваш хост Postfix имеет одно имя хоста srv1.example.com, один адрес IPv4 (192.0.2.1) и один IPv6 2001:db8:0:0:0:0:0:1 адрес и все прямые и обратные сопоставления разрешаются к одному и тому же srv1.example.com

Необходимые записи DNS для получения и отправки почты будут

example.com.        IN MX 1 srv1.example.com.
srv1.example.com.   IN A    192.0.2.1
srv1.example.com.   IN AAAA 2001:db8:0:0:0:0:0:1

и соответствующие обратные записи

1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa. IN PTR srv1.example.com. 
1.2.0.192.in-addr.arpa. IN PTR srv1.example.com. 

Тогда в своем постфиксе вы можете просто использовать myhostname = srv1.example.com и везде, где требуется имя хоста (например, в баннере EHLO), это имя хоста будет использоваться и правильно выравниваться.