Tag Archives: MailChimp

SPF, DKIM en DMARC met Exchange, Office 365 en MailChimp

Nu we begonnen zijn met NL365Pro hebben we ook een nieuw domein, een nieuwe site en een nieuwe mailomgeving. Deze draait binnen Office 365, maar is wel een hybride omgeving (waarbij behalve de accounts niets on-premises draait). Dat betekent dus ook dat we iets hebben moeten doen met SPF, DKIM en DMARC. Precies zoals in de laatste presentatie van Dave Stork 😊

MX Record

Het MX record voor het NL365Pro.com domein wijst dus naar Office 365, er zijn verder geen backup ingangen zoals je bij on-premises servers wel eens ziet, dus het MX record ziet er als volgt uit:

MX: nl365pro-com.mail.protection.outlook.com

In het geval van een hybrid omgeving kan in principe ook de on-premises Exchange servers opgegeven worden (mits een fatsoenlijke anti-spam oplossing natuurlijk).

SPF Record

Er is geen Centralized Mail Transport, dus uitgaande mail van mailboxen komt altijd vanaf Exchange Online Protection. Naast de mailboxen hebben we nieuwsbrieven uit naam van NL365Pro.com wat verzorgd wordt door MailChimp. Deze moet dus ook aan het SPF record toegevoegd worden. Het SPF record ziet er dus als volgt uit:

SPF: v=spf1 include:spf.protection.outlook.com include:servers.mcsv.net -all

Opmerking. Mocht er nog een on-premises SMTP server zijn die mail verstuurd uit naam van NL365Pro dan kan dit middels de ip4 tag toegevoegd worden, het SPF record wordt dan zoiets als:

SPF: v=spf1 include:spf.protection.outlook.com include:servers.mcsv.net ip4:178.251.192.3 -all

Er wordt een hard fail gebruikt in het SPF record (-all), dat betekent dat mail afkomstig van andere IP adressen dan vermeld in het SPF record een FAIL opleveren. In dat geval is het dus geen legitieme mail.

DKIM

Microsoft Office 365 ondersteunt standaard DKIM sigining vanuit EOP, daar is behalve het aanmaken van twee DNS records geen configuratie voor nodig. In DNS moeten twee CNAME records aangemaakt worden waarmee key management bij Microsoft wordt neergelegd. In ons geval worden de volgende twee CNAME records aangemaakt:

DKIM1: selector1._domainkey.nl365pro.com CNAME selector1-nl365pro-com._domainkey.exchangelabsnl.onmicrosoft.com
DKIM2: selector2._domainkey.nl365pro.com CNAME selector2-nl365pro-com._domainkey.exchangelabsnl.onmicrosoft.com

Na het aanzetten van DKIM signing in de Microsoft Online Portal wordt alle uitgaande mail vervolgens voorzien van een DKIM signature in de email header.

MailChimp ondersteunt ook DKIM signing, dat staat standaard aan. Net als bij Office 365 hoef je alleen een CNAME record aan te maken die naar MailChimp verwijst, ook hier wordt dus het key management door MailChimp afgehandeld. Het volgende CNAME record is voor MailChimp aangemaakt:

DKIM3: k1._domainkey.nl365pro.com CNAME dkim.mcsv.net

DMARC

Als SPF en DKIM zijn ingeregeld kan ook DMARC ingeregeld worden. Uitgaande mail komt alleen bij Office 365 of bij MailChimp vandaan, er zijn geen andere partijen die mail uit naam van NL365Pro versturen. Ook maken we geen gebruik van subdomeinen. Het DMARC record ziet er als volgt uit:

v=DMARC1;p=none;sp=reject;pct=100;rua=mailto:NL365Dmarc@nl365pro.com

DMARC reports worden naar een aparte mailbox in Exchange Online verstuurd. Voor de oplettende lezer, ik heb geen alignment toegevoegd, de reden staat in het volgende stukje.

Controle header informatie

Als alles is ingeregeld kan het eindresultaat gecontroleerd worden door een mail vanuit NL365Pro te versturen naar (bijvoorbeeld) een Google mailbox. Google is een ideale testomgeving, Google heeft alles strak ingeregeld en als er iets niet klopt aan jouw (Exchange) omgeving dat merk je dat direct.
Headerinformatie van een mail vanuit Office 365 naar Gmail laat het volgende zien:

Received-SPF: pass (google.com: domain of nieuwsbrief@nl365pro.com designates 40.107.21.72 as permitted sender) client-ip=40.107.21.72;
Authentication-Results: mx.google.com;
dkim=pass header.i=@nl365pro.com header.s=selector1 header.b=Q0orGOc4;
arc=pass (i=1 spf=pass spfdomain=nl365pro.com dkim=pass dkdomain=nl365pro.com
dmarc=pass fromdomain=nl365pro.com);
spf=pass (google.com: domain of nieuwsbrief@nl365pro.com designates
40.107.21.72 as permitted sender) smtp.mailfrom=nieuwsbrief@nl365pro.com

Bij een mail vanuit MailChimp ligt het verhaal iets anders:

Received-SPF: pass (google.com: domain of bounce-mc.us4_130879206.5766661-jaapwess=gmail.com@mail248.suw18.rsgsv.net designates 198.2.181.248 as permitted sender) client-ip=198.2.181.248;
Authentication-Results: mx.google.com;
dkim=pass header.i=@mcc.mcsv.net header.s=k1 header.b=j6fOvEBw;
dkim=pass header.i=@mailchimpapp.net header.s=k1 header.b=jOrLSI69;
spf=pass (google.com: domain of bounce-mc.us4_130879206.5766661-
jaapwess=gmail.com@mail248.suw18.rsgsv.net designates 198.2.181.248 as permitted sender)
smtp.mailfrom="bounce-mc.us4_130879206.5766661-
jaapwess=gmail.com@mail248.suw18.rsgsv.net";
dmarc=fail (p=NONE sp=REJECT dis=NONE) header.from=nl365pro.com

SPF gaat goed, het afzender adres is nl365pro.com en het IP/FQDN komt bij Mailchimp vandaan zoals in het SPF record gedefinieerd. DMARC daarentegen struikelt over het tweede SMTP.MailFrom adres wat niet tegen het SPF record wordt aangehouden. Helaas valt hier weinig aan te doen, behalve geen gebruik maken van MailChimp. Zolang het DMARC record niet op p=reject staat zal de mail gewoon worden doorgelaten.