Postfix:拒绝reject_unknown_recipient_domain并接收即时电子邮件通知

Postfix:拒绝reject_unknown_recipient_domain并接收即时电子邮件通知

当电子邮件发送到不存在的域或收件人时,我希望发件人立即收到来自 mailer-daemon 的电子邮件,通知收件人不存在。

实际上,我的系统上发生的情况是电子邮件进入延迟队列并在那里停留配置中指定的时间。正如我设置的那样, delay_warning_time = 30m在队列中停留 30 分钟后,发件人会收到通知,但这不是我想要的,因为不存在地址。我想要的是立即拒绝电子邮件并通知发件人。

有人知道我做错了什么吗?非常感谢

目前,不存在的收件人电子邮件位于 Postfix 队列中:

# mailq
-队列 ID- --大小-- ----到达时间---- -发送者/收件人-------
AA6CA48DCC 1496 2月12日星期三 12:56:36  [电子邮件保护]
         (连接到 mx.email-srv.com[199.231.85.98]:25:连接超时)
                                         [电子邮件保护]

6FF9948DFF 1498 2月12日星期三 13:07:04  [电子邮件保护]
         (连接到 mx.email-srv.com[199.231.85.98]:25:连接超时)
                                         [电子邮件保护]

这是我的 Postfix 配置:

2弹回通知收件人 = $延迟通知收件人
别名数据库 = 哈希:/etc/postfix/aliases
alias_maps = hash:/etc/postfix/aliases
broken_sasl_auth_clients = 否
命令目录 = /usr/sbin
配置目录 = /etc/postfix
content_filter = amavis:[127.0.0.1]:10024
daemon_directory = /usr/lib/postfix
数据目录 = /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
delay_notice_recipient = 管理员
延迟警告时间 = 30 分钟
disable_vrfy_command = 是
header_checks = regexp:/etc/postfix/header_checks
html_directory = 否
inet_interfaces = 全部
inet_protocols = 全部
本地收件人地图 =
mail_owner = postfix
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
masquerade_domains = mail.domain.es mail.domain.com hostname.domain.es hostname.domain.com
最大退避时间 = 8000 秒
最大队列寿命 = 5d
milter_default_action = 接受
milter_protocol = 2
minimal_backoff_time = 1000s
我的目的地 =
mydomain = domain.es
myhostname = mail.domain.es
mynetworks_style = 主机
myorigin = domain.es
newaliases_path = /usr/bin/newaliases.postfix
non_smtpd_milters = $smtpd_milters
队列目录 = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES
中继主机 =
relocated_maps = mysql:/etc/postfix/mysql_relocated.cf
样本目录 = /usr/share/doc/postfix-2.6.6/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
smtp_helo_timeout = 60 秒
smtp_tls_CAfile = /etc/ssl/certs/sf_bundle.crt
smtp_tls_note_starttls_offer = 是
smtp_tls_security_level = 可能
smtp_use_tls = 是
smtpd_banner = $myhostname ESMTP $mail_name
smtpd_client_restrictions = rejection_rbl_client sbl.spamhaus.org,reject_rbl_client blackholes.easynet.nl,reject_rbl_client dnsbl.njabl.org
smtpd_data_restrictions = rejection_unauth_pipelining
smtpd_delay_reject = 是
smtpd_hard_error_limit = 12
smtpd_helo_required = 是
smtpd_helo_restrictions = permit_mynetworks,permit_sasl_authenticated,warn_if_reject rejection_non_fqdn_hostname,reject_invalid_hostname,允许
smtpd_milters = inet:localhost:8891
smtpd_recipient_limit = 16
smtpd_recipient_restrictions = rejection_unauth_pipelining,permit_mynetworks,reject_non_fqdn_recipient,reject_unknown_recipient_domain,reject_unauth_destination,reject_unknown_helo_hostname,permit_sasl_authenticated,允许
smtpd_sasl_auth_enable = 是
smtpd_sasl_本地域=
smtpd_sasl_security_options = noanonymous
smtpd_sender_restrictions = permit_sasl_authenticated、permit_mynetworks、warn_if_reject、reject_non_fqdn_sender、reject_unknown_sender_domain、reject_unauth_pipelining、允许
smtpd_soft_error_limit = 3
smtpd_tls_cert_file = /etc/ssl/certs/domain.es.crt
smtpd_tls_key_file = /etc/ssl/private/domain.key
smtpd_tls_loglevel = 1
smtpd_tls_received_header = 是
smtpd_tls_security_level = 可能
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
transport_maps = mysql:/etc/postfix/mysql_transport.cf
传输重试时间 = 30 秒
未知本地收件人拒绝代码 = 450
virtual_alias_maps = mysql:/etc/postfix/mysql_alias.cf
virtual_gid_maps = 静态:5000
虚拟邮箱库 = /var/spool/mail/virtual
虚拟邮箱域 = mysql:/etc/postfix/mysql_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_mailbox.cf
virtual_uid_maps = 静态:5000

答案1

Postfix 如何知道电子邮件是否存在,或者远程服务器是否不可用(您的队列阻塞邮件似乎就是这种情况)。通常,Postfix 会尝试发送邮件,但除非它从远程服务器收到明确的答复,通常是 550 回复(450 范围内的 1 表示暂时不可用),否则 Postfix 无法确定电子邮件是否存在,或者是否存在其他问题,可能导致电子邮件稍后成功发送。

相关内容