Перейти к основному содержанию

Postfix и DNS

Mail

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

И работать с DNS Postfix может по-разному, в зависимости от настроек. К примеру, у вас корпоративная система, в которой Postfix работает на отправку писем. И вы закручиваете гайки безопасности, закрыв всем своим серверам доступ в Интернет по UDP 53, кроме ваших локальных DNS серверов. В результате отправка писем у вас сломается, несмотря на то, что на сервере с Postfix у вас прописаны верные локальные DNS серверы и доступ к ним никто не запрещает.

Зачем Postfix обращается к DNS?

Главная цель — найти MX запись получателя. Когда вы отправляете письмо на адрес вроде user@example.com, Postfix должен выяснить, какой сервер в интернете отвечает за прием почты для домена example.com. Postfix выполняет DNS-запрос к глобальной системе DNS, чтобы получить MX записи (Mail Exchange) домена получателя. Запрос возвращает список серверов-получателей, отсортированный по приоритету (например, mail.example.com с приоритетом 10).

MX-запрос возвращает только имя хоста почтового сервера (например, mail.example.com), но не его IP-адрес. Чтобы установить соединение по протоколу SMTP, Postfix должен узнать IP-адрес. Postfix выполняет второй DNS-запрос, чтобы найти A-запись (для IPv4) или AAAA запись (для IPv6) для имени хоста, полученного из MX записи. Запрос возвращает IP адрес, по которому можно отправить письмо.

Если у домена получателя нет MX записи (редкий случай для публичных доменов, но частый для небольших почтовых сервисов), Postfix не сдается. По стандартам SMTP, Postfix пытается найти A запись для самого домена example.com. Письмо отправляется непосредственно на IP адрес, указанный в A-записи домена.

И так для каждого письма.

А если у вас на сервере прикручен антиспам с антивирусом, то добавляются дополнительные DNS запросы. Если почтовый сервер отвечает ещё и за приём сообщений, то ещё дополнительные DNS запросы. Но мы пока про сам Postfix.

К какому DNS обращается Postfix?

А вот тут прикол. По умолчанию Postfix сам лезет в Интернет на DNS серверы получателей, игнорируя нативный механизм операционной системы.

http://www.postfix.org/postconf.5.html#smtp_host_lookup

postconf | grep host_lookup
lmtp_host_lookup = dns
smtp_host_lookup = dns

postfix

  • dns — хост ищется в DNS (записи /etc/hosts тоже игнорируются)
  • native — используется нативный механизм (nsswitch.conf или эквивалент)
  • dns, native — хост ищется в DNS, если не найден, то используется нативный механизм

По умолчанию Postfix использует только DNS-резолвер самого Postfix. При этом полностью игнорируется файл /etc/hosts. Чтобы изменить поведение Postfix и использовать нативный механизм, меняем настройки на native, и перезагружаем postfix:

postconf lmtp_host_lookup=native
postconf smtp_host_lookup=native
service postfix restart

postfix

И почта заработает.

Такая настройка полезна в специфичных сценариях:

  • изолированные сети: ваш сервер не имеет выхода в глобальный интернет и должен отправлять почту через внутренний релей
  • тестовые окружения: вы используете несуществующие в реальном DNS домены (например, .local или .test)

Важно

Специалисты Postfix не рекомендуют использовать smtp_host_lookup = native для обычных серверов, работающих в интернете. Это может привести к проблемам:

  • Поиск через native может некорректно обрабатывать полностью определенные доменные имена (FQDN), добавляя к ним поисковые суффиксы из /etc/resolv.conf.
  • Режим native несовместим с технологиями верификации каналов связи, такими как DANE/DNSSEC .

Полезные ссылки

Postfix и кэширование nscd

Теги

 

Похожие материалы

Postfix — ограничить поток исходящих писем

Почтовый сервер postfix ориентирован на максимальную производительность. Если у него есть письмо, то он постарается его как можно быстрее отправить. Но иногда требуется ограничить поток исходящих писем. При этом желательно, чтобы postfix продолжал принимать письма без ограничений, но отправлял их постепенно. Бывает, что провайдер ограничивает ваш сервер и разрешает отправлять, например, не более 300 писем в минуту. 

Теги