我跟着本指南为从域的服务器发送的电子邮件设置 SPF 和 DKIM。该服务器是域的实际电子邮件服务器的位置。
我现在想设置另一台服务器,以便能够通过 PHP 从域发送电子邮件。有人能建议如何做到这一点吗?步骤完全相同吗?
答案1
您正在关注的教程解释了一个基本的 Postfix+Dovecot 设置,如第一部分。我不喜欢设置SPF和DKIM的态度通过垃圾邮件过滤器SPF 的目的是防止其他人将您的域名用作信封发件人DKIM 的目的是验证域已经授权此消息并且签名的内容没有被修改。
本教程的作者采取了一些捷径,虽然他很好地解释了所有步骤并证明了他自己的一些解决方案的合理性,但几乎没有提到可以或应该更改哪些设置以满足您自己的需要。
防晒指数
我们先来看看教程中给出的记录,并揭穿解释中的缺陷。
TXT @ "v=spf1 mx ~all"
解释:
TXT
表示这是一条 TXT 记录。@
在名称字段中输入。v=spf1
表示这是一条 SPF 记录,且 SPF 记录版本是 SPF1。
被@
替换为例如中的变量$ORIGIN example.com.
,意味着该记录将用于域顶点即example.com. IN TXT
。
mx
意味着 MX 记录中列出的所有主机都被允许为您的域发送电子邮件,并且所有其他主机都被禁止。
你可以使用机制mx
如果用于接收邮件的服务器也用于发送邮件。在更大的配置中,情况并不总是如此,有时还有其他出站邮件来源不会用于接收消息,例如新闻通讯系统。由于该机制需要首先对记录进行额外的 DNS 查询,然后对相应的记录进行mx
额外的 DNS 查询,因此通常最好使用MX
A
ip4
&ip6
直接告知允许的 IP 地址(或 CIDR)的机制。
~all
表示来自您域名的电子邮件只能来自 SPF 记录中指定的主机。来自其他主机的电子邮件将被标记为伪造。可能的替代方案是+all
、-all
、?all
,但它们很少使用。
办法~
软失败,因此它不会阻止任何人使用您的域名,但可能用于垃圾邮件评分。 不是-all
“很少使用”,但可能是生成硬失败结果允许完全拒绝该消息。
经过这些修正后,仅允许来自两个服务器的邮件的 SPF 记录将是例如
example.com. IN TXT "v=spf1 +ip4:192.0.2.88 +ip4:198.51.100.61 -all"
密钥管理信息系统
DKIM 有选择器(RFC 6376, 3.1) 允许多个源在不共享密钥的情况下为同一域签名消息。本教程使用default
作为选择器,但可以将其替换为服务器名称以使其唯一。然后,您可以在两个服务器上拥有单独的签名密钥,并相应地发布公钥,例如
mailserver._domainkey.example.com. IN TXT "v=DKIM1; h=sha256; k=rsa; " "p=...
newsletter._domainkey.example.com. IN TXT "v=DKIM1; h=sha256; k=rsa; " "p=...
default
提示:如果您使用浏览器中的搜索工具突出显示本教程中出现的所有单词,则很容易看出您应该修改什么。