【问题标题】:SPF Record for Multiple DKIMs (including MX)多个 DKIM(包括 MX)的 SPF 记录
【发布时间】:2020-05-23 07:07:49
【问题描述】:

我对邮件服务器管理知之甚少。我正在拼凑用户指南。我已经购买了一个域名,并且 [付费] Protonmail 允许使用自定义域。我已经让这个工作了一段时间,但现在我无法将它扩展到另一个 DKIM 记录。

目标:

  1. 使用 Protonmail 从自定义域发送和接收电子邮件
  2. 仅从我正在运行的 Postfix 服务器发送电子邮件

为了通过我的域名使用 Protonmail 发送/接收电子邮件,我设置了以下 TXT 记录:

Host=@   protonmail-verification=e954fa...
Host=protonmail._domainkey    v=DKIM1; k=rsa; p=MGM0....
Host=@   v=spf1 include:_spf.protonmail.ch mx ~all

这已经工作了几个月。现在我想实现目标 2(上)。我使用opendkim 创建了一个 DKIM 密钥:

sudo opendkim-genkey -b 8192 -h rsa-sha256 -r -v --subdomains -s postfix -d $(hostname --domain) && \
sudo sed -i 's/h=rsa-sha256/h=sha256/' postfix.txt 

然后我添加了来自postfix.txt 的内容,将长p 字符串连接到我的DNS 提供商和另一个TXT 记录:

Host=[MY DOMAIN NAME]._domainkey      v=DKIM1; h=sha256; k=rsa; s=email; p=MEEij...

认为我正在努力更新spf 记录。它应该怎么看?我认为应该是这样的:

v=spf1 include:[MY DOMAIN NAME] include:_spf.protonmail.ch mx ~all

但是,在测试从我的 Postfix 服务器发送电子邮件时,一些客户端服务器拒绝该电子邮件,并在我的 Postfix 服务器中显示以下日志:

E543D5E0003: host mail.tutanota.de[81.3.6.165] said: 450 4.7.1 Client host rejected: cannot find your reverse hostname, [MY POSTFIX SERVERS IP] (in reply to RCPT TO command)

我很确定我的spf 记录中有问题。论据是否正确?顺序重要吗?如何使用 Protonmail 记录进行发送和接收,但将我的 Postfix 服务器限制为只发送? (DNS 甚至关心这个方向性吗?)

【问题讨论】:

    标签: dns smtp spf dkim


    【解决方案1】:

    好吧,不管怎样,让我们​​开始调试吧......(坦率地说,这不是一个编程问题,所以超级用户会是更好的选择,但我喜欢你想托管自己的邮件:))

    您的 SPF 记录应如下所示。不需要您自己的域,因为 SPF 记录保存在它的 DNS 记录中。否则,这会(但不会)建立一个循环。

    v=spf1 include:_spf.protonmail.ch mx ~all
    

    您看到的错误本身与您的公共 IP 的 PTR 查找有关,但也可能是由额外的包含引起的,并且这里是误报。

    为了确保它仍然正确,请手动查找:

    在 Linux 上

    dig -x <public ip of mail domain>
    

    这将(应该)打印多行,您感兴趣的那一行:

    ;; ANSWER SECTION:
    XXX.XXX.XXX.XXX.in-addr.arpa. 43200 IN    PTR     my-domain.com.
    

    在窗户上:

    nslookup <public ip of mail domain>
    

    打印:

    Server:  some.dns.server.com
    Address:  XXX.XXX.XXX.XXX
    
    Name:    my-domain.com
    Address:  <public ip of mail domain>
    

    这里的关键是“my-domain.com”。部分 - 如果这不是您的邮件域,那么您的托管服务提供商很可能会为您提供在某处更改 PTR 的方法。

    试试这个,如果有必要我们会进一步研究它,当然如果不查找所有信息就很难调试;)

    【讨论】:

    • 我实际上在我的结果中没有看到ANSWER SECTION,尽管我更新了我的 SPF 记录以符合您的建议。有什么想法吗?谢谢!
    • 澄清一下,SPF 记录和 PTR 是两个不同的东西。更改 SPF 记录不会影响 PTR 条目,需要自行更改。 PTR 条目是反向 DNS 查找(IP 到域),它位于“XXX.XXX.XXX.XXX.in-addr.arpa”。领域。这不是您自己的 DNS 服务器(如果是自托管的)或您的域提供商 - 而是拥有您正在使用的公共 IP 的任何人。这将位于您的服务器提供商处,或者当您拥有静态 IP 并且服务器位于您的 Internet 提供商处时。稍后我会更新我的答案以更深入地了解,不要放弃;)
    • FWIW,我在 DigitalOcean 上托管服务器。我已经从他们的数据中心为这个主机分配了一个“浮动 IP”(静态 IP)。这是我在我的 DNS 提供商 (Namecheap) 中为其设置 A 记录的 IP。但是,从 DigitalOcean 主机本身(例如,通过 SSH)分配的公共 IP 是不同的。对浮动 IP 或静态分配的 IP 使用 dig -x {public IP} 具有相似的结果。唯一不以分号开头的行是:xxx.yyy.zzzin-addr.arpa. 1800 IN SOA ns1.digitalocean.com. hostmaster.xxx.yyy.zzz.in-addr.arpa. ....
    • 很乐意将其用于聊天,但我实际上无法弄清楚如何...我同意,这可能不是解决这个问题的最佳论坛。不过感谢您的帮助!
    • 哦哦,那是个问题。 DigitalOcean 的“浮动”IP 不具备在其上设置 PTR 的能力。很长一段时间以来都有一个要求,似乎他们不会很快添加这个来源:request at Digital Oceanothers having the same problem
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-06
    • 2015-08-23
    • 2018-03-10
    • 1970-01-01
    • 2019-11-06
    • 2018-03-18
    • 2015-05-11
    相关资源
    最近更新 更多