当电子邮件发送到不存在的域或收件人时,我希望发件人立即收到来自 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 无法确定电子邮件是否存在,或者是否存在其他问题,可能导致电子邮件稍后成功发送。