配置 SPF、MX 和 Postfix 以从 SMTP 中继发送电子邮件

Configure SPF, MX and Postfix for sending email from SMTP relay

在搜索了一段时间并阅读了很多示例、案例 and/or 在 Google 和 Whosebug 上的回答之后,我没有找到解决问题的方法。我对 SPF 和中继的概念越来越困惑,所以我在这里问我的问题希望得到正确的答案并永远理解一次!

总结:

我的目标是新网站 (XXXX[AT]exampleB.com) 的所有电子邮件都必须使用主服务器发送和接收。

知道主服务器必须发送exampleB.com的邮件,我修改了exampleB.com的SPF条目以允许主服务器发送exampleB.com的邮件。

邮件发送正常,我收到邮件也正常,但是当我在 Gmail 中查看电子邮件的原始来源时:

Return-Path: <root@FQDN_NEW_SERVER>
Received: from mail.exampleA.com (FQDN_MAIN_SERVER [IP_MAIN_SERVER])
        by mx.google.com with ESMTPS id f64si6392532wma.52.2016.05.20.04.59.06
        for <xxxxxxx@gmail.com>
        (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
        Fri, 20 May 2016 04:59:06 -0700 (PDT)
Received-SPF: neutral (google.com: IP_MAIN_SERVER is neither permitted nor denied by best guess record for domain of root@FQDN NEW SERVER) client-ip=IP MAIN SERVER;
Authentication-Results: mx.google.com;
       spf=neutral (google.com: IP MAIN SERVER is neither permitted nor denied by best guess record for domain of root@FQDN NEW SERVER) smtp.mailfrom=root@IP MAIN SERVER
Received: from FQDN NEW SERVER (REVERSEDNS_NEW_SERVER [IP_NEW_SERVER])
    by mail.exampleA.com (Postfix) with ESMTPA id 67C8C60421;
    Fri, 20 May 2016 13:59:06 +0200 (CEST)
Received: by FQDN_NEW_SERVER (Postfix, from userid 0)
    id A1949A07AB; Fri, 20 May 2016 13:58:57 +0200 (CEST)

我越来越困惑我必须修改哪个 SPF,哪个 MX 指向谁..

编辑:当我的主服务器尝试连接到端口 25 上的新服务器时,我的连接似乎超时了,但是使用 telnet 似乎没问题..

Edit2:我知道我的 DNS 和我的反向 DNS 不一样。我的服务器是 public 云中的一个实例,我无法更改我的反向,因为它是在虚拟中配置的路由器。

Edit3:我在主服务器后缀日志中有这个错误:

May 20 16:25:40 ns33rgdrg4 postfix/smtpd[2956]: NOQUEUE: reject_warning: RCPT from csikxdqzdqzdqzdqzdqzress.com[IP_NEW_SERV]: 450 4.1.7 <root@FQDN_NEW_SERVER>: Sender address rejected: unverified address: connect to FQDN_NEW_SERV[IP_NEW_SERV]:25: Connection timed out; from=<root@FQDN_NEW_SERV> to=<myownmail@owndomain.com> proto=ESMTP helo=<FQDN_NEW_SERV>

这是服务器的当前配置:

主服务器

Dovecot + Postfix configured  
Domain : exampleA.com  
DNS :

 - exampleA.com.        MX    mail.exampleA.com
 - mail.exampleA.com    A     IP_MAIN_SERVER
 - exampleA.com.        SPF   "v=spf1 a mx ptr include:spf4.newsletterpartner.net ~all"

新服务器

已安装 Postfix,通常为什么 relayhost = mail。exampleA.com

Domain : exampleB.com  
DNS :

 - exampleB.com.        MX    mail.exampleA.com
 - exampleB.com.        SPF   "v=spf1 mx:mail.exampleA.com mx:exampleA.com include:mail.exampleA.com include:exampleA.com ~all"

我的新域的 MX 指向我的主服务器的 MX(我不知道这样做是否好)

这是新服务器的一部分 /etc/postfix/main.cf :

myhostname = FQDN_NEW_SERVER
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +

relayhost = mail.exampleA.com
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options =

我们可以看到新服务器有他的postfix relayhost 指向我主服务器的MX。

不知道我的新服务器的MX是必须指向自己(知道自己的postfix配置了relayhost),还是必须直接配置到主服务器,由主服务器发送电子邮件。

注意:我有这个错误:No SPF records found for mail.exampleA.com 当我检查一个网站寻找 MX 和 SPF 时,但是 exampleA.com 有一个 MX,而不是邮件。exampleA.com

这几天让我发疯了...在此先感谢您的小帮助:)

此致,
朱利安 Q.

我想你打错了,请你确认一下..

 Domain : exampleB.com  
 DNS :

 - exampleB.com.        MX    mail.exampleA.com
 - exampleA.com.        SPF   "v=spf1 mx:mail.exampleA.com mx:exampleA.com include:mail.exampleA.com include:exampleA.com ~all"

我认为在底部ExampleA.com。应该读作 ExampleB.com.

你的 SPF 记录应该是

"v=spf1 mx ~all"

由于您的 MX 记录是 mail.exampleA.com,您只需在 SPF 中指定即可。

我认为您的超时问题可能与 DoveCot 有关,DoveCot 的连接时间很长,超过 18 秒。我不是 linux 人,所以我真的不能告诉你在哪里寻找超时设置。

您可以通过向 mailtest@unlockthienbox.com 发送电子邮件来测试,而不是使用 gmail 进行测试,所有基本身份验证结果都会显示(SPF、DKIM 等)

好的,我想终于解决了,谢谢你@henry!

在文件 /etc/postfix/main.cf 中,myorigin 是 /etc/mailname,这是我的 FQDN。
正如他所说,由于 Google 正在检查 "record for domain of root@FQDN_NEW_SERVER",我认为他必须检查 root@DOMAIN,而不是 FQDN。 Google 也说 "IP_MAIN_SERVER is neither permitted nor denied by guest" 所以我没有将 MX 主服务器放在我的新服务器 SPF 中,而是将主服务器 IP 放在 IPV4 中。

我将 myorigin 从 FQDN_NEW_SERVER 更改为 DOMAIN_NEW_SERVER,并在我的新服务器 SPF 中指定了我的中继主机 IPV4。在检查了您的方法和 gmail 后,现在一切似乎都正常了!

这是我的基础设施的最终配置。

主服务器,中继 SMTP

Dovecot + Postfix configured  
Domain : exampleA.com  
DNS :

 - exampleA.com.        MX    mail.exampleA.com
 - mail.exampleA.com    A     IP_MAIN_SERVER
 - exampleA.com.        SPF   "v=spf1 a mx ptr include:spf4.newsletterpartner.net ~all"

新服务器,转发邮件到主服务器

Domain : exampleB.com  
DNS :

- exampleB.com.        MX    mail.exampleA.com
- exampleB.com.        SPF   "v=spf1 ip4:IP_MAIN_SERVER -all"

新服务器/etc/postfix/main.cf

myhostname = FQDN_NEW_SERVER
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
#myorigin = /etc/mailname <-- OLD CONF with FQDN_NEW_SERVER in
myorigin = exampleB.com
mydestination =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +

relayhost = mail.exampleA.com
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options =

Gmail 原始来源

Received: from MX_MAIN_SERVER (FQDN_MAIN_SERVER [IP_MAIN_SERVER])
    by mx.google.com with ESMTPS id s5si18916426wme.105.2016.05.16.02.06.09
    for <FROM_EMAIL_ADDRESS>
    (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
    Mon, 16 May 2016 02:06:09 -0700 (PDT)
Received-SPF: pass (google.com: domain of RECEIVER_EMAIL_ADDRESS designates IP_MAIN_SERVER as permitted sender) client-ip=IP_MAIN_SERVER;
Authentication-Results: mx.google.com;
   spf=pass (google.com: domain of RECEIVER_EMAIL_ADDRESS designates IP_MAIN_SERVER as permitted sender) smtp.mailfrom=FROM_EMAIL_ADDRESS

希望它能对我以外的人有所帮助。
再次感谢大家!

朱利安 Q