Techyou labs - haraka
type: channel
link: https://blog.37hi.com/tag/haraka/
items: 自建邮局标记为垃圾邮件的解决方案
items: SPF 记录：原理、语法及配置方法简介

自建邮局标记为垃圾邮件的解决方案
type: item
date: 2018-06-06T10:42:00+08:00
description: ###最基本的2条 * spf * dkim ###加分项： * dmarc * ip反解析 **最重要的一条：不要伪造sender，尽量确保sender和mailfrom一致！想要用户回信正常，请使用Reply-To字段 尽量监听标准端口 ** ###对google,yahoo等流行邮件服务的进阶项，特别是用来批量发送邮件的域名 * https://support.google.com/mail/answer/81126 * https://help.yahoo.com/kb/postmaster/SLN3434.html * https://help.yahoo.com/kb/postmaster/recommended-guidelines-bulk-mail-senders-postmasters-sln3435.html ![haha.png](/usr/uploads/2018/06/3139153526.png) 在线测试工具： * https://www.smtper.net/ * http://www.mail-tester.com/ * http://isnotspam.com/

SPF 记录：原理、语法及配置方法简介
type: item
date: 2010-11-04T21:02:00+08:00
description: SPF，全称为 Sender Policy Framework，即发件人策略框架。 当前 Email 通信，还是在使用 SMTP 这个协议。SMTP 的全称为 Simple Mail Transfer Protocol，即「简单邮件传输协议」。正如它的名字锁暗示的，SMTP 实际上是一个非常简单（甚至简陋）的传输协议，本身并没有很好的安全措施。根据 SMTP 的规则，发件人的邮箱地址是可以由发信方任意声明的。在 SMTP 协议制定的时候也许还好，但在垃圾和诈骗邮件横行的今天，这显然是极不安全的。 SPF 出现的目的，就是为了防止随意伪造发件人。 SPF 记录的原理 ========= SPF 记录实际上是服务器的一个 DNS 记录，原理其实很简单： 假设邮件服务器收到了一封邮件，来自主机的 IP 是173.194.72.103，并且声称发件人为email@example.com。为了确认发件人不是伪造的，邮件服务器会去查询example.com的 SPF 记录。如果该域的 SPF 记录设置允许 IP 为173.194.72.103的主机发送邮件，则服务器就认为这封邮件是合法的；如果不允许，则通常会退信，或将其标记为垃圾/仿冒邮件。 因为不怀好心的人虽然可以「声称」他的邮件来自example.com，但是他却无权操作example.com的 DNS 记录；同时他也无法伪造自己的 IP 地址。因此 SPF 是很有效的，当前基本上所有的邮件服务提供商（例如 Gmail、QQ 邮箱等）都会验证它。 SPF 记录的语法 ========= 一条 SPF 记录定义了一个或者多个 mechanism，而 mechanism 则定义了哪些 IP 是允许的，哪些 IP 是拒绝的。 这些 mechanism 包括以下几类： ``` all | ip4 | ip6 | a | mx | ptr | exists | include ``` 每个 mechanism 可以有四种前缀： ``` "+" Pass（通过） "-" Fail（拒绝） "~" Soft Fail（软拒绝） "?" Neutral（中立） ``` 测试时，将从前往后依次测试每个 mechanism。如果一个 mechanism 包含了要查询的 IP 地址（称为命中），则测试结果由相应 mechanism 的前缀决定。默认的前缀为+。如果测试完所有的 mechanisms 也没有命中，则结果为 Neutral。 除了以上四种情况，还有 None（无结果）、PermError（永久错误）和 TempError（临时错误）三种其他情况。对于这些情况的解释和服务器通常的处理办法如下： ``` 结果 含义 服务器处理办法 Pass 发件 IP 是合法的 接受来信 Fail 发件 IP 是非法的 退信 Soft Fail 发件 IP 非法，但是不采取强硬措施 接受来信，但是做标记 Neutral SPF 记录中没有关于发件 IP 是否合法的信息 接受来信 None 服务器没有设定 SPF 记录 接受来信 PermError 发生了严重错误（例如 SPF 记录语法错误） 没有规定 TempError 发生了临时错误（例如 DNS 查询失败） 接受或拒绝 注意，上面所说的「服务器处理办法」仅仅是 SPF 标准做出的建议，并非所有的邮件服务器都严格遵循这套规定。 ``` Mechanisms ---------- 下面介绍上面提到的 mechanism： all --- 表示所有 IP，肯定会命中。因此通常把它放在 SPF 记录的结尾，表示处理剩下的所有情况。例如： ``` "v=spf1 -all" 拒绝所有（表示这个域名不会发出邮件） "v=spf1 +all" 接受所有（域名所有者认为 SPF 是没有用的，或者根本不在乎它） ``` ip4 --- 格式为ip4:或者ip4:/，指定一个 IPv4 地址或者地址段。如果prefix-length没有给出，则默认为/32。例如： ``` "v=spf1 ip4:192.168.0.1/16 -all" 只允许在 192.168.0.1 ~ 192.168.255.255 范围内的 IP ``` ip6 --- 格式和ip4的很类似，默认的prefix-length是/128。例如： ``` "v=spf1 ip6:1080::8:800:200C:417A/96 -all" 只允许在 1080::8:800:0000:0000 ~ 1080::8:800:FFFF:FFFF 范围内的 IP ``` a 和 mx ------ 这俩的格式是相同的，以a为例，格式为以下四种之一： ``` a a/ a: a:/ ``` 会命中相应域名的 a 记录…