Содержание

Порядок применения 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. ```