DKIM signing outgoing email with From address domain
DKIM is an email authentication standard that allows senders of email to sign an email with a particular domain, and for receivers of the email to confirm that the email was signed by that domain and hasn't been altered. There's some more information about how DKIM is useful in this previous blog post. We've been DKIM signing all email sent via FastMail for the last 2 years.
In the original design of the DKIM, the domain that signed the email had no particular relationship to the domain in the From address of the email. This was particularly useful for large email providers like us. We have 10,000's of domains, but would sign all email with just our "generic" messagingengine.com domain.
However this state of affairs is beginning to change. Standards like Author Domain Signing Practices explicitly link the domain of the email address in the From header of the email to the DKIM signing domain. Also recently Gmail has changed their web interface so that email sent with a From domain that's different to the DKIM signing domain may be shown with an extra "via messagingengine.com" notice next to the sender name.
So we've now rolled out new code that changes how all emails sent through FastMail are DKIM signed. We always DKIM sign with messagingengine.com (as we always have), but we also now sign with a separate key for the domain used in the From address header where possible (see below for more details).
For most users, there should be no noticeable difference. For users that use virtual domains at FastMail, or have their own domain in a family/business, then when you send via FastMail, Gmail should no longer show "via messagingengine.com" on the received message (if your DNS is correctly setup, see below for more details).
For users that host their DNS with FastMail (eg. nameservers for your domain are ns1.messagingengine.com and ns2.messagingengine.com), this will "just work". We've generated DKIM public/private keys for all domains in our database, and automatically do so when new domains are added. We also publish the public keys for all domains via ns1.messagingengine.com/ns2.messagingengine.com.
In general if you can, we highly recommend hosting your DNS with us. For most cases the default settings we provide "just work", and if you need to customise your DNS, our control panel allows you to add any records of any type, without the arbitrary limitations many other DNS providers have.
However for users that host DNS for their domains externally and want to continue to do so, you'll have to explicitly add the DKIM public key using your domain hosters DNS management interface. Unfortunately there's 100's of different DNS providers out there, so we can't give specific directions for each one.
The general steps are:
- Login to your FastMail account and go to Options –> Virtual Domains
(or Manage –> Domains for a family/business account).
- Scroll to the bottom, and you'll see a new "DKIM signing keys"
section. For each domain you have, you'll see a DKIM public key.
- Login to your DNS provider, and create a new TXT record for each
domain listed and use the value in the "Public Key" column as the
TXT record data to publish.
Important: Note that you have to add the TXT record for the domain name shown in the DKIM signing keys section, which will be
mesmtp._domainkey.yourdomain.com, do not add it for the base domain name yourdomain.com, that won't work.
That should be it.
Note that initially each domain is marked as DKIM disabled (Enabled column = [ ]). While a domain is DKIM disabled, we won't sign any sent emails. This is to avoid DKIM signing failures when the receiving side tries to lookup the public signature and fails to find it. We regularly check each domain to see if the correct public key TXT record is being published. If it is, we mark the domain in our database as "DKIM enabled" (Enabled column = [*]), and then begin signing sent emails.
So after you setup the records at your DNS provider, you should wait a few hours, then check this table again to see that the domain is now correctly DKIM enabled.
Some other technical notes:
There's currently no way to change the public/private key used to sign emails or upload new ones. We always generate our own key pair for each domain and use the DKIM selector "mesmtp" to sign emails. This shouldn't be a problem. If you're transitioning from another provider to FastMail, you can use our custom DNS to publish the DKIM record of the previous provider with it's selector as well as our own during the transition. Vice-versa for transitioning away from FastMail. The only other reason to change the selector would be if the private key was compromised, which should never happen as it's stored securely in FastMail's systems.