arch-wiki-md-repo
Version:
All arch-wiki articles in markdown format, updated every two days.
117 lines (77 loc) • 4.56 kB
Markdown
[OpenDMARC](http://www.trusteddomain.org/opendmarc/) is an open source implementation of the [Domain-based Message Authentication, Reporting and Conformance](https://en.wikipedia.org/wiki/DMARC "wikipedia:DMARC") (DMARC) specification.
DMARC is a policy for mail transfer, which is already supported by some common mail providers. It depends on [Sender Policy Framework](/index.php/Sender_Policy_Framework "Sender Policy Framework") and [DKIM](/index.php/OpenDKIM "OpenDKIM"). DMARC provides a policy for outgoing mail and checks incoming mails for compliance with that policy. The policy is published via a DNS TXT record. It is explained in [#DMARC Record](#DMARC_Record). Validation is done in a daemon. For more info see [RFC 7489](https://datatracker.ietf.org/doc/rfc7489/).
## Contents
* [1 Installation](#Installation)
* [2 Configuration](#Configuration)
* [3 Postfix integration](#Postfix_integration)
* [4 DMARC Record](#DMARC_Record)
* [4.1 DMARC options in detail](#DMARC_options_in_detail)
* [5 Weblinks](#Weblinks)
## Installation
[Install](/index.php/Install "Install") the [opendmarc](https://www.archlinux.org/packages/?name=opendmarc) package.
## Configuration
Main configuration file is `/etc/opendmarc/opendmarc.conf`
Change the following options:
`/etc/opendmarc/opendmarc.conf`
```
Socket unix:/run/opendmarc/opendmarc.sock
```
Add the socket directory and set its credentials to be accessible to the STMP server user (likely `postfix` or `mail`:
```
# mkdir /run/opendmarc
# chown opendmarc:postfix /run/opendmarc
```
To have this socket directory created automatically, create the following file `/etc/tmpfiles.d/opendmarc.conf`:
```
D /run/opendmarc 0750 opendmarc postfix
```
To run the `opendmarc.service` as the SMTP server user (default is `opendmarc:mail`) create `/etc/systemd/system/opendmarc.service.d/override.conf`:
```
[Service]
Group=
Group=postfix
```
**Note:** If you want to run your DMARC-Validator on a different machine, you should change the Socket field to `inet:9999@10.0.0.4` with a sample host listening at port 9999 for an optional client 10.0.0.4 (can be omitted, listens on 0.0.0.0 then).
* [Enable](/index.php/Enable "Enable") and [start](/index.php/Start "Start") the `opendmarc.service`. Read [Daemons](/index.php/Daemons "Daemons") for more information.
## Postfix integration
Add the following lines to `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
```
Make sure that the DMARC milter is declared after the DKIM milter.
## DMARC Record
To enable DMARC for your website, you have to add a new TXT record to your websites DNS server. An example subdomain record like this:
```
_dmarc.example.com TXT v=DMARC1; p=quarantine; pct=20; adkim=s; aspf=r; fo=1; rua=[mailto:postmaster@example.com](mailto:postmaster@example.com); ruf=[mailto:forensic@example.com](mailto:forensic@example.com);
```
### DMARC options in detail
| Tag name | Purpose | Sample |
| v | Protocol version | v=DMARC1 |
| pct | Percentage of messages subjected to filtering | pct=20 |
| ruf | Reporting URI for forensic reports | ruf=[mailto:forensic@example.com](mailto:forensic@example.com) |
| rua | Reporting URI of aggregate reports | rua=[mailto:postmaster@example.com](mailto:postmaster@example.com) |
| p | Policy for organizational domain | p=quarantine |
| sp | Policy for subdomains of the | sp=reject |
| adkim | Alignment mode for DKIM | adkim=s |
| aspf | Alignment mode for SPF | aspf=r |
| fo | Forensic report options | fo=1 |
| rf | Reporting format. either afrf or iodef | rf=afrf |
| ri | Reporting interval of aggregate reports. Often disregarded | ri=86400 |
The alignment modes for DKIM and SPF can be:
* "s" for strict
* "r" for relaxed
where the latter allows a subdomain in the "From" header while the former does not.
The domain policy (p) and subdomain policy (sp) might be one of:
* "none" (for monitor mode)
* "quarantine"
* "reject"
The forensic report options are:
* "0" to generate reports if all underlying authentication mechanisms fail to produce a DMARC pass result
* "1" to generate reports if any mechanisms fail
* "d" to generate report if the DKIM signature failed to verify
* "s" if SPF failed.
## Weblinks
* [DMARC Inspector](https://dmarcian.com/dmarc-inspector/)
* [IETF RFC 7489](https://datatracker.ietf.org/doc/rfc7489/)