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

Мы запускаем небольшой почтовый сервер 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

Спасибо.

5
задан 28 July 2016 в 12:59
2 ответа

После некоторого исследования ваш вопрос заставил меня понять, что у меня была такая же проблема на моем почтовом сервере, поэтому сначала 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 , действительно ли адресат существует как для входящих , так и для исходящих сообщений. Используйте с осторожностью , поскольку он устанавливает дополнительное соединение для каждого нового пункта назначения и потребуется некоторое время, чтобы ответить на каждое сообщение, которое обрабатывает ваш сервер (проверка каждого пункта назначения может занять несколько секунд).

8
ответ дан 3 December 2019 в 01:09

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

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

В / 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. Сообщите мне, работает ли это для вас.

2
ответ дан 3 December 2019 в 01:09

Теги

Похожие вопросы