跳转至内容

OpenDMARC

来自 ArchWiki

OpenDMARC基于域的消息认证、报告和一致性 (DMARC) 规范的开源实现。

DMARC 是一种邮件传输策略,一些常见的邮件提供商已支持该策略。它依赖于 发件人策略框架 (SPF) 和 DKIM。DMARC 为出站邮件提供策略,并检查入站邮件是否符合该策略。策略通过 DNS TXT 记录发布。相关解释详见 #DMARC 记录。验证在后台服务进程中完成。更多信息请参阅 RFC:7489

安装

安装 opendmarc 包。

配置

主配置文件为 /etc/opendmarc/opendmarc.conf

修改以下选项

/etc/opendmarc/opendmarc.conf
Socket                  unix:/run/opendmarc/opendmarc.sock

添加套接字目录,并使其可以被运行 SMTP 服务器的用户(可能是 postfixmail)访问

# mkdir /run/opendmarc
# chown opendmarc:postfix /run/opendmarc

为自动创建此套接字目录,请创建文件 /etc/tmpfiles.d/opendmarc.conf,内容如下

D /run/opendmarc 0750 opendmarc postfix

要以 SMTP 服务器用户的身份运行 opendmarc.service(默认是 opendmarc:mail),请创建 /etc/systemd/system/opendmarc.service.d/override.conf

[Service]
Group=
Group=postfix
注意 要在另一台机器上运行 DMARC 验证器,请将 Socket 字段更改为 inet:9999@10.0.0.4,其中 10.0.0.4 是一个在 9999 端口监听的可选客户端(默认是 0.0.0.0)。

Postfix 集成

将以下行添加到 main.cf

/etc/postfix/main.cf
non_smtpd_milters   = unix:/run/opendkim/opendkim.sock, unix:/run/opendmarc/opendmarc.sock
smtpd_milters       = unix:/run/opendkim/opendkim.sock, unix:/run/opendmarc/opendmarc.sock

确保 DMARC milter 在 DKIM milter 之后声明。

DMARC 记录

要为某个域启用 DMARC,请在其 DNS 区域中添加新的 TXT 记录。以下是一个 DMARC 策略的示例,它会逐步处理。

首次测试,无害,因为(子)策略为 "none",但开始接收聚合报告和失败报告(SPF 和 DKIM)

_dmarc.example.com TXT v=DMARC1; rua=mailto:postmaster@example.com; ruf=mailto:forensic@example.com; adkim=s; fo=1

在分析了这些报告一段时间后,启用该策略,例如,用于 10% 的电子邮件流量。

_dmarc.example.com TXT v=DMARC1; p=quarantine; rua=mailto:postmaster@example.com; ruf=mailto:forensic@example.com; adkim=s; fo=1; pct=10

然后逐渐提高百分比,最终将策略设置为 100% 启用,并且只发送失败报告

_dmarc.example.com TXT v=DMARC1; p=quarantine; ruf=mailto:forensic@example.com; adkim=s; fo=1

DMARC 选项详解

除非是 "v",否则所有字段都是可选的,但 "v" 是推荐的。

标签名称 目的 示例
v 协议版本 v=DMARC1
p 组织域策略(默认 "none") p=quarantine
sp 子域策略("p" 字段的默认值) sp=reject
rua 聚合报告的报告 URI rua=mailto:postmaster@example.com
ruf 详细报告的报告 URI ruf=mailto:forensic@example.com
adkim DKIM 的对齐模式(默认 "r") adkim=s
aspf SPF 的对齐模式(默认 "r") aspf=r
ri 聚合报告的报告间隔(默认 "86400" ; 经常被忽略为默认值) ri=86400
fo 详细报告选项(默认 "0") fo=1
rf 报告格式。(默认 "afrf") rf=afrf
pct 受过滤影响的消息百分比(默认 100) pct=20

DKIM 和 SPF 的对齐模式可以是

  • "s" 表示严格:表示“严格”。来自 From: 的域应与 DKIM/SPF 标识符匹配。
  • "r" 表示放松:表示“放松”。来自 From: 的组织域和 DKIM/SPF 应匹配。

后者允许“From”头中存在子域,而前者则不允许。

域策略 (p) 和子域策略 (sp) 可以是

  • "none" (用于监控模式)
  • "quarantine" (隔离)
  • "reject" (拒绝)

详细报告选项是

  • "0" 在所有底层认证机制(SPF 和 DKIM)未能产生 DMARC 通过结果时生成报告
  • "1" 在任何机制(SPF 或 DKIM)失败时生成报告
  • "d" 在 DKIM 签名验证失败时生成报告
  • "s" SPF 失败时。
https://github.com/gene-git/dmarc_report || dmarc_reportAUR

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.