Вопрос или проблема
надеюсь, кто-нибудь сможет помочь мне с проблемой конфигурации Postfix.
Моя архитектура следующая: различные вспомогательные серверы, которые генерируют электронные письма (системы биллинга и тикетов), настроенные на пересылку почты через сервер Postfix, который в свою очередь настроен на пересылку почты через внешнего провайдера электронной почты. Настройка работает, однако, иногда у нас возникают проблемы, когда клиент позволяет своим доменам электронной почты истечь, и наши системы пытаются доставить почту в домен, который больше не существует. Наш почтовый провайдер (и справедливо) не в восторге от того, что мы время от времени отправляем почту с недействительным доменом, поэтому я пытаюсь настроить наш релей Postfix, чтобы он отклонял такие сообщения. Я добавил следующее в конфигурацию Postfix:
smtpd_relay_restrictions = reject_unknown_recipient_domain,permit_mynetworks permit_sasl_authenticated defer_unauth_destination
mydestination = localhost localhost.localdomain
relay_domains = /etc/postfix/domains
transport_maps = hash:/etc/postfix/transport
relayhost = [shadow.mxrouting.net]:587
smtp_dns_support_level = enabled
smtp_host_lookup = dns
disable_dns_lookups = no
Тем не менее, почта в явно недействительные домены все равно доставляется:
Mar 15 15:32:38 wst5-ext-prd-anycast01 postfix/smtp[2441255]: 4D654175F29: to=<[email protected]>, relay=shadow.mxrouting.net[168.119.148.109]:587, delay=3.2, delays=0.07/0/1.7/1.4, dsn=2.0.0, status=sent (250 OK id=1ttTV7-000000000xt-1p8c)
Интересно, что я, возможно, пропустил, чтобы заставить Postfix проводить некоторые базовые проверки здравого смысла, прежде чем слепо пересылать почту
Если вы включите релей, Postfix не будет пытаться проверять доставку MX.
В конце концов, ЛУЧШИЙ способ – с БОЛЬШИМ отрывом – управлять списком доставок в источнике ПРЕЖДЕ ЧЕМ ОН ДАЖЕ КОСНЕТСЯ postfix. Ваши почтовые серверы получают плохую репутацию, многократно отправляя на несуществующие почтовые ящики, нанося НАМНОГО БОЛЬШИЙ вред вашей доставляемости, чем попытка отправить в несуществующие домены.
Вы можете вручную поддерживать черные списки получателей на сервере postfix (вы можете сделать это с вашими существующими транспортными картами). Вы также можете реализовать свою собственную логику, чтобы решить, отправлять ли письмо. Это может быть в виде milter, но для этой задачи проще использовать делегирование политик доступа – https://www.postfix.org/SMTPD_POLICY_README.html
Ответ или решение
Настройка Postfix для предотвращения отправки писем на несуществующие домены является важным аспектом управления доставкой электронной почты, особенно в условиях, когда ваша система получает нелестную репутацию из-за попыток отправки сообщений в несуществующие домены. В данной ситуации проблема заключается в том, что ваш конфигурационный файл Postfix, судя по представленным данным, не осуществляет достаточной проверки домена-получателя перед тем, как переслать почту внешнему почтовому провайдеру.
Теория
Postfix по умолчанию настроен таким образом, чтобы сделать минимальные проверки конечных доменов, если включено перенаправление (relay). Это означает, что он может не проверять существование или статус MX-записей (Mail Exchange) для домена-получателя в процессе отправки. Однако, неправильная конфигурация может привести к вашим серверам отправки нежелательной корреспонденции, что ухудшит вашу репутацию среди почтовых провайдеров и может привести к черным спискам или другим ограничениям.
Пример
Рассмотрим, как можно решить вашу проблему:
-
Отказ от передачи писем на несуществующие домены. Чтобы включить это, нужно использовать параметр
reject_unknown_recipient_domain
, который уже используется в вашей конфигурации:smtpd_relay_restrictions = reject_unknown_recipient_domain, permit_mynetworks, permit_sasl_authenticated, defer_unauth_destination
Это правило отказывает в передаче к неизвестным доменам. Однако, важным моментом здесь является то, что домен считается "неизвестным", если для него нет DNS-записей. Если домен просто недействителен, но все еще имеет DNS-записи, такая проверка может не сработать.
-
Политики доступа. Одной из мощных функций Postfix является возможность интеграции с политиками доступа. Вы можете использовать делегирование политики доступа (Access Policy Delegation), чтобы настроить более детальную проверку:
smtpd_recipient_restrictions = check_recipient_access hash:/etc/postfix/recipient_checks, reject_unauth_destination
В
/etc/postfix/recipient_checks
вы можете создать правило, отрицающее домены или адреса, которые вы знаете, что недействительны:bad_domain.com REJECT
-
Обработка на уровне исходных серверов. Один из самых эффективных способов избежать проблем с доставкой недействительных почт – это улучшить обработку на начальном этапе, то есть на серверах, которые генерируют электронные письма.
- Внедрение механизма проверки домена на уровне исходного сервера. Если домены истекли или больше не существуют, лучше всего предотвратить их отправку еще до того, как они достигнут Postfix.
- Используйте обновляемые базы данных или API, чтобы проверить существует ли домен.
- Логику проверки можно выстроить на основе cron-заданий, которые будут регулярно фильтровать или удалять недействительные домены из вашей базы.
-
Использование транспортных таблиц. Вы уже используете транспортные таблицы. Их можно расширить для организации черного списка для определенных доменов:
/etc/postfix/transport bad_domain.com discard:
Это даст указание Postfix избавиться от всех писем, предназначенных для "bad_domain.com", не пытаясь доставлять их.
Применение
На практике, чтобы внедрить указанные изменения, вам понадобятся:
- Протестировать все изменения в тестовой среде, чтобы убедиться, что они работают как ожидается.
- Обновить и документировать любые внутренние процессы отправки электронной почты, чтобы гарантировать, что в книга заказов ваши серверы и их конфигурация остаются согласованными.
- Регулярно актуализировать черные списки и механизмы проверки.
- Разработать фреймворк мониторинга для почтовой системы, который сможет предупредить вас о подобных проблемах в будущем.
Такой подход позволит вам существенным образом снизить вероятность отправки писем на несуществующие домены и улучшить репутацию вашей почтовой системы.