Dns 多个DKIM(包括MX)的SPF记录

Dns 多个DKIM(包括MX)的SPF记录,dns,smtp,spf,dkim,Dns,Smtp,Spf,Dkim,我对邮件服务器管理知之甚少。我正在拼凑用户指南。我买了一个域名和[付费]Protonmail,允许使用自定义域。我已经让它工作了一段时间,但现在我无法将它扩展到另一个DKIM记录 目标: 使用Protonmail从自定义域发送和接收电子邮件 仅从我正在运行的Postfix服务器发送电子邮件 为了通过我的域名使用Protonmail发送/接收电子邮件,我设置了以下TXT记录: Host=@ protonmail-verification=e954fa... 这已经起作用好几个月了。现在我想实

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

目标:

  • 使用Protonmail从自定义域发送和接收电子邮件
  • 仅从我正在运行的Postfix服务器发送电子邮件
  • 为了通过我的域名使用Protonmail发送/接收电子邮件,我设置了以下TXT记录:

    Host=@   protonmail-verification=e954fa...
    
    这已经起作用好几个月了。现在我想实现目标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
    中的内容添加到我的DNS提供商中,将长
    p
    字符串与另一个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甚至关心这个方向性吗?

    好的,让我们开始调试它吧。。。(坦率地说,这不是一个编程问题,因此超级用户可能是更好的选择,但我喜欢你想拥有自己的邮件:))

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

    v=spf1 include:_spf.protonmail.ch mx ~all
    
    您看到的错误本身与公共IP的PTR查找有关,但也可能是由额外的include引起的,在这里是误报

    要确保其正确性,请手动查找:

    在linux上

    dig -x <public ip of mail domain>
    
    在windows上:

    nslookup <public ip of mail domain>
    
    nslookup
    
    印刷品:

    Server:  some.dns.server.com
    Address:  XXX.XXX.XXX.XXX
    
    Name:    my-domain.com
    Address:  <public ip of mail domain>
    
    Server:some.dns.Server.com
    地址:XXX.XXX.XXX.XXX
    名称:my-domain.com
    地址:
    
    这里的关键部分是“my domain.com”。如果这不是您的邮件域,那么您的托管提供商很可能会给您一种在某处更改PTR的方法


    试试这个,然后我们将在必要时进一步研究它,当然,如果不能够查找所有信息,就很难进行调试;)

    事实上,我在结果中没有看到
    答案部分
    ,尽管我更新了SPF记录以匹配您的建议。有什么想法吗?谢谢为了澄清,SPF记录和PTR是两个独立的东西。更改SPF记录不会影响PTR条目,需要自行更改。PTR条目是反向DNS查找(IP到域),它位于“XXX.XXX.XXX.XXX.in addr.arpa.”域中。这不是您自己的DNS服务器(如果是自托管的)或您的域提供商,而是您使用的公共IP的所有者。这将位于您的服务器提供商处,或者当您在internet提供商的家中拥有静态IP和服务器时。我会在稍后更新我的答案,以便更深入地了解,而不是放弃;)FWIW,我在DigitalOcean上托管服务器。我已经从他们的一个数据中心向这个主机分配了一个“浮动IP”(静态IP)。这是我在DNS提供商(Namecheap)中为其设置A记录的IP。但是,从DigitalOcean主机本身(例如,通过SSH),分配的公共IP是不同的。对浮动IP或静态分配的IP使用
    dig-x{public IP}
    ,结果类似。唯一不以分号开头的行类似于:SOA ns1.digitalocean.com中的xxx.yyy.zzzin addr.arpa.1800。hostmaster.xxx.yyy.zzz.in-addr.arpa很乐意把这个带进聊天室,但我真的不知道怎么会这样。。。我同意,这可能不是解决这个问题的最佳论坛。谢谢你的帮助!哦,那是个问题。DigitalOcean的“浮动”IP不具备设置PTR的功能。有一个关于这个的请求已经有很长一段时间了,看起来他们不会很快添加这个消息来源:和
    ;; 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>