Postfix REJECT (не BOUNCE) неизвестные виртуальные псевдонимы

Мы запускаем небольшой почтовый сервер postfix (и dovecot) для ряда размещенных доменов, используя виртуальные карты псевдонимов и с настроенным spamassassin.

Недавно стало очевидно, что мы генерируем некоторое обратное рассеяние; спам-письма приходят на несуществующие адреса электронной почты и возвращаются поддельному отправителю. Это, очевидно, проблема с точки зрения репутации нашего почтового сервера, а также означает, что мы рассылаем спам от имени спамеров.

Затем я хочу изменить поведение постфикса, чтобы вместо создания отказовой почтовой формы MAILER-DAEMON почта отклонялась во время транзакции SMTP.

Я попытался добавить local_recipient_maps ( http://www.postfix.org/LOCAL_RECIPIENT_README.html), но это ничего не изменило. Я думаю, это потому, что я использую virtual_alias_maps (и другие решения для виртуальных почтовых ящиков здесь тоже не подходят).

postconf -n генерирует:

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5
html_directory = no
inet_interfaces = all
inet_protocols = all
local_recipient_maps = proxy:unix:passwd.byname $alias_maps
mail_owner = postfix
mail_spool_directory = /var/spool/mail
mailbox_size_limit = 0
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
message_size_limit = 0
mydestination = $myhostname, localhost.$mydomain, localhost
mydomain = verrotech.com
myhostname = mail.verrotech.com
newaliases_path = /usr/bin/newaliases.postfix
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.10.1/README_FILES
sample_directory = /usr/share/doc/postfix-2.10.1/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = private/auth
smtpd_sasl_type = dovecot
smtpd_tls_auth_only = yes
smtpd_tls_cert_file = /etc/letsencrypt/live/mail.domain.com/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mail.domain.com/privkey.pem
smtpd_tls_security_level = may
unknown_local_recipient_reject_code = 550
virtual_alias_maps = hash:/etc/postfix/virtual

Спасибо.

2 ответа

Решение

После некоторого исследования ваш вопрос заставил меня понять, что у меня была та же проблема на моем почтовом сервере, поэтому, прежде всего, спасибо.

Во-вторых, вы должны заметить, что по умолчанию postfix блокирует этот тип трафика. В руководстве smtpd_reject_unlisted_recipient:

smtpd_reject_unlisted_recipient (по умолчанию: да)

Запросите, чтобы SMTP-сервер Postfix отклонял почту для неизвестных адресов получателей, даже если явное ограничение доступа reject_unlisted_recipient не указано. Это предотвращает заполнение очереди Postfix недоставленными сообщениями MAILER-DAEMON.

Итак, почему вы получаете 250 OK для неизвестных адресатов? Из-за этих строк:

mydestination = $ myhostname, localhost. $ mydomain, localhost
virtual_alias_maps = хэш:/etc/postfix/virtual

smtpd_reject_unlisted_recipient проверяет почту назначения, но очень конкретно:

Адрес всегда считается "известным", когда он соответствует виртуальному (5) псевдониму или каноническому (5) отображению.

   The recipient domain matches $mydestination, $inet_interfaces or $proxy_interfaces, but the recipient is not listed in $local_recipient_maps, and $local_recipient_maps is not null.
   The recipient domain matches $virtual_alias_domains but the recipient is not listed in $virtual_alias_maps.
   The recipient domain matches $virtual_mailbox_domains but the recipient is not listed in $virtual_mailbox_maps, and $virtual_mailbox_maps is not null.
   The recipient domain matches $relay_domains but the recipient is not listed in $relay_recipient_maps, and $relay_recipient_maps is not null. 

Как твой mydestination не включает ваш $mydomain (только имя сервера и localhost) и у вас нет никаких *_domains на месте нет никаких других проверок для "известных" пунктов назначения.

Вам нужно только добавить:

virtual_alias_domains = $ mydomain

постфикс перезагрузки. (Если я правильно понял вашу конфигурацию и все ваши письма находятся в форме "user@domain.com")


Если это не работает, вы можете попробовать это:

smtpd_recipient_restrictions = allow_mynetworks, reject_unauth_destination, reject_unverified_recipient

ПРИМЕЧАНИЕ: он проверит через RCPT TO команда, если адресат целиком существует для входящих и исходящих сообщений. Используйте с осторожностью, так как он создает дополнительное соединение для каждого нового получателя и отнимает время для ответа на каждую почту, которую обрабатывает ваш сервер (проверка каждого получателя может занять несколько секунд).

Этот ответ не совсем то, что вы просили, но именно так я решил эту проблему для своих собственных случаев использования.

Отказ от отказов:

В /etc/postfix/main.cfg у меня есть:

2bounce_notice_recipient = devnull
bounce_notice_recipient = devnull
bounce_queue_lifetime = 0d
delay_warning_time = 0h
alias_maps = hash:/etc/postfix/aliases
alias_database = hash:/etc/postfix/aliases

В /etc/postfix/aliases у меня есть:

devnull:    /dev/null

Тогда я бегу:

postmap aliases
postfix reload

Конечным результатом является то, что отскоки переходят в / dev / null. Может не всех их поймать, так что YMMV. Пожалуйста, дайте мне знать, если это работает для вас.

Другие вопросы по тегам