====== 作弊条:如何明确告知互联网某个域名不会收发邮件 ====== 最近帮一位过世的同事重建了他的网站,很自然地,这样的域名并不需要收发邮件,那么如何告诉互联网上的其他服务器这件事呢? ===== 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=;"