Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
email:configure-dkim-spf-dmarc [2025/03/05 20:02] – willy | email:configure-dkim-spf-dmarc [2025/03/13 14:05] (current) – [Configure proper mail delivery] willy | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Configure proper mail delivery ====== | + | ====== |
You need access to your domain DNS records, this is mandatory. | You need access to your domain DNS records, this is mandatory. | ||
Line 37: | Line 37: | ||
===== DKIM (Domain Keys Identified Mail) ===== | ===== DKIM (Domain Keys Identified Mail) ===== | ||
- | Run the following command to configure DKIM the first time: | + | OpenDKIM provides great documentation [[http:// |
+ | |||
+ | You need to choose a // | ||
+ | <code bash> | ||
+ | cd / | ||
+ | opendkim-genkey -s mydomain.com | ||
+ | </ | ||
+ | |||
+ | This will create two files: **mydomain.com.private**, | ||
+ | |||
+ | === DNS record === | ||
+ | |||
+ | As an example consider the following **mydomain.com.txt**: | ||
+ | < | ||
+ | mydomain.com._domainkey | ||
+ | " | ||
+ | </ | ||
+ | |||
+ | You need to create a new TXT record in your DNS zone with // | ||
+ | |||
+ | === Postfix setup === | ||
+ | |||
+ | OpenDKIM acts as a //milter//, which means a mail filter, for Postfix. The postfix configuration described [[email:configure-postfix|here]] already include the required lines under the OpenDKIM setup comment. | ||
+ | |||
+ | === Socket Setup === | ||
+ | |||
+ | For security reasons you want the DKIM keys not to be readable by Postfix, but you want Postfix capable to access | ||
+ | |||
+ | The solution is to add a new group, called **dkimsocket**, | ||
+ | <code bash> | ||
+ | groupadd dkimsocket | ||
+ | usermod --append --groups dkimsocket postfix | ||
+ | usermod --gid dkimsocket opendkim | ||
+ | usermod --append --groups opendkim opendkim | ||
+ | </ | ||
+ | |||
+ | === Final wrapup === | ||
+ | Let's wrap it all up with the following **/ | ||
+ | <file - opendkim.conf> | ||
+ | Syslog | ||
+ | SyslogSuccess | ||
+ | Canonicalization | ||
+ | SendReports | ||
+ | PidFile / | ||
+ | Socket local:/ | ||
+ | UMask 0117 | ||
+ | UserID opendkim: | ||
+ | AutoRestart | ||
+ | AutoRestartRate | ||
+ | Mode sv | ||
+ | # Use the following lines for a single domain/ | ||
+ | Domain | ||
+ | Selector | ||
+ | KeyFile | ||
+ | # Use the following lines for multiple domain/ | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | </ | ||
+ | |||
+ | If you want to use multiple domains and selectors, you need to create the table files and put the multiple references there. Check the official OpenDKIM documentation linked above. | ||
+ | |||
+ | === Start & Autostart OpenDKIM === | ||
+ | |||
+ | <code bash> | ||
+ | rc-update add opendkim default | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | === Test your DKIM setup === | ||
+ | |||
+ | After your DNS record has propagated, you can test it with: | ||
+ | <code bash> | ||
+ | opendkim-testkey -d mydomain.com -s mydomain.com -k mydomain.com.private -vvv | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ===== DMARC (Domain-based Message Authentication, | ||
+ | |||
+ | OpenDMARC sample configutation can be found [[https:// | ||
+ | |||
+ | This is pretty easy to setup, just edit the **/ | ||
+ | <file - opendmarc.conf> | ||
+ | AuthservID mydomain.com | ||
+ | FailureReports true | ||
+ | RejectFailures false | ||
+ | SPFSelfValidate yes | ||
+ | Socket local:/ | ||
+ | SoftwareHeader true | ||
+ | Syslog true | ||
+ | SyslogFacility mail | ||
+ | TrustedAuthservIDs mail.mydomain.com | ||
+ | HistoryFile / | ||
+ | UMask 0002 | ||
+ | UserID opendmarc | ||
+ | PidFile / | ||
+ | </ | ||
+ | |||
+ | === DNS record === | ||
+ | |||
+ | A DMARC DNS record can be pretty simple or pretty complex. [[https:// | ||
+ | |||
+ | The following is a simple example that you can start from: | ||
+ | < | ||
+ | _dmarc IN TXT ( " | ||
+ | </ | ||
+ | |||
+ | where: | ||
+ | * p: policy, you want reject here most probably | ||
+ | * rua: email address to sent aggregate reports to (optional) | ||
+ | * ruf: email address to sent failure reports to (optional) | ||
+ | |||
+ | === Postfix setup === | ||
+ | |||
+ | OpenDMARC acts as a //milter//, which means a mail filter, for Postfix. The postfix configuration described [[email: | ||
+ | |||
+ | === Start & Autostart OpenDMARC === | ||
<code bash> | <code bash> | ||
- | emerge | + | rc-update add opendmarc default |
+ | / | ||
</ | </ | ||