Postfix

Postfix REJECT (not BOUNCE) 未知虛擬別名

  • August 1, 2016

我們使用虛擬別名映射並配置了 spamassassin,為多個託管域執行一個小型 postfix(和 dovecot)郵件伺服器。

最近很明顯,我們正在產生一些反向散射;垃圾郵件進入不存在的電子郵件地址,並被退回給偽造的發件人。就我們的郵件伺服器的聲譽而言,這顯然是一個問題,也意味著我們正在代表垃圾郵件發送者發送垃圾郵件。

然後我想做的是更改後綴行為,以便在 SMTP 事務期間拒絕郵件,而不是生成退回電子郵件表單 MAILER-DAEMON。

我嘗試添加 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

謝謝你。

經過一番研究,你的問題讓我意識到我的郵件伺服器也有同樣的問題,所以首先,thanx。

其次,您應該注意,預設情況下,postfix 會阻止這種流量。在手冊smtpd_reject_unlisted_recipient 中

smtpd_reject_unlisted_recipient (預設:是)

請求 Postfix SMTP 伺服器拒絕未知收件人地址的郵件,即使沒有指定明確的 reject_unlisted_recipient 訪問限制。這可以防止 Postfix 隊列被無法投遞的 MAILER-DAEMON 消息填滿。

那麼,您為什麼要收到250 OK未知目的地的郵件?因為這些行:

我的目的地 = $ myhostname, localhost. $ mydomain, localhost

virtual_alias_maps = hash:/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(僅伺服器名稱和本地主機)並且您沒有任何*_domains地方,因此沒有其他檢查“已知”目的地。

您只需要添加:

virtual_alias_domains = $mydomain

重新載入後綴。(如果我的配置正確並且您的所有郵件都採用“user@domain.com”的形式)


如果這不起作用,你可以試試這個:

smtpd_recipient_restrictions = permit_mynetworks、reject_unauth_destination、reject_unverified_recipient

注意:它將通過命令檢查傳入傳出消息RCPT TO的目標是否確實存在。**請謹慎使用,**因為它會為每個新目的地建立一個額外的連接,並且需要一些時間來響應您的伺服器處理的每封郵件(測試每個目的地可能需要幾秒鐘)。

引用自:https://serverfault.com/questions/792442