我想将后缀配置为仅中继来自某些发件人地址的邮件。Postfix 应根据发件人的地址(“MAIL FROM:”)将邮件中继到不同的中继主机(/smarthosts)(Gmail、AOL、...)。
到目前为止,我当前的配置如下:
用户通常在邮件中继的 postfix 上进行身份验证。如果他们无法进行身份验证,则无法进行中继。请注意,此身份验证与中继主机的身份验证不同。
根据发件人的地址(“MAIL FROM:”),选择某个中继主机(
smtp_sender_dependent_authentication
,sender_dependent_relayhost_maps
,smtp_sasl_password_maps
)。这也很好用。但是,如果用户可以进行身份验证,并且有一个未包含在 中的发件人地址
sender_dependent_relayhost_maps
,则 postfix 会尝试直接中继邮件 - 由于 IP 地址限制(黑名单),这通常不起作用。
我现在的问题是:如何拒绝直接转发的邮件(没有智能主机),即发件人的地址未列在sender_dependent_relayhost_maps
哪里?任何提示如何实现这一目标?
之前 你需要一些限制性测试
permit_sasl_authenticated
。这样做的先决条件是将 smtpd on port25
用于传入邮件,另一个 smtpd 用于在 port 上提交587
。否则,此限制将导致传入的邮件被拒绝,因为它不会通过测试。然后,permit_sasl_authenticated
从端口中25
完全删除 ,并将测试添加到您的提交配置中master.cf
。从字面上回答您的问题,
check_sender_access
将是一个合适的测试,将列出的所有域列入白名单sender_dependent_relayhost_maps
并拒绝其余的邮件。这可以添加到
smtpd_sender_restrictions
或smtpd_recipient_restrictions
。什么会做同样的事情,但进一步阻止用户使用彼此的地址正在使用
reject_sender_login_mismatch
. 这需要一个额外的smtpd_sender_login_maps
表,但如果您的virtual_alias_maps
条目已经形成为[email protected] username
,您可以使用相同的文件,并且每当您使用 更新虚拟别名数据库时,允许的发件人地址都会自动更新postmap
。此类提交配置的示例master.cf
: