У меня есть почтовый сервер Postfix, настроенный для исходящей электронной почты, на сервере с двойным стеком (IPv4 + IPv6).
Адрес IPv4 является частным, поскольку он используется совместно с другими службами в одном и том же соединении (SNAT связан с общедоступным IPv4), а адрес IPv6 является общедоступным и уникальным (глобальная область действия, маршрутизация в Интернете).
В этой ситуации общедоступные адреса IPv4 и IPv6 обычно имеют разные обратные DNS (записи PTR), поэтому я бы хотел, чтобы Postfix использовал HELO в своем SMTP-клиенте для сопоставления с обратным DNS. Это сопоставление рекомендуется, потому что при асимметричной настройке срабатывает активная фильтрация почты.
Моя ситуация:
IPv4 10.0.3.12 - SNATed to 212.XX.XX.22 (PTR - srv1.example.com
, А из srv1.example.com
указывает на 212.XX.XX.22)
IPv6 хоста (здесь не используется), 2001: XX: XX :: 1 (PTR - srv1.example.com
, AAAA из srv1.example.com
указывает на 2001: XX: XX :: 1)
IPv6 контейнера Postfix, 2001: XX: XX :: 12 (PTR - srv1-postfix.example.com
, AAAA из srv1-postfix.example.com
указывает на 2001: XX: XX :: 12)
Используемое имя хоста 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), это имя хоста будет использоваться и правильно выравниваться.