The most important service on kasad.com is the mail server. It is actually made up of multiple services that handle different aspects of the email process.
These parts are listed in the following table. Each service name links to its respective page.
Service | Protocol | Description |
---|---|---|
Postfix | SMTP | Handles sending mail from kasad.com and receiving mail to kasad.com from other servers |
Dovecot | IMAP | Handles storage of emails on the kasad.com server and provides access to those emails to email clients |
dkimpy-milter | DKIM | Signs outgoing emails so the recipient's email server can verify the legitimacy. Can also verify the signatures on incoming mail. |
In addition to these services, some DNS records are required to ensure functionality of the email server.
Domain names
The mail server for the kasad.com
domain is mail.kasad.com
.
However, both of these domains point to the same server.
The hostname of the server, as far as Postfix is concerned, is mail.kasad.com
, as that's what clients will expect to be connected to.
However, we still want to send/receive mail to/from <user>@kasad.com
.
We'll refer to kasad.com
as our domain and mail.kasad.com
as our mail server's hostname.
DNS Records
Mail servers use multiple DNS records to provide information about their functionality:
Name | DNS record type | Purpose |
---|---|---|
MX | MX |
Defines the address of the mail server for its domain. Used by other MTAs to find the mail server for mail addressed to kasad.com . |
A | A |
Specifies the IPv4 address for the given hostname. |
AAAA | AAAA |
Same as A , but for IPv6. |
SPF | TXT |
Defines a list of rules about what IP addresses are allowed to send mail for the record's domain. Used to prevent forged sender addresses. |
DKIM | TXT |
Lists the public key used for DKIM signing of outgoing mail. |
DMARC | TXT |
Sets rules for recipient MTAs to follow regarding DKIM/SPF policy failures. Also lists instructions for recipient MTAs to follow to notify of DKIM/SPF failures. |
A/AAAA records
These are the simplest type of record. They simply define the IP address that a given hostname corresponds to.
We define an A and an AAAA record for kasad.com
that points to our server.
Instead of defining a second A/AAAA record for mail.kasad.com
, we use a CNAME record that points to kasad.com
.
MX records
The MX record specifies the mail server for a given domain.
Other MTAs use this when trying to send mail to our domain.
Mail addressed to anything ending in @kasad.com
will be sent to the mail server listed in the MX record for kasad.com
.
We define an MX record for kasad.com
with the value mail.kasad.com
.
This makes mail.kasad.com
the mail server for the kasad.com
domain.
SPF records
Sender Policy Framework (SPF) is a simple mechanism to help prevent sender address forgery.
It accomplishes this by specifying a list of IP addresses that are allowed to send mail for the given domain.
SPF, on its own, only checks the envelope from address.
This means the From:
header can still be spoofed.
Enable DMARC to protect against this.
SPF records are just TXT records with specific content. The SPF rules can be customized to your liking. The rules listed below are the ones I've decided to use.
We define a TXT record for kasad.com
with the following content:
v=spf1 +mx +a:kasad.com +a:mail.kasad.com -all
-
v=spf1
: Specifies the SPF version -
+mx
: Allow IP addresses pointed to by the MX record for our domain to send mail for the kasad.com domain -
+a:kasad.com
: Allow IP addresses pointed to by theA
record forkasad.com
to send mail for the kasad.com domain -
+a:mail.kasad.com
: Allow IP addresses pointed to by theA
record formail.kasad.com
to send mail for the kasad.com domain -
-all
: Reject mail sent from all other IP addresses. This must be the last parameter.
Both +a:
rules are likely redundant, as the MX record already points to our mail server and is allowed in a previous rule.
That being said, better safe than sorry.
DKIM records
The DKIM record holds the public key that corresponds to our DKIM signing key. MTAs that receive mail from us will retrieve our public key from the DKIM DNS record and use it to verify the mail's DKIM signature. It is important that this record is kept up to date with our DKIM configuration, otherwise recipient MTAs may mark our messages as being forged or as spam.
We generated the value for this record when setting up our DKIM service.
See here for details.
The DNS record content will be saved in the <keyname>.dns
file.
DKIM records are just TXT records.
However, the record name must be <selector>._domainkey.<domain>
, where <selector>
is the selector we chose in our DKIM configuration and <domain>
is our domain.
We define a TXT record for mail._domainkey.kasad.com
with the following content:
v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxOlorHTT/rsI5WWobgA0/+XRWAav1F5As1YoUVEUknIPbIJDuMIbEbV468XdHsp63PvwF2uz9A3iEefaGIMOpcJrgIcb3X5el0/x89kxK/zDDruiAzpcLwdy6urEmQhdRfoi1stdOhDlo8dNQj5vRORceJ2v5fUJ3VUV9eWd7cGOjhladUWedYgdIdiYqsbR6CeYIhpKK1v414 UmtB1sKcxHgxbROm+yjM6iJaSQbF9iLUlBEHOBfRc1vVuw0N+LQpRDNaaHSom0SusrMnXnjb33ANNCFMITwL9fZm9mR+sR+m+2QGvhLyODJMsxRCBKSSZhrjP2Csa80ZnOtNX91QIDAQAB
There must not be any whitespace in the value of the p=
key. Do not insert spaces or line breaks.
DMARC records
DMARC records are used to tell other MTAs how to handle SPF and DKIM failures, as well as how to report these failures (and non-failures, if wanted). DMARC records can be a little complex. The DMARC record we use is explained below, but the alternative options are not. To learn more, see learndmarc.com for an interactive DMARC demonstration. To make it easier to create your own DMARC record, see Scott Kitterman's DMARC Record Assistant.
Like SPF and DKIM, DMARC records are also implemented using DNS TXT records.
The DMARC TXT record must be made for _dmarc.<domain>
, where <domain>
is our domain.
We define a TXT record for _dmarc.kasad.com
with the following content:
v=DMARC1; p=none; rua=mailto:dmarc+aggregate@kasad.com; ruf=mailto:dmarc+failures@kasad.com; fo=1; rf=afrf; sp=none
-
v=DMARC1
: Specify DMARC version 1 is in use. -
p=none
: Don't do anything for mail that fails SPF and DKIM. -
sp=none
: Same asp=
parameter, but for subdomains only. -
rua=mailto:dmarc+aggregate@kasad.com
: Send aggregate data reports todmarc+aggregate@kasad.com
. These reports are typically sent daily by recipient MYAs. -
ruf=mailto:dmarc+failures@kasad.com
: Report DKIM/SPF policy failures todmarc+failures@kasad.com
. -
fo=1
: Send a failure report if either SPF or DKIM fails. Normally a report is sent only when both fail. -
rf=afrf
: Specify AFRF report format. This is the only supported format currently.
No Comments