配置SPF,MX和Postfix,以便从SMTP中继

时间:2016-05-20 12:50:13

标签: email dns postfix-mta spf dovecot

在搜索了一段时间并在Google和Stackoverflow上阅读了大量示例,案例和/或答案后,我找不到解决问题的方法。我越来越对SPF和继电器的概念感到困惑,所以我在这里问我的问题,希望得到一个正确的答案并永远理解!

总结:

  • 我在当前的主服务器上安装了一个邮件服务器(postfix + dovecot + vimbadmin),位于域exampleA.com上。
  • 我有一个新网站的新服务器,新域名exampleB.com。

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

知道mainserver必须发送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不一样。我的服务器是公共云中的一个实例,我无法改变我的反向,因为它是在虚拟路由器中配置的。

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>

以下是服务器的当前配置:

Server Main

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配置了中继主机),或者是否必须直接配置到将发送电子邮件的主服务器。

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

这让我疯狂了好几天......先谢谢你的小帮助家伙:)。

的问候,
朱利安Q。

2 个答案:

答案 0 :(得分:3)

好的,我觉得你终于解决了@henry!

在文件/etc/postfix/main.cf中,myorigin是/ etc / mailname,这是我的FQDN。
正如他所说,谷歌正在检查“root @FQDN_NEW_SERVER域名记录”,但我必须检查root @ DOMAIN,而不是FQDN。谷歌还说“客人既不允许也不拒绝IP_MAIN_SERVER”,所以我没有将MX主服务器放在我的新服务器SPF中,而是将主服务器IP放在IPV4中。

我将myorigin从FQDN_NEW_SERVER更改为DOMAIN_NEW_SERVER,并在我的新服务器SPF中指定了我的relayhost 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。

答案 1 :(得分:0)

我认为你写了一个错字,请你确认..

 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发送电子邮件来测试所有基本身份验证结果(SPF,DKIM等),而不是使用gmail进行测试。