我有一封邮件被 Gmail 拒绝了,我不知道为什么。它通过了SPF。我们没有使用 DKIM。我需要设置 DKIM 吗?
我控制着“example.com”。我们的邮件服务器是“server.example.com”(托管在 bluehost)
我们的 SPF 记录是
v=spf1 +a +mx ?include:bluehost.com -all
Run Code Online (Sandbox Code Playgroud)
但是 Gmail 拒绝了一封邮件:
由于 550-5.7.1 域的 DMARC 政策,来自 example.com 的 550-5.7.1 未经身份验证的电子邮件不被接受。请联系example.com管理员...
消息标题:
Return-path: <sabrina@example.com>
Received: from [99.127.228.246] (port=61813 helo=[192.168.1.66])
by server.example.com with esmtpsa (TLSv1:AES128-SHA:128)
(Exim 4.80.1)
(envelope-from <sabrina@example.com>)
id 1VMLM8-0007ok-5c; Wed, 18 Sep 2013 17:16:03 +0000
From: Sabrina <sabrina@example.com>
Content-Type: multipart/alternative; boundary="Apple-Mail=_2FE0763D-B160-49C4-8202-B8258851AFAD"
Subject: positive self thoughts/talk
Date: Wed, 18 Sep 2013 10:15:24 -0700
Message-Id: <D85DC2BA-0E8A-4AF6-9C54-203C52E996F2@example.com>
To: Tanja Schulte-Irwin <tanjaschulte@gmail.com>,
Zachary Bloom <zbloom@sffriendsschool.org>
Mime-Version: …Run Code Online (Sandbox Code Playgroud) 我同时使用 mailgun 和 namecheap 邮件服务器(我也有我的域),当我在我的 gmail 帐户中接收邮件时,mailgun 被识别为允许的发件人,但 namecheap 并非如此。这就是我得到的:
Received-SPF: softfail (google.com: domain of transitioning xx@mydomain does not design ... as allowed sender)
我的 DNS 中有以下 TXT 记录
v=spf1 mx include:mailgun.org ~all
Run Code Online (Sandbox Code Playgroud)
这是一个 IPv4,我在 serverfault 中阅读了一些其他帖子,但运气不佳,因此将不胜感激。
编辑
如前所述这里,Namecheap私人邮件设置了MX自动记录,他们没有在DNS记录表上显示,我想这事做的事实,当我有MX记录,没有被认作为允许发件人spf。
我在我的 SMTP 服务器上为我的域和 DKIM 消息签名配置了硬故障 SPF。由于这是唯一应该用于从我的域发出邮件的 SMTP 服务器,因此我没有预见到任何复杂情况。
但是,请考虑以下情况:我通过我的 SMTP 服务器向我同事的大学电子邮件发送了一封电子邮件。问题是我的同事将他的大学电子邮件转发到他的 GMail 帐户。这些是邮件到达他的 GMail 邮箱后的标题:
Received-SPF: fail (google.com: domain of me@example.com 没有指定 192.168.128.100 作为允许的发件人) client-ip=192.168.128.100; 身份验证结果:mx.google.com;spf=hardfail(google.com:me@example.com 的域未将 192.168.128.100 指定为允许的发件人)smtp.mail=me@example.com;dkim=hardfail(测试模式)header.i=@example.com
(标题已被清理以保护非 Google 方的域和 IP 地址)
GMail 根据我的 SPF 和 DKIM 记录检查传送链中的最后一个 SMTP 服务器(理所当然)。由于交付链中的最后一个 STMP 服务器是大学的服务器而不是我的服务器,因此检查会导致 SPF 硬故障和 DKIM 故障。幸运的是,GMail 没有将邮件标记为垃圾邮件,但我担心这可能会在将来引起问题。
我对 SPF hardfail 的实施可能太严格了吗?我应该注意的任何其他建议或潜在问题?或者也许有更理想的大学电子邮件转发程序的配置?我知道转发服务器可能会更改信封发件人,但我看到这变得很混乱。
Web 开发人员请求我们的域 DNS 记录包含 SPF TXT 记录。我在那里发现了不同的意见......
您可以提供的任何评论或见解将不胜感激。我知道这本身不是一个经验问题 - 但我仍然会感谢你的主观产品......特别是如果它们带有参考资料,我可以查看诸如网络帖子或在线文档等。
我已经设置了 Postfix 并创建了一个映射到 Gmail 帐户的别名。当我从我自己的一个(谷歌邮件)帐户发送邮件时,它会通过,但如果来自外部的人给我发邮件,谷歌将不会接受来自我服务器的邮件。日志内容包含以下内容:
Aug 20 13:47:09 Ubuntu-1204-precise-64-minimal postfix/smtpd[8249]: connect from mailout.example.com[1.1.1.1]
Aug 20 13:47:09 Ubuntu-1204-precise-64-minimal postfix/smtpd[8249]: DB399E3318: client=mailout.example.com[1.1.1.1]
Aug 20 13:47:09 Ubuntu-1204-precise-64-minimal postfix/cleanup[8253]: DB399E3318: message-id=<015e01ce9d9a$f988a750$ec99f5f0$@dk>
Aug 20 13:47:09 Ubuntu-1204-precise-64-minimal postfix/qmgr[8230]: DB399E3318: from=<test@example.com>, size=3813, nrcpt=1 (queue active)
Aug 20 13:47:09 Ubuntu-1204-precise-64-minimal postfix/smtpd[8249]: disconnect from mailout.example.com[1.1.1.1]
Aug 20 13:47:10 Ubuntu-1204-precise-64-minimal postfix/smtp[8255]: DB399E3318: to=<example@gmail.com>, orig_to=<example@mydomain.com>, relay=gmail-smtp-in.l.google.com[2a00:1450:4010:c04::1b]:25, delay=1.1, delays=0.22/0/0.14/0.76, dsn=5.7.1, status=bounced (host gmail-smtp-in.l.google.com[2a00:1450:4010:c04::1b] said: 550-5.7.1 [2a01:4f8:d12:11c2::2 16] The sender does not meet basic ipv6 550-5.7.1 sending guidelines of authentication and rdns resolution …Run Code Online (Sandbox Code Playgroud) 我正在设置一个电子邮件服务器,我对 SPF 有点困惑。按照一些示例,我将我的 SPF 记录设置如下...
v=spf1 mx ip4:1.2.3.4 mx:mail.mydomain.com ptr:1.2.3.4 -all
我遵循大部分意思,但为什么 MX 在那里两次?我假设第二个 MX 的意思是“这是该域的邮件服务器”。我是对的吗?
无论哪种方式,第一个 MX 是什么意思?它是否只是表明任何人都应该查看除 SPF TXT 记录之外存储的 MX 记录?如果是这样,MX:mail.mydomain.com 是否与实际的 MX 记录冗余?
编辑:如何混合不同的mechanisms( a, mx, ip4, ptr和include) 以从 4 创建单个 SPF 文件
我知道 2 个简单的 SPF 记录,例如
v=spf1 include:_spf.google.com ~all
v=spf1 include:otherdomain.com ~all
Run Code Online (Sandbox Code Playgroud)
可以合并为一个
v=spf1 include:_spf.google.com include:otherdomain.com ~all
Run Code Online (Sandbox Code Playgroud)
我有位更复杂的SPF记录与像机制a mx ip4 ptr和include 如下图所示
v=spf1 a mx ptr include:icpbounce.com include:spf.mandrillapp.com ~all
v=spf1 mx ip4:x.x.x.x include:mktomail.com ~all
v=spf1 mx ip4:y.y.y.y include:mktomail.com ~all
v=spf1 include:spf.mandrillapp.com ?all
Run Code Online (Sandbox Code Playgroud)
如何将所有这些合并到一个 TXT 记录中,因为mandrilapp这给了我一个错误
有多个看起来像 SPF 记录的 TXT 记录
我无法在生产过程中尝试反复试验,而且我对这个 SPF 域非常陌生
每当我的域向另一个域上的 Google 群组发送消息时,DMARC 对齐都会失败。这适用于所有我批准的发件人,即使在我的域中使用 Gmail。好像是因为Return-Path(Envelope From)头被接收组的退回地址代替了,但是From头仍然是我的域,这是不正确的。
例如,我将邮件从我域中的 Gmail chris@mydomain.com 发送到您域中的群组 your-group@yourdomain.com。如果您查看收到的消息的标题,您会看到:
坏的
Return-Path: <your-group+bncBCA5XFGRYQLCBEHHVS5AKGQED3J2I7I@yourdomain.com>
Authentication-Results: mx.google.com;
dkim=pass header.i=@yourdomain.com;
spf=pass (google.com: domain of your-group+bncBCA5XFGRYQLCBEHHVS5AKGQED3J2I7I@yourdomain.com designates 2607:f8b0:400d:c04::246 as permitted sender)
smtp.mailfrom=your-group+bncBCA5XFGRYQLCBEHHVS5AKGQED3J2I7I@yourdomain.com;
dmarc=fail (p=NONE dis=NONE) header.from=mydomain.com
From: Chris <chris@mydomain.com>
X-Original-Sender: chris@mydomain.com
X-Original-Authentication-Results: mx.google.com; dkim=pass
header.i=@mydomain.com; spf=pass (google.com: domain of chris@mydomain.com
designates 2607:f8b0:400c:c05::233 as permitted sender)
smtp.mailfrom=chris@mydomain.com;
dmarc=pass (p=NONE dis=NONE) header.from=mydomain.com
Run Code Online (Sandbox Code Playgroud)
由于 From 域 (mydomain) 与 DKIM 和 SPF 域 (yourdomain) 之间的对齐不当,DMARC 失败。但是,当您(一个正确配置的 GApps 用户)从 Gmail 向 mydomain 中的群组发送邮件时,标头是不同的。
好的
Return-Path: <my-group+bncBCGJ3NF22YBRBTXIVS1RKGQEIWR5E6Q@mydomain.com>
Authentication-Results: mx.google.com; …Run Code Online (Sandbox Code Playgroud) 我有这个域,我为其设置了 SPF、DKIM 和 DMARC 内容。让我们假设域example.com在其 DNS 区域中具有以下条目:
example.com. 600 IN MX 1 mail.morpheu5.net.
example.com. 600 IN TXT "v=spf1 a mx -all"
_dmarc.example.com. 600 IN TXT "v=DMARC1; p=none; rua=mailto:postmaster@example.com; ruf=mailto:postmaster@example.com; sp=none; ri=86400"
mail._domainkey.example.com. 600 IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDSYXmE/aXew9wcS9dCZFYrPetCRC9rW3vVYRQo980JbC6pXbAkqnUd7ncWkUaQZgF2HKzrspUMklRN35rB1b9iHX3dHnf/gvxSURZPYcKT1DenFt+Vhplv2IuWCNWRSqTuXTXlVOnf+TwWLZayKNq62mCqU09sasP9kHXO5lyIbwIDAQAB"
Run Code Online (Sandbox Code Playgroud)
mail.morpheu5.net是我的后缀的本地主机/域/事物,我example.com作为虚拟域进行管理。我正在将 OpenDKIM 和 OpenDMARC 作为 milters 运行——SpamAssassin 也是如此,但这工作正常。
OpenDKIM 工作正常,所有邮件都得到了正确签名,Gmail 甚至显示了“签名者:example.com”和标准加密 (TLS) 的确认。事实上,如果我在 Gmail 中检查原始邮件,我会得到以下信息:
ARC-Authentication-Results: i=1; mx.google.com;
dkim=pass header.i=@example.com header.s=mail header.b=pixIC2KM;
spf=pass (google.com: domain of xxxxx@example.com designates 79.137.83.28 as permitted sender) smtp.mailfrom=xxxxx@example.com;
dmarc=pass (p=NONE sp=NONE dis=NONE) …Run Code Online (Sandbox Code Playgroud) 为什么管理员大多在 SPF 记录中使用+a并列+mx?这是示例:
@ 10800 IN TXT "v=spf1 +a +mx -all"
Run Code Online (Sandbox Code Playgroud)
仅使用+mx参数是不够的,例如:
@ 10800 IN TXT "v=spf1 +mx -all"
Run Code Online (Sandbox Code Playgroud)
我认为 MX 记录的任务是发送电子邮件而不是 A 记录。谁能解释一下为什么有人会使用这种情况+a?
spf ×10
dkim ×3
dmarc ×3
email ×2
gmail ×2
mx-record ×2
postfix ×2
domain ×1
domainkeys ×1
email-server ×1
google ×1
namecheap ×1
smtp-headers ×1
txt-record ×1