Порядок применения smtpd_*_restrictions в Postfix
Общий порядок
Порядок соответствует этапам SMTP-сессии. (высокая)
1. CONNECT └─ smtpd_client_restrictions 2. EHLO / HELO └─ smtpd_helo_restrictions 3. MAIL FROM └─ smtpd_sender_restrictions 4. RCPT TO ├─ smtpd_relay_restrictions └─ smtpd_recipient_restrictions 5. DATA └─ smtpd_data_restrictions 6. END-OF-DATA (после ".") └─ smtpd_end_of_data_restrictions
Описание фильтров
| Параметр | Этап SMTP | Что проверяет |
|---|---|---|
| smtpd_client_restrictions | CONNECT | IP клиента, PTR (reverse DNS), hostname клиента |
| smtpd_helo_restrictions | HELO/EHLO | строку HELO/EHLO |
| smtpd_sender_restrictions | MAIL FROM | envelope sender (адрес отправителя) |
| smtpd_relay_restrictions | RCPT TO | разрешение на relay |
| smtpd_recipient_restrictions | RCPT TO | получателя |
| smtpd_data_restrictions | DATA | поведение SMTP до передачи тела |
| smtpd_end_of_data_restrictions | после DATA | проверки после получения письма |
(высокая)
Пример базовой конфигурации
smtpd_client_restrictions =
permit_mynetworks,
reject_unknown_reverse_client_hostname,
reject_unknown_client_hostname
smtpd_helo_restrictions =
permit_mynetworks,
reject_invalid_helo_hostname,
reject_non_fqdn_helo_hostname,
reject_unknown_helo_hostname
smtpd_sender_restrictions =
permit_mynetworks,
reject_non_fqdn_sender,
reject_unknown_sender_domain
smtpd_relay_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_non_fqdn_recipient,
reject_unknown_recipient_domain,
reject_unauth_destination
smtpd_data_restrictions =
reject_unauth_pipelining
smtpd_end_of_data_restrictions =
Важный момент (relay защита)
Для предотвращения open relay обязательно:
smtpd_relay_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination
(высокая)
Проверка текущих настроек
postconf smtpd_client_restrictions postconf smtpd_helo_restrictions postconf smtpd_sender_restrictions postconf smtpd_relay_restrictions postconf smtpd_recipient_restrictions postconf smtpd_data_restrictions postconf smtpd_end_of_data_restrictions
Примечания
* Проверки выполняются строго последовательно по этапам SMTP. (высокая) * Более ранние фильтры (client/helo) позволяют экономить ресурсы. (высокая) * Начиная с Postfix 2.10 рекомендуется использовать smtpd_relay_restrictions вместо части логики в recipient. (средняя)
Неопределённость
* Не знаю точную версию Postfix. * Не знаю роль сервера (MX / submission). * Не знаю текущую конфигурацию main.cf. ```