Мы запускаем небольшой почтовый сервер 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
Спасибо.
После некоторого исследования ваш вопрос заставил меня понять, что у меня была такая же проблема на моем почтовом сервере, поэтому сначала all, thanx.
Во-вторых, вы должны заметить, что по умолчанию postfix блокирует такой трафик. В руководстве smtpd_reject_unlisted_recipient :
smtpd_reject_unlisted_recipient (по умолчанию: да)
Запрос, чтобы SMTP-сервер Postfix отклонял почту для неизвестных адресов получателей, даже если нет явного ограничения доступа reject_unlisted_reject_unlisted указан . Это предотвращает заполнение очереди Postfix недоставленными сообщениями MAILER-DAEMON.
Итак, почему вы получаете 250 OK
для писем с неизвестным адресатом? Из-за этих строк:
mydestination = $ myhostname, localhost. $ Mydomain, localhost
virtual_alias_maps = hash: / etc / postfix / virtual
smtpd_reject_unlisted_recipient
проверяет целевую почту, но очень конкретно:
Адрес всегда считается "известным", если он соответствует виртуальному (5) псевдониму или canonical (5) сопоставление.
Домен получателя соответствует $ mydestination, $ inet_interfaces или $ proxy_interfaces, но получатель не указан в $ local_recipient_maps, а $ local_recipient_maps не равно нулю. Домен получателя соответствует $ virtual_alias_domains, но получатель не указан в $ virtual_alias_maps. Домен получателя соответствует $ virtual_mailbox_domains, но получатель не указан в $ virtual_mailbox_maps, а значение $ virtual_mailbox_maps не равно нулю. Домен получателя совпадает с $ relay_domains, но получатель не указан в $ relay_recipient_maps, а $ relay_recipient_maps не равен нулю.
Поскольку ваш mydestination
не включает ваш $ mydomain
(только имя сервера и localhost), и у вас нет установленных доменов * _
, есть никаких других проверок для "известных" мест назначения.
Вам нужно только добавить:
virtual_alias_domains = $ mydomain
постфикс перезагрузки. (Если я правильно понимаю вашу конфигурацию и вся ваша почта находится в форме (скрытой), которая не работает, вы можете попробовать следующее:
smtpd_recipient_restrictions = permission_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. Сообщите мне, работает ли это для вас.