我们的一位客户收到了来自其一位客户的邮件,但邮件被拒收。发件人的 SPF 记录为:
v=spf1 +a +mx +ip4:12.34.56.78 ?all
该邮件并非来自 12.34.56.78,但据我所知,“?all”表示我的邮件服务器 (postfix) 应该接受它。对吗?
我可以更改我的“/etc/postfix-policyd-spf-python/policyd-spf.conf”以使其接受这些电子邮件吗?如果可以,该怎么做?
我该这么做吗?
FWIW py 错误日志中的消息是:
Message rejected due to: access neither permitted nor denied.
提前致谢。
更新:
我的 SPF 策略是:
HELO_reject = SPF_Not_Pass
Mail_From_reject = Fail
该邮件在 HELO 阶段被拒绝,现在我已将其更改为“失败”。
答案1
该邮件并非来自 12.34.56.78,但据我所知,“?all”表示我的邮件服务器 (postfix) 应该接受它。对吗?
是的,但不是应该, 只是故意的
从这里,你可以看到这Neutral
意味着The SPF record specifies explicitly that nothing can be said about validity
但是 postfix 的默认 SPF 策略是:
HELO_reject = SPF_Not_Pass
意味着如果 SPF 检查不通过(即失败、软失败、硬失败……),postfix 将拒绝 HELO
您可以更改 Postfix SPF 策略以接受电子邮件,即使 SPF 检查失败。
答案2
你说的没错。包含 ?all 策略只是表明发件人希望如何处理邮件。实际如何处理邮件则由您的系统决定。
您尚未发布您的政策,但您可以通过修改您的政策将其设置为允许此域或此条件。
看: http://manpages.ubuntu.com/manpages/lucid/man5/policyd-spf.conf.5.html
请注意,如果无法确定 SPF(例如 SPF 记录本身的格式错误或 DNS 问题),某些策略条件将拒绝电子邮件。