Назад | Перейти на главную страницу

Как безопасно настроить параметры конфигурации Postfix * _restrictions с использованием белых и черных списков?

Учимся и пытаемся понять

На прошлой неделе я изучал, что Postfix может сделать для уменьшения спама. Если я правильно понимаю разные *_restrictions контроль параметров конфигурации когда проверки выполнены, а затем список ограничений, таких как permit_mynetworks и check_client_access контроль какие проверено. Это правильно?

Если я правильно понял, проверки выполняются в следующем порядке:

Это правильно? И если я правильно понимаю, smtpd_delay_reject не влияет на порядок проверок, а влияет только на когда отклонение послал. Правильно?

Мой сервер настроен

В smtpd_relay_restrictions На моем сервере Plesk 11 не установлен параметр конфигурации. Моя версия Postfix - 2.8.4.

Я также заметил, что некоторые проверки перечислены несколько раз под разными параметрами конфигурации. Их нужно перечислять несколько раз?

Вот моя текущая конфигурация:

smtpd_sender_restrictions =
    check_sender_access hash:/var/spool/postfix/plesk/blacklists
    permit_sasl_authenticated
    check_client_access pcre:/var/spool/postfix/plesk/non_auth.re

smtpd_client_restrictions =
    permit_mynetworks

smtpd_recipient_restrictions =
    permit_mynetworks
    check_client_access pcre:/var/spool/postfix/plesk/no_relay.re
    permit_sasl_authenticated
    reject_unauth_destination

Если я правильно понимаю, это будет то же самое:

smtpd_sender_restrictions =

smtpd_client_restrictions =

smtpd_recipient_restrictions =
    permit_mynetworks
    check_sender_access hash:/var/spool/postfix/plesk/blacklists
    permit_sasl_authenticated
    check_client_access pcre:/var/spool/postfix/plesk/non_auth.re
    permit_mynetworks
    check_client_access pcre:/var/spool/postfix/plesk/no_relay.re
    permit_sasl_authenticated
    reject_unauth_destination

Файл черных списков пуст. В файлах no_auth есть следующее:

/^/ PREPEND X-No-Auth: unauthenticated sender

а файл no_relay имеет это:

/^/ PREPEND X-No-Relay: not in my network

Если я правильно понимаю, последние два добавляют заголовки ко всем письмам, которые еще не разрешены.

Проблемы

Вот чего я хочу добиться

Вот о чем я думал

В /etc/postfix/main.cf

#smtpd_client_restrictions =
#smtpd_helo_restrictions =
#smtpd_sender_restrictions =

smtpd_relay_restrictions =
    permit_mynetworks
    check_client_access pcre:/var/spool/postfix/plesk/no_relay.re
    permit_sasl_authenticated
    check_client_access pcre:/var/spool/postfix/plesk/non_auth.re
    reject_unauth_destination

smtpd_recipient_restrictions =
    check_recipient_access pcre:/etc/postfix/custom/recipient_checks.pcre
    check_client_access cidr:/etc/postfix/custom/sinokorea.cidr
    check_sender_access hash:/var/spool/postfix/plesk/blacklists

В /etc/postfix/custom/recipient_checks.pcre

# Always accept mail to postmaster@ and abuse@
/^postmaster@/ OK
/^abuse@/ OK

# Reject all mail sent to mailapp.ourdomain.com
# except for certain specific recipients
# and bounce messages which may use VERP
if /@mailapp\.ourdomain\.com$/
!/^(?:validuser|anothervalid|bounces(?:\+.+)?)@/ REJECT
endif

Я встречал примеры, в которых @ экранирован в регулярных выражениях. Это ведь не особый персонаж?

Будет ли моя предложенная конфигурация соответствовать тому, что я хочу?

(Примечание для себя и других пользователей Plesk, читающих это - задание cron может потребоваться для регулярного восстановления изменений в файле main.cf, поскольку некоторые действия Plesk, похоже, перезаписывают этот файл.)

Хорошо, это длинный вопрос. Я постараюсь ответить на часть поставленного выше вопроса. И, может быть, на их основе составят резюме.

Отказ от ответственности: я не использовал plesk, но использовал postfix. Возраст этого вопроса был больше одного года, поэтому, возможно, plesk обновил свою конфигурацию для postfix. Но я думаю, что этот вопрос был бы полезен для тех, кто разрабатывает и реализует ограничение постфикса

Q1: Эквивалентны ли эти две конфигурации?

smtpd_sender_restrictions =
    check_sender_access hash:/var/spool/postfix/plesk/blacklists
    permit_sasl_authenticated
    check_client_access pcre:/var/spool/postfix/plesk/non_auth.re

smtpd_client_restrictions =
    permit_mynetworks

smtpd_recipient_restrictions =
    permit_mynetworks
    check_client_access pcre:/var/spool/postfix/plesk/no_relay.re
    permit_sasl_authenticated
    reject_unauth_destination

И

smtpd_sender_restrictions =

smtpd_client_restrictions =

smtpd_recipient_restrictions =
    permit_mynetworks
    check_sender_access hash:/var/spool/postfix/plesk/blacklists
    permit_sasl_authenticated
    check_client_access pcre:/var/spool/postfix/plesk/non_auth.re
    permit_mynetworks
    check_client_access pcre:/var/spool/postfix/plesk/no_relay.re
    permit_sasl_authenticated
    reject_unauth_destination

Если письмо пришло из моей сети, оно не будет проверяться /var/spool/postfix/plesk/no_relay.re и /var/spool/postfix/plesk/no_relay.re. Это означает, что электронная почта будет принято и не изменено. Что касается постфиксного действия (REJECT, ACCEPT), это не будет отличаться, но для plesk, возможно, эти два заголовка важный.

Q2: Выполняет ли Postfix повторную проверку, если он указан несколько раз? Или Postfix знает, что уже проверил эту проверку? Если проверки выполняются несколько раз, это кажется пустой тратой. Если они не выполняются несколько раз, действительно ли заголовки no_auh / no_relay добавляются правильно во всех случаях?

Да, повторение двух проверок может показаться расточительным. Но эти повторные проверки будут помещены в разные места / ограничения. И в каждой проверке есть какая-то логика или алгоритм того, как postfix обрабатывает электронную почту. Вы можете позаботиться о повторной проверке, если чек был тяжелым, например check_policy_service или DNSBL. Для легкой проверки вроде allow_mynetwork, вы можете проигнорировать это.

Q3: безопасно ли использовать только smtpd_recipient_restrictions и smtpd_relay_restrictions и игнорировать клиента, helo, отправителя?

Что ж, с двумя smtpd_recipient_restrictions и smtpd_relay_restrictions должно хватить для некоторого расширенного ограничения. Но это для postfix> = 2.10. Для пользователя с postfix <2.10 вы можете размещать проверки в нескольких директивах, чтобы postfix не становиться слишком снисходительным.

Q4: Будет ли моя предложенная конфигурация соответствовать тому, что я хочу?

Да, хорошая работа по упрощению вашего текущего ограничения постфикса. Но помните, что postfix был частью plesk. Инженер plesk может установить это ограничение по некоторым причинам, таким как модульность или простота обслуживания.

Резюме:

  • Не рекомендуется устанавливать все ограничения в smtpd _ * _.
  • По этой причине вы можете использовать smtpd_relay_restriction для postfix> = 2.10 или другую проверку ограничений для postfix <2.10

Что бы вы ни делали, не выходите из дома без:

smtpd_client_restrictions = reject_rbl_client zen.spamhaus.org, reject_rbl_client bl.spamcop.net

Они уловили большинство для меня сами по себе.