====== 作弊条:如何明确告知互联网某个域名不会收发邮件 ======
最近帮一位过世的同事重建了他的网站,很自然地,这样的域名并不需要收发邮件,那么如何告诉互联网上的其他服务器这件事呢?
===== MX记录 =====
[[https://www.rfc-editor.org/rfc/rfc7505|RFC 7505]] 推荐的做法是创建一条 null MX 记录:
@ IN MX 0 .
在发信方看来,这表示该域名明确告知不存在可以收信的服务器(收件服务器是''.'')。Postfix对此的处理是直接将邮件弹回发件人,例如日志中会体现为:
postfix/smtp[83708]: A97D63F0CA: to=, relay=none, delay=2.2, delays=2.1/0.05/0.02/0, dsn=5.1.0, status=bounced (Domain example.net does not accept mail (nullMX))
退信也会明确告知这一点。
===== SPF记录 =====
SPF记录比较简单:
@ IN TXT "v=spf1 -all"
这表示一条SPF1记录,其策略是拒绝所有(来自当前域名)的邮件。
===== DKIM记录 =====
*._domainkey IN TXT "v=DKIM1; p=;"
这表示对于所有 ''_domainkey'' 均返回 ''v=DKIM1; p=;''。其含义是此 DKIM1 key 已经注销。
===== DMARC记录 =====
有了 SPF 和 DKIM 记录我们就可以要求 DMARC 拒绝这些邮件了。
v=DMARC1; p=reject; aspf=s; adkim=s;
这表示拒绝(''p=reject'')所有不符合SPF(''aspf=s'')或DKIM(''adkim=s'')的邮件。
此处未指定 ''rua''。出于研究目的,可以设置一个邮件地址用来分析数据。
===== 作弊条 =====
在 BIND 中添加如下记录(将 ''example.net'' 替换为实际的域名):
$ORIGIN example.net.
@ 3600 IN MX 0 .
@ 3600 IN TXT "v=spf1 -all"
_dmarc 3600 IN TXT "v=DMARC1; p=reject; aspf=s; adkim=s;"
*._domainkey 3600 IN TXT "v=DKIM1; p=;"