reject_unknown_client. Исключения | Postfix

Как настроить ограничение reject_unknown_client я уже писал (см. здесь) но почтовые сервера у которых отсутствует PTR запись в днс зоне не такая редкость. Если нам нужно внести ограничение на действие директивы reject_unknown_client можно создать карту исключений.

Создаем файл с именами, айпи адресами и т.д. Например /usr/local/etc/postfix/client_access

Пишем в него:

@mail.ru   OK
193.33.24.24   OK
mail.ru   OK
info@server.ru   OK

В нашем случае, когда в логе мы видим что отрабатывает правило reject_unknown_client и имя машины у нас unknown[193.33.24.24]:

postfix/smtpd[99471]: NOQUEUE: reject: RCPT from unknown[193.33.24.24]: 450 Client host 
rejected: cannot find your hostname

Важно добавить в карту именно айпишник сервера с которого нам шлют почту:

193.33.24.24 OK

Далее делаем:

#postmap hash:/usr/local/etc/postfix/maps/client_access

Получаем файл client_access.db

Прописываем в набор ограничений в файл main.cf (ставим ссылку на хэш до ограничивающей директивы):

smtpd_recipient_restrictions =
        check_client_access hash:/usr/local/etc/postfix/client_access,
        permit_mynetworks,
        permit_sasl_authenticated,
        reject_unauth_destination,
        reject_unknown_sender_domain,
        reject_unlisted_sender,
        reject_unknown_client,
        reject_rbl_client sbl-xbl.spamhaus.org

Запятые – не обязательно если директивы идут с новой строки. Обращаем внимание последовательность применения наборов у postfix следующая:

1. smtpd_client_restrictions
2. smtpd_helo_restrictions
3. smtpd_sender_restrictions
4. smtpd_recipient_restrictions
5. smtpd_data_restrictions

То есть в принципе мы могли бы добавить наши директивы в первый набор smtpd_client_restrictions.

Не забываем про директиву:

smtpd_delay_reject = yes

Хотя это поведение postfix по умолчанию, но на всякий случай. Директива smtpd_delay_reject позволяет нашему серверу получить заголовки письма, и лишь потом применить к ним правила.

Для удобства просмотра лога в реальном времени не забываем про tail
Делаем.

#tail -f /var/log/maillog | grep @server.ru

И просим прислать с вражеского сервера письмо.