postfix фильтрует входящие письма на основе «mail from» и «rcpt to»

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

Я считаю, что это должно быть просто, потому что адреса «mail from» и «rcpt to» поставляются прямо в начале переговоров smtp. Но я не могу найти способ сделать это с помощью postfix, и не уверен, нужен ли мне дополнительный пакет (milter?).

3 Solutions collect form web for “postfix фильтрует входящие письма на основе «mail from» и «rcpt to»”

Добавьте в класс ограничений . Например:

/etc/postfix/main.cf: smtpd_recipient_restrictions = check_recipient_access hash:/etc/postfix/recipient_access smtpd_restriction_classes = no_russians no_russians = check_sender_access pcre:/etc/postfix/no_russians /etc/postfix/recipient_access: recipient1@mydomain.com no_russians recipient2@mydomain.com no_russians /etc/postfix/no_russians: /\.ru$/ REJECT 

Посмотрите директивы smtpd_recipient_restrictions и smtpd_recipient_restrictions . Используя их, вы можете настроить хеш-карты, содержащие нужные вам фильтры.

 smtpd_sender_restrictions = check_sender_access hash:/etc/postfix/sender_access /etc/postfix/sender_access: .ru REJECT someone@domain.com REJECT и smtpd_sender_restrictions = check_sender_access hash:/etc/postfix/sender_access /etc/postfix/sender_access: .ru REJECT someone@domain.com REJECT 

См. Также http://www.postfix.org/ADDRESS_VERIFICATION_README.html и http://www.postfix.org/SMTPD_ACCESS_README.html.

В основном копирование / вставка из http://code.metager.de/source/xref/postfix-debian/examples/smtpd-policy/greylist.pl#257 и адаптация, как мы идем, вот простой скрипт Perl для реализации no_ru.pl как простой скрипт check_policy_service . См. http://www.postfix.org/SMTPD_POLICY_README.html, как его подключить.

Untested, YMMV и т. Д. Вероятно, вам нужно use и, возможно, инициализировать несколько объектов, таких как syslog сначала попробуйте это из командной строки.

 # Unbuffer standard output. # select((select(STDOUT), $| = 1)[0]); # # Receive a bunch of attributes, evaluate the policy, send the result. # %attr = (); $ru_sender = $ru_rcpt = 0; while (<STDIN>) { if (/^\s*sender=.*\.ru\n/i) { $ru_sender = 1; } elsif (/^\s*recipient=.*\.ru$/i) { $ru_rcpt = 1; } elsif ($_ eq "\n") { if ($verbose) { syslog $syslog_priority, "ru_sender %i, ru_rcpt %i", $ru_sender, $ru_rcpt; } $action = ($ru_sender && $ru_rcpt) ? "reject" : "dunno"; syslog $syslog_priority, "Action: %s", $action if $verbose; print STDOUT "action=$action\n\n"; %attr = (); } else { chop; syslog $syslog_priority, "warning: ignoring garbage: %.100s", $_; } } 
  • настройка почтовой системы
  • Отладка «невозможно подключиться к серверу sendmail»
  • Почему Postfix не отклоняет попытки подключения конкретного клиента?
  • Проверка SMTP через SSL
  • Рекомендации по хорошим решениям MTA / groupware?
  • sendmail не работает
  • Mutt не отправляет электронную почту при указании SMTP-сервера
  • Почему я не могу отправить почту на удаленный почтовый ящик?
  • Hotmail не получает письма от скрипта, но работает с сервера
  • Как настроить SMTP с помощью postfix с пользователем и пройти
  • Что такое точное значение smtp_receive_timeout в exim.conf?
  • Linux и Unix - лучшая ОС в мире.