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. Пожалуйста, дайте мне знать, если это работает для вас.