bind:domain-based_message_authentication_reporting_and_conformance_dmarc
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
bind:domain-based_message_authentication_reporting_and_conformance_dmarc [2016/11/18 10:20] – peter | bind:domain-based_message_authentication_reporting_and_conformance_dmarc [2019/11/26 21:01] (current) – removed peter | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Bind - Domain-based Message Authentication Reporting and Conformance (DMARC) ====== | ||
- | DMARC is built upon two other authentication protocols: | ||
- | |||
- | - [[Bind: | ||
- | - [[Bind: | ||
- | |||
- | A DMARC policy allows a sender to indicate that their messages are protected by SPF and/or DKIM, and tells a receiver what to do if neither of those authentication methods passes – such as junk or reject the message. | ||
- | |||
- | |||
- | ===== DNS config ===== | ||
- | |||
- | DMARC-policies are published as TXT records, in DNS. | ||
- | |||
- | The basic record looks like this: | ||
- | |||
- | < | ||
- | _dmarc.example.com IN TXT " | ||
- | </ | ||
- | |||
- | |||
- | ===== DMARC tags ===== | ||
- | |||
- | DMARC tags tell the email receiver to | ||
- | |||
- | - Check for DMARC and | ||
- | - What to do with messages that fail DMARC authentication. | ||
- | |||
- | |||
- | ^Tag Name^Required^Purpose^Sample^ | ||
- | |v|required|Protocol version|v=DMARC1| | ||
- | |p|required|Policy for domain|p=quarantine| | ||
- | |pct|optional|% of messages subjected to filtering|pct=20| | ||
- | |rua|optional|Reporting URI of aggregate reports|rua=mailto: | ||
- | |sp|optional|Policy for subdomains of the domain|sp=reject| | ||
- | |aspf|optional|Alignment mode for SPF|aspf=r| | ||
- | |||
- | |||
- | ==== v: Version ==== | ||
- | |||
- | This tag is used to identify the TXT record as a DMARC record, so email receivers can distinguish it from other TXT records. | ||
- | |||
- | Example: | ||
- | |||
- | < | ||
- | v=DMARC1 | ||
- | </ | ||
- | |||
- | |||
- | ==== p: Requested Mail Receiver Policy ==== | ||
- | |||
- | This tag indicates the policy to be enacted by the receiver for messages that fail DMARC authentication and alignment checks, as specified by the domain owner. | ||
- | |||
- | * **p=none**: The domain owner requests no specific action be taken on mail that fails DMARC authentication and alignment. | ||
- | * **p=quarantine**: | ||
- | * **p=reject**: | ||
- | |||
- | Given the information above, the most basic DMARC record example could be: | ||
- | |||
- | < | ||
- | v=DMARC1; p=none | ||
- | </ | ||
- | |||
- | |||
- | ==== rua: Reporting URI of aggregate reports (Optional) ==== | ||
- | |||
- | Indicates where aggregate DMARC reports should be sent to. Senders designate the destination address in the following format: | ||
- | |||
- | < | ||
- | rua=mailto: | ||
- | </ | ||
- | |||
- | |||
- | ==== ruf: Reporting URI of failure reports (Optional) ==== | ||
- | |||
- | Indicates where forensic DMARC reports should be sent to. Senders designate the destination address in the following format: | ||
- | |||
- | < | ||
- | ruf=mailto: | ||
- | </ | ||
- | |||
- | The addresses is a comma separated list of DMARC URIs used in conjunction with the `fo` key. | ||
- | |||
- | |||
- | ==== adkim: DKIM identifier alignment ==== | ||
- | |||
- | Indicates strict or relaxed DKIM identifier alignment. The default is relaxed. | ||
- | |||
- | |||
- | ==== rf: Report Format (Optional) ==== | ||
- | |||
- | Format used for the message-specific failure reports expressed as an optional comma-separated list of values. | ||
- | |||
- | * `afrf`: An " | ||
- | |||
- | * `iodf`: RFC-5070 (“Incident Object Description Exchange Format”), which is a format suitable for reporting computer security incidents. | ||
- | |||
- | Note that receivers can define other formats, albeit this should be a rare occurrence as most operations are embracing ARF as the reporting format of choice. | ||
- | |||
- | |||
- | The default is Authentication Failure Reporting Format, or " | ||
- | |||
- | |||
- | ==== ri: Reporting Interval (Optional) ==== | ||
- | |||
- | The number of seconds elapsed between sending aggregate reports to the sender. | ||
- | |||
- | ==== pct: Percentage of messages to which the DMARC policy is to be applied (Optional) ==== | ||
- | |||
- | Percentage of messages to which the DMARC policy is to be applied. | ||
- | |||
- | This allows the sender to specify what percentage of the mail flow is to be subjected to the DMARC checks. | ||
- | |||
- | The specification does not mandate how to calculate this percentage. | ||
- | |||
- | |||
- | ==== fo: Failure reports options (Optional) ==== | ||
- | |||
- | Dictates what type of authentication and/or alignment vulnerabilities are reported back to the Domain Owner. | ||
- | |||
- | There are four values to the latter **fo:** tag: | ||
- | |||
- | * **0**: Generate a DMARC failure report if all underlying authentication mechanisms fail to produce an aligned " | ||
- | * **1**: Generate a DMARC failure report if any underlying authentication mechanism produced something other than an aligned " | ||
- | * **d**: Generate a DKIM failure report if the message had a signature that failed evaluation, regardless of its alignment. | ||
- | * **s**: Generate an SPF failure report if the message failed SPF evaluation, regardless of its alignment. | ||
- | |||
- | While the default is **" | ||
- | |||
- | |||
- | ===== What about sub-domains? | ||
- | |||
- | The final DMARC tag we will discuss today is the sp: tag, which is used to indicate a requested policy for all subdomains where mail is failing the DMARC authentication and alignment checks. | ||
- | |||
- | For the following scenarios, we will use the top-level domain of " | ||
- | |||
- | - The Domain Owner wants to enforce a reject policy for " | ||
- | |||
- | - Domain Owner wants to enforce a reject policy for " | ||
- | |||
- | |||
- | ===== Create a DMARC record in monitor mode ===== | ||
- | |||
- | < | ||
- | v=DMARC1; p=none; fo=1; rua=mailto: | ||
- | </ | ||
- | |||
- | With DMARC in monitor mode, you can gather the information on your entire email ecosystem, including who is sending email on behalf of your brand, what emails are getting delivered, and what emails are not. | ||
- | |||
- | Request to receive the daily aggregate and forensic reports by specifying your email address in the rua tag and the ruf tag, respectively. | ||
- | |||
- | |||
- | ===== Deploy Slowly ===== | ||
- | |||
- | It is strongly recommended to ramp up DMARC use slowly by employing these policies in this order. | ||
- | |||
- | Similarly, the optional pct tag can be used to stage and sample your DMARC deployment. | ||
- | |||
- | A conservative deployment cycle would resemble: | ||
- | |||
- | < | ||
- | Monitor all. | ||
- | Quarantine 1%. | ||
- | Quarantine 5%. | ||
- | Quarantine 10%. | ||
- | Quarantine 25%. | ||
- | Quarantine 50%. | ||
- | Quarantine all. | ||
- | Reject 1%. | ||
- | Reject 5%. | ||
- | Reject 10%. | ||
- | Reject 25%. | ||
- | Reject 50%. | ||
- | Reject all. | ||
- | </ | ||
- | |||
- | Attempt to remove the percentages as quickly as possible to complete the deployment. | ||
- | |||
- | As always, review your daily reports. | ||
- | |||
- | |||
- | ===== Examples ===== | ||
- | |||
- | < | ||
- | v=DMARC1; p=reject; fo=1; rua=mailto: | ||
- | </ | ||
- | |||
- | |||
- | Choose how you want recipient servers to handle email from your domain that fails SPF/DKIM validation. Options are outlined below in red: | ||
- | |||
- | < | ||
- | None: " | ||
- | Reject: " | ||
- | Quarantine: " | ||
- | </ | ||
- | |||
- | Alternately, | ||
- | |||
- | < | ||
- | None: " | ||
- | Reject: " | ||
- | Quarantine: " | ||
- | </ | ||
- | |||
- | |||
- | ===== References ===== | ||
- | |||
- | https:// |
bind/domain-based_message_authentication_reporting_and_conformance_dmarc.1479464420.txt.gz · Last modified: 2020/07/15 09:30 (external edit)