首先我要说的是,我知道 DMARC 和 SPF 不做同样的事情。
\n但是,两者都可以选择告诉接收服务器如何处理未通过 SPF 的邮件(如果是 DMARC,则为 DKIM)。
现在让\xe2\x80\x99s 有一个理论案例,其中 SPF 设置为v=spf1 include:\xe2\x80\xa6 ~all(重要部分是~all)并且 DMARC 设置为v=DMARC1; p=reject; rua=\xe2\x80\xa6。
在这种情况下,如果我理解正确的话,我们有一个 SPF 记录告诉 \xe2\x80\x9cmark 邮件不会将 SPF 作为垃圾邮件\xe2\x80\x9d 传递,还有一个 DMARC 记录告诉 \xe2\x80\x9c 不要接受以下邮件:不通过 DKIM 或 SPF。\xe2\x80\x9d
\n当收到未通过 SPF 的邮件时,哪个指令优先?如果 DMARC 条目设置为p=none,答案是否相同?
我们每天向客户发送大量电子邮件(每天约 30,000 多封电子邮件)。我们在 Hotmail 用户接收我们的电子邮件时遇到问题。有时电子邮件会进入垃圾文件夹,但通常会进入他们的收件箱,但内容被阻止,因此用户会看到一条消息,指出“这封电子邮件已被阻止,可能很危险”。如果一封电子邮件被发送到 GMAIL,它通常不会被阻止,但它确实显示为来自“未知”而不是公司。
请注意,我已完成以下操作: 1. 未检查 RBL -> http://multirbl.valli.org/ 2. 我们确实发布了 SPF 记录 3. 我们确实有反向 DNS 设置 4. 我们公司甚至签署了Hotmail 的垃圾邮件报告计划
这是一个示例标题,我注意到每次在 Hotmail 中 X-SID-Result 和 X-AUTH-Result 都失败:
X-Message-Delivery: Vj0xLjE7dXM9MDtsPTA7YT0wO0Q9MTtTQ0w9MQ==
X-Message-Status: n:0
X-SID-Result: Fail
X-AUTH-Result: FAIL
X-Message-Info: JGTYoYF78jFqAaC29fBlDlD/ZI36+S6WoFmkQN10UxWFe1xLHhP+rDthGRZM87uHYM926hUBS+s0q46Yx9y6jdurhN6fx0bK
Received: from privatecompany.com ([WanIPAddress]) by col0-mc3-f30.Col0.hotmail.com with Microsoft SMTPSVC(6.0.3790.4675);
Wed, 5 May 2010 08:41:27 -0700
X-AuditID: ac10fe93-000013bc00000534-46-4be191a1618e
Received: from INTERNAL-Email-SERVER([InternalIPAddress]) by privatecompany.com with Microsoft SMTPSVC(6.0.3790.4675);
Wed, 5 May 2010 11:41:21 -0400
From: Private Company, Inc.<EmployeeUsername@privatecompany.com>
To: PrivateClient@hotmail.com
Message-Id: <20100505114246.658849984@privatecompany.com>
Subject: …Run Code Online (Sandbox Code Playgroud) 编辑我想我或多或少了解语法,无论如何,谷歌在下面的链接中提供了所需的语法。
我的问题是把这些东西放在哪里。我应该引用每个字段吗?全线?:)
我已经为我的域设置了 Google 应用程序:我已经通过添加 Google 要求的 CNAME 向 Google 注册了域,而且我显然已经成功设置了 MX Google 邮件服务器。
到目前为止,我还没有专用服务器:我只是在注册商处拥有一个域。
现在我想激活 SPF,我很困惑。在以下简短网页中:
http://www.google.com/support/a/bin/answer.py?answer=178723
据说我必须添加一个包含以下内容的 TXT 记录:
v=spf1 include:_spf.google.com ~all
Run Code Online (Sandbox Code Playgroud)
我应该在哪里输入这个?这是否应该放在区域 (?) 文件中,就像我对 CNAME 和 MX 记录所做的那样?
到目前为止,我有这样的事情:
@ 10800 IN A 217.42.42.42
@ 10800 IN MX 5 ASPMX3.GOOGLEMAIL.COM.
@ 10800 IN MX 5 ASPMX2.GOOGLEMAIL.COM.
@ 10800 IN MX 3 ALT2.ASPMX.L.GOOGLE.COM.
@ 10800 IN MX 3 ALT1.ASPMX.L.GOOGLE.COM.
@ 10800 IN MX 1 ASPMX.L.GOOGLE.COM.
google8a70835987f31e34 10800 IN CNAME google.com.
Run Code Online (Sandbox Code Playgroud)
添加 SPF TXT 记录是否意味着我应该有类似的东西:
@ …Run Code Online (Sandbox Code Playgroud) 最近我们设置了一个新的 SMTP 服务器来向我们的注册用户发送时事通讯和促销邮件。每周将有 5000 名用户收到时事通讯。当我们第一次尝试发送促销邮件时,我们收到了退回的邮件。我们还设置了 SPF 记录和域密钥。但是我们无法理解雅虎阻止电子邮件的原因。您能否建议银行和其他大型网站如何毫无问题地发送电子邮件?
这是雅虎发送的退回邮件的内容。
无法将邮件传递给以下收件人:
失败的收件人:email@domain.com 原因:远程主机说:421 4.7.0 [TS01] 由于用户投诉,来自 xx.xx.xx.xx 的消息暂时延迟 - 4.16.55.1;见http://postmaster.yahoo.com/421-ts01.html
在我们使用新的 SMTP 服务之前,我们曾经将这项工作外包给第三方电子邮件营销人员,并且当时我们没有配置 SPF 或域密钥。但它成功了。他们实际上遵循哪种方式?
我的域已经使用了 Amazon Route 53,我可以很高兴地使用cli53命令行工具来维护它。
我们正在转向使用 Amazon SES,我想根据文档向域添加 SPF 记录......我们之前没有现有记录。这仅适用于发送给客户的自动电子邮件,而不是内部用户帐户。
我一生都无法弄清楚命令行是做什么的,谁能提供一个例子?
$ cli53 rrcreate -x 3600 -r --wait mydomain.com '' 'SPF' 'v=spf1 include:amazonses.com ?all'
回溯(最近一次调用最后一次):
...
boto.route53.exception.DNSServerError: DNSServerError: 400 Bad Request
...
发件人
InvalidChangeBatch
无效的资源记录:致命问题:在 v=spf1 处遇到 InvalidTXTRDATA 包括:amazonses.com ?all
我有一个在子域上运行的带有调查系统的专用服务器。父域托管在另一台服务器上。我通过谷歌应用程序发送电子邮件。
反向 DNS 是正确的。
如果没有 SPF og DKIM,非常聪明的“check-auth@verifier.port25.com”会返回大约为 spamassasin 的分数。0.
但是通过 SPF 记录和这个总结
SPF check: pass
DomainKeys check: neutral
DKIM check: neutral
Sender-ID check: pass
SpamAssassin check: ham
Run Code Online (Sandbox Code Playgroud)
我得到了相当高的 spamassasin 分数。3 - 由于标题非常大:
pts rule name description
---- ---------------------- --------------------------------------------------
3.1 SINGLE_HEADER_2K A single header contains 2K-3K characters
-0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low
trust
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:看来我应该删除 spf 记录?因为大标题被认为比有效的 spf 更糟?
还是我的spf错了?
v=spf1 a mx ptr ip4:xxx.xx.xxx.xx mx include:_spf.google.com ip4:yy.yy.yy.yyy ~all
Run Code Online (Sandbox Code Playgroud)
xxx IP 用于带有 tld 的服务器 yyy IP 是托管子域的服务器。 …
我的 DNS 中有通常的 Google Apps SPF 记录:
v=spf1 include:_spf.google.com ~all
Run Code Online (Sandbox Code Playgroud)
现在,由于我们使用的是 ZenDesk,我还应该添加:
v=spf1 include:support.zendesk.com ~all
Run Code Online (Sandbox Code Playgroud)
它们是否应该像这样合并为一个:
v=spf1 include:_spf.google.com include:support.zendesk.com ~all
Run Code Online (Sandbox Code Playgroud) # host 1.2.3.4
4.3.2.1.in-addr.arpa domain name pointer mail.domain.vn.
# dig +short txt domain.vn
"v=spf1 a mx ptr -all"
# dig +short txt mail.domain.vn
"v=spf1 a -all"
Run Code Online (Sandbox Code Playgroud)
这是一个标记为垃圾邮件的电子邮件标题:
Delivered-To: x@gmail.com
Received: by 10.223.30.6 with SMTP id s6csp119326fac;
Sat, 19 May 2012 22:16:56 -0700 (PDT)
Received: by 10.68.218.72 with SMTP id pe8mr55329860pbc.45.1337491015749;
Sat, 19 May 2012 22:16:55 -0700 (PDT)
Return-Path: <anonymous@domain.vn>
Received: from mail.domain.vn (mail.domain.vn. [1.2.3.4])
by mx.google.com with ESMTP id on9si20572118pbc.80.2012.05.19.22.16.53;
Sat, 19 May 2012 22:16:54 -0700 (PDT)
Received-SPF: pass (google.com: …Run Code Online (Sandbox Code Playgroud) 我似乎无法获得为我们的客户工作的 SPF 记录,Google 邮件一直在查找失败。
我的 SPF 记录是
v=spf1 a ip4:80.74.254.215 include:mx1.helloevery1.co.uk include:_spf.google.com include:smtproutes.com include:smtpout.com
客户端的主要邮件服务器是
smtproutes.com 和 smtpout.com
这些工作正常,SPF 按预期通过。
mx1.helloevery1.co.uk 是我们的邮件服务器。这是一个简单的 ISPConfig Postfix 设置。我们通过 1 个帐户发送所有邮件,假设是“noreply@example.com”。
设置了用户名和密码以发送通过,但我们更改了应用程序中的“发件人”地址。发件人地址是“enquiry@clientdomain.com”。
“enquiry@clientdomain.com”未在 mx1.helloevery1.co.uk 上设置。它仅在客户端服务器上。
当我从站点通过我的 SMTP 服务器发送时,当我发送到我的电子邮件帐户时收到以下错误。
Received-SPF: permerror (google.com: 在查询 enquiry@clientdomain.com 过程中处理永久错误) client-ip=212.71.234.103;
身份验证结果:mx.google.com;spf=permerror(google.com:在查询 enquiry@clientdomain.com 期间处理中的永久错误)smtp.mail=enquiry@clientdomain.com
这看起来像是试图在我的 SMTP 服务器上查找域(未配置的位置)。如果我要在我的 SMTP 服务器上设置域并创建一个帐户,那么当我通过我的 SMTP 服务器发送时,它将尝试在本地发送它。
我一直认为 SPF 只是一个验证工具,用于说明允许发送哪个服务器,但从未真正考虑过它来自的电子邮件。
我被困住了,因为我找不到可以与之相关的 SPF 记录创建资源
我已经从我的托管服务提供商处设置了 RDNS,以便将 IP 地址解析为“maximus.example.com”。之后,我是否还需要像这样将 PTR 记录添加到我的 DNS 区域文件中的 SPF 文本详细信息中?
v=spf1 include:_spf.google.com ip4:111.11.11.111 ptr:maximus.example.com ~all
Run Code Online (Sandbox Code Playgroud)
我的问题:当主机已经为我的 IP 地址设置了 RDNS 时,上面将 PTR 详细信息添加到 SPF 记录是必要的还是不需要的?
我打算将记录添加到我的 SPF 中,然后我在某个地方读到了这个,强烈建议不要这样做。
注意:RFC 7208 强烈反对 ptr 发送器机制,它甚至建议出于性能原因立即删除它,因为它会给 IN-ADDR.ARPA (IPv4) 或 IP6.ARPA 反向映射域带来负载域的容量通常低于 gTLD 和 ccTLD 域。
我不确定我是否误解了它的意思。所以有人可以帮我澄清一下,因为我不确定是否需要将 PTR 添加到我的区域文件中。
spf ×10
email ×4
spam ×3
amazon-ses ×1
dkim ×1
dmarc ×1
domainkeys ×1
email-server ×1
g-suite ×1
google ×1
postfix ×1
ptr-record ×1
reverse-dns ×1
security ×1
smtp ×1
smtp-headers ×1
txt-record ×1