网络寻租

Programmer, Gamer, Hacker

保证电子邮件的送达率

| Comments

现在大多数网站都会发送各种各样的邮件,保证邮件送达率至关重要,这里整理一下我调研的一些结果。

要让邮件正常到达用户的收件箱,需要保证几点:

  • 让收件方验证邮件来源是非伪造的,需要设置PTRSPFDKIM
  • 让收件方认可发送者是可靠的。

如何让收件方验证邮件来源是非伪造的

PTR

ptr是DNS记录的一种类型,有一个用途在于反方向从IP推导到域名,比如:

dig -x 203.208.36.17

把DNS的MX类型记录指向到你邮件服务器的地址一般就可以了。

SPF

SPF(Sender Policy Framework)这是一套电子邮件验证系统,通过在DNS记录中添加一个TXT类型的记录,指定谁有权以域名的名义发送邮件。如果你没有设置这条记录,很容易就被当做非法邮件spam掉。

这里是配置方法,以及一个简单的例子:

v=spf1 a mx ptr include:spf.mtasv.net ~all

这一行主要说明spf.mtasv.net(postmark,一个邮件发送服务商)代发的邮件是被认可的。

如果你域名挂靠在bluehost上面,这里是对应的设置方法

设置完毕,等待生效后,可以通过这种方式验证是否设置成功:

dig txt your-domain.com

返回的信息需要带有你设置的SPF记录。

DKIM

邮件本身是纯文本,协议也没有防止伪造的部分,在发送的过程中很容易被篡改, DKIM(DomainKeys Identified Mail) 对邮件用私钥加密,同时公钥信息放在域名DNS上面,这样收件方就可以验证邮件的真实性。

如果你用ubuntu以及postfix,这里是设置教程,以及一个简略的安装过程整理:

  • 安装opendkim sudo aptitude install opendkim
  • 设置 /etc/opendkim.conf
  • 告诉postfix采用opendkim,设置/etc/postfix/main.cf
  • 启动和重启对应的服务。

原理很简单,运行opendkim进程服务器,然后postfix把它当做一个过滤器来用,设置完成之后,对于所有的邮件,都会加上一个DKIM-Signature,一个具体的例子:

DKIM-Signature: v=1; a=rsa-sha256; d=example.net; s=brisbane;
c=relaxed/simple; q=dns/txt; l=1234; t=1117574938; x=1118006938;
h=from:to:subject:date:keywords:keywords;
bh=MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI=;
b=dzdVyOfAKCdLXdJOc9G2q8LoXSlEniSbav+yuU4zGeeruD00lszZVoG4ZHRNiYzR

一些参数的含义:

  • b:具体的数字签名。
  • bh:body hash。
  • d:签名的域名。
  • s:selector。一个域名可能有多个邮件发送服务器,需要用一个selector来区分。

然后接收方就会去检查brisbane._domainkey.example.net的DNS记录,你可以通过这种方式来查看是否它设置正确:

dig txt brisbane._domainkey.example.net

内容格式是k=rsa\; p=MIGfMA0GCSqGSIb3DQEBA...

检查是否设置成功

发送一封邮件到gmail里面,这样检查信息:

出现mailed-by表示你SPF设置正确了,出现signed-by表示你DKIM设置正确了。

让收件方认可发送者是可靠的

上面是一些技术上面的部分,同时还需要在内容上面以及行为上面让收件方认可你:

  • 收件人需要认可邮件内容。你发送的东西对于用户是有信息含量的,如果用户看到你的邮件就标注spam,再多的设置也没有用。
  • 邮件中带有退订链接。当用户不想收到你的邮件的时候,可以点击退订,防止用户直接把你spam掉。
  • 控制发送频率。各个邮箱提供商会检查来自一个IP的邮件投递速率,如果你发送速度过于频繁,也容易进黑名单。

第三方的服务

设置了上面的这些东西,你的邮件还是有可能被spam,以及你也不清楚到底邮件的到达率有多少,我建议针对商业的网站,还是需要采用一些第三方的邮件发送服务。这里推荐几个:

采用了这些第三方服务之后,你需要对应地更新SPFDKIM。 同时如果可能,尽量选择独立IP的服务,这样不会因为其他人发spam影响到你的邮件送达率。

mailgun和postmark都会想办法保证你的邮件送达, 因此价格也比其他的邮件服务商要贵,但是还是物有所值的。

mailgun带有campaign服务, 你可以设置一个campaign,然后发送带有这个campaign ID的邮件,之后会统计出送达率,开启率,链接点击率等信息给你。

还有就是针对国内垃圾邮件乱飞的状况,很多国内的邮箱服务商会比较严格,造成国外的第三方邮件发送服务不好用的状况,比如:

  • mailgun发到QQ邮箱,新浪邮箱里面会被spam掉。
  • postmark和mailgun都发不了邮件到tom邮箱里面。

需要注意一下。

引用资料以及工具

Comments