我有一台服务器,它会尝试直接将邮件发送到目标 MX 服务器。但是其中一些服务器会拒绝这些邮件,因为 MTA 的声誉不佳(他们就是这么说的)。
我尽一切努力来提高声誉,并且别无选择。
只有几个服务器拒绝了我们的邮件。所以我想使用 Postmark 来发送此类邮件。
但是我需要配置 Postfix 以仅使用 sasl 身份验证fallback_relay
而不是直接向 MX 服务器发送邮件。
某些 MX 服务器由于此 sasl 身份验证而出现错误(如 hotmail)。Google 服务器可以毫无问题地接受。
#my configuration
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = static:key:key
smtp_sasl_security_options = noanonymous
fallback_relay = [smtp.postmarkapp.com]:25
答案1
这是使用“静态”地图时的预期行为。按照手册http://www.postfix.org/postconf.5.html#smtp_sasl_password_maps您至少需要为 配置一个哈希图smtp_sasl_password_maps
。
哈希映射文件应该包含一行
smtp.postmarkapp.com user:password
这仅对指定主机使用 sasl。
答案2
我遇到了同样的问题。为了扩展 mailq 的答案,并提供更多细节,下面是我解决问题的具体方法。
# old main.cf
smtp_sasl_password_maps = static:username:password
# new main.cf
smtp_sasl_password_maps = hash:/etc/postfix/smtp_sasl_password_maps
要生成 smtp_sasl_password_maps.db 文件,您需要创建一个包含以下内容的文本文件:
smtp.sendgrid.net = username:password
请注意这里没有“static”前缀。从这里,你只需运行(以 root 身份):
postmap /etc/postfix/smtp_sasl_password_maps
service postfix restart
这里的关键是,如果 SASL 密码映射中没有主机名匹配,则继续无需认证。
如果未找到用户名:密码条目,则 Postfix SMTP 客户端将不会尝试向远程主机进行身份验证。