我最近从Courier迁移到Dovecot。我配置Postfix + MySQL + Dovecot的主要指南是这样的:https://library.linode.com/email/postfix/postfix2.9.6-dovecot2.0.19-mysql
一切都很完美,但是当我更改邮件客户端中的邮件地址,为服务器留下正确的登录名和密码,并使用该假邮件(和域)地址发送电子邮件时,Postfix 只是发送它,而不验证该电子邮件地址是否存在于数据库中,也没有验证该电子邮件地址是否是我的。
因此,我的SMTP配置一定有问题。这是我的实际配置:
# Requirements for the sender details
smtpd_reject_unlisted_sender = yes
smtpd_reject_unlisted_recipient = yes
smtpd_sender_restrictions =
warn_if_reject,
permit_mynetworks,
permit_sasl_authenticated,
reject_non_fqdn_sender,
reject_unknown_sender_domain,
reject_unauth_pipelining,
reject_unlisted_sender,
reject_unverified_sender,
permit
# Requirements for the connecting server
smtpd_client_restrictions =
reject_rbl_client zen.spamhaus.org,
reject_rbl_client blackholes.easynet.nl,
reject_rbl_client bl.spamcop.net,
permit
# Requirement for the recipient address
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_pipelining,
reject_non_fqdn_recipient,
reject_unknown_recipient_domain,
reject_unauth_destination,
reject_unlisted_recipient,
reject_unverified_recipient,
check_policy_service inet:127.0.0.1:10023,
permit
smtpd_data_restrictions =
reject_unauth_pipelining
# require proper helo at connections
smtpd_helo_required = yes
# waste spammers time before rejecting them
smtpd_delay_reject = yes
isable_vrfy_command = yes
任何人?
smtpd_sender_restrictions
中列出的reject_unlisted_sender
限制列在 permit_mynetworks
和 permit_sasl_authenticated
之后。Postfix 按顺序遍历限制列表,并在遇到第一个允许/拒绝时终止,因此永远不会到达 reject_unlisted_sender
。由于您的邮件未被reject_unauth_destination
拒绝,因此它必须因为permit_mynetworks
或permit_sasl_authenticated
而被接受。
此外,除非您使用的发件人地址具有实际由 Postfix "拥有"的域部分(即在 mydestination
、virtual_mailbox_domains
、virtual_alias_domains
或 relay_domains
中列出),否则无法验证它,reject_unlisted_sender
不起作用。有关详细信息,请参见 postconf(5) 手册页。
其他观察结果:
warn_if_reject
限制放在permit_mynetworks
之前。因为后者从不拒绝任何东西,所以warn_if_reject
限制没有任何意义。- 由于您显式使用
reject_unlisted_recipient
和reject_unlisted_sender
,因此不需要设置smtpd_reject_unlisted_sender
和smtpd_reject_unlisted_recipient
。 - (几乎)每个列表末尾的最后一个
permit
都是隐式的,可以删除。 - 除非是复制/粘贴错误,否则您拼错了
disable_vrfy_command
. - 我建议您将客户端和发件人限制列表合并到
smtpd_recipient_restrictions
中。启用smtpd_delay_reject
后,无论如何都将在收件人阶段评估所有限制,并且单个列表通常使配置更易于理解。