You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Postfix中如何针对特定邮箱地址禁用SMTP中继认证?

Postfix中如何针对特定邮箱地址禁用SMTP中继认证?

我太懂你遇到的这个糟心问题了——明明给me@example.com设置了DUNNO让它直接投递,结果Postfix还是硬要拿着@example.com对应的user1/pass1去碰那些“奇葩”邮件服务商的服务器,属实头疼。

其实问题出在Postfix的匹配优先级上:smtp_sasl_password_maps里的@example.com条目是域级匹配,会覆盖所有该域下的发件人,哪怕你在sender_dependent_relayhost_maps里给单个邮箱设了DUNNO也没用。要解决这个,咱们得给单个邮箱单独指定认证规则:

具体解决步骤:

  1. 开启发件人依赖认证
    先在Postfix的main.cf配置文件里确保开启这个选项,它允许我们针对不同发件人设置不同的认证策略:

    smtp_sender_dependent_authentication = yes
    
  2. 给目标邮箱添加空认证条目
    在你的smtp_sasl_password_maps映射文件里,给me@example.com单独加一个空的认证条目(注意后面留空或者用<>):

    me@example.com 
    # 也可以写成 me@example.com <>
    @example.com user1/pass1
    @example.net user2/pass2
    

    因为Postfix的映射匹配是精确地址优先于域匹配,所以当发件人是me@example.com时,会优先命中这个空条目。按照文档说明,没有有效username:password的情况下,SMTP客户端就不会尝试认证目标服务器了。

  3. 重启Postfix让配置生效
    最后重启Postfix服务:

    systemctl restart postfix
    

这样再用me@example.com发邮件时,Postfix就不会再拿user1/pass1去尝试认证了,完美解决你的问题~

备注:内容来源于stack exchange,提问作者Banyoghurt

火山引擎 最新活动