На прошлой неделе я изучал, что 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
Если я правильно понимаю, последние два добавляют заголовки ко всем письмам, которые еще не разрешены.
Повторные проверки
Выполняет ли Postfix повторную проверку, если он указан несколько раз? Или Postfix знает, что уже проверил эту проверку? Если проверки выполняются несколько раз, это кажется пустой тратой. Если они не выполняются несколько раз, действительно ли заголовки no_auh / no_relay добавляются правильно во всех случаях?
Отсутствует smtpd_relay_restrictions
Отрывок из Postfix SMTP relay и контроль доступа
ПРИМЕЧАНИЕ. В версиях Postfix до 2.10 не было smtpd_relay_restrictions. Они объединили политику ретрансляции почты и блокировки спама в разделе smtpd_recipient_restrictions. Это может привести к неожиданным результатам. Например, разрешающая политика блокировки спама может неожиданно привести к разрешительной политике ретрансляции почты.
Другой отрывок:
Некоторые рекомендуют помещать ВСЕ ограничения доступа в список smtpd_recipient_restrictions. К сожалению, это может привести к слишком широкому доступу.
Поэтому я не хочу перечислять все ограничения в smtpd_recipient_restrictions
, но наличие нескольких ограничений и одинаковых проверок с разными ограничениями сбивает с толку. Безопасно ли использовать только smtpd_recipient_restrictions
и smtpd_relay_restrictions
и игнорировать клиента, привет, отправителя?
Черный список
Разве этот черный список не ранний в списке? Если отправитель является частью моей сети и может пройти аутентификацию, должен ли я действительно блокировать на основе электронной почты отправителя? Сейчас таблица пуста, но я не уверен, какой компонент Plesk может добавлять адреса электронной почты в эту таблицу. Это также будет противоречить RFC, который требует 100% доставки на адреса postmaster @ и abuse @.
В /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. Но я думаю, что этот вопрос был бы полезен для тех, кто разрабатывает и реализует ограничение постфикса
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, возможно, эти два заголовка важный.
Да, повторение двух проверок может показаться расточительным. Но эти повторные проверки будут помещены в разные места / ограничения. И в каждой проверке есть какая-то логика или алгоритм того, как postfix обрабатывает электронную почту. Вы можете позаботиться о повторной проверке, если чек был тяжелым, например check_policy_service или DNSBL. Для легкой проверки вроде allow_mynetwork, вы можете проигнорировать это.
Что ж, с двумя smtpd_recipient_restrictions и smtpd_relay_restrictions должно хватить для некоторого расширенного ограничения. Но это для postfix> = 2.10. Для пользователя с postfix <2.10 вы можете размещать проверки в нескольких директивах, чтобы postfix не становиться слишком снисходительным.
Да, хорошая работа по упрощению вашего текущего ограничения постфикса. Но помните, что postfix был частью plesk. Инженер plesk может установить это ограничение по некоторым причинам, таким как модульность или простота обслуживания.
Резюме:
Что бы вы ни делали, не выходите из дома без:
smtpd_client_restrictions = reject_rbl_client zen.spamhaus.org, reject_rbl_client bl.spamcop.net
Они уловили большинство для меня сами по себе.