Dies ist eine alte Version des Dokuments!


Artikel befindet sich gerade in der Bearbeitung!

DMARC - Domain-based Message Authentication, Reporting & Conformance unter CentOS 7.x

DMARC Logo

DMARC1) ist an sich kein eigenständiger Prozess in der eMail-Verarbeitung, vielmehr erweitert DMARC auf die beiden Techniken SPF2) und DKIM3). DMARC ergänzt somit DKIM und SPF, ohne die DMARC nicht funktionieren kann. Hinweise zu DMARC findet man bei auch auf der Webseite von DMARC.org, oder im Entwurf der Network Working Group, die der ITF4) Anfang 2012 zur Prüfung vorgelegt wurde.


Obwohl DMARC aktuell noch als Entwurf gilt, wird laut den Angaben der aktuellen DMARC-Präsentation aus 2014 bereits mehr als 60% der weltweiten eMail-Postfächer mit Hilfe von DMARC geschützt.

Die weltgößten eMail-Provider setzen auf DMARC, wie z.B.:

  • GMail, Yahoo, AOL, Comcast, oder Outlook.com
  • Mail.ru (größter eMail-Provider in Russland)
  • NetEase (größter eMail-Provider in China)
  • XS4All (größter eMail-Provider in den Niederlanden)

Alles gute Gründe, sich dem Thema DMARC dennoch intensiver zu widmen!

Bei DMARC kann definiert werden, wie ein empfangender Mailserver Nachrichten behandeln und verarbeiten soll, insbesondere mit Hinblick auf die Bewertung der Versandberechtigung des einliefernden Mailservers (SPF) und der nicht veränderten Nachricht (DKIM). Fällt eine oder beide Überprüfungen negativ aus, definiert DMARC, ob die eMail in Quarantäne gestellt, die Annahme der eMail abgelehnt (reject) oder eben dennoch zugestellt werden soll.

Das nachfolgende Schaubild zeigt den Bearbeitungsverlauf einer eMail mit Berücksichtigung auf DMARC auf.

<uml width=900 title=„DMARC - Verarbeitungsschritte einer eMail“> skinparam defaultFontName Courier state „Absender Klaus generiert eMail“ as sender sender : ——————————————- sender : From: klaus@tachtler.net sender : To: michael@nausch.org sender : Subject: Gratulation! sender : Date: Thu, 20 Mar 2014 18:40:18 +0100 sender : ——————————————- sender : Nachrichtentext

state Mailserver_des_Absenders {

state "Mail-Eingang" as smtpd_a
smtpd_a : Annahme der eMail
smtpd_a : nach SPAM- und 
smtpd_a : Viren-Überprüfung
state "DKIM-Signatur" as dkim_sig
dkim_sig : Einfügen der DKIM
dkim_sig : Signatur (Mailheader
dkim_sig : und Mailbody) im
dkim_sig : Header der eMail
state "Mail-Ausgang" as smtp_a
smtp_a : Versand der eMail
smtp_a : zum eMail-Server (MTA)
smtp_a : des Empfängers

}

state Mailserver_des_Empfängers {

state "Mail-Eingang" as smtpd_b
smtpd_b : Bewertung der eMail
smtpd_b : mit Hilfe von Blacklists  
smtpd_b : und greylisting
state "SPAM- und Virenüberprüfung" as amavis1
amavis1 : Bewertung der eingehenden Nachricht
amavis1 : durch SPAM- und/oder Virenfilter
state "SPAM- und Virenüberprüfung" as amavis2
amavis2 : Bewertung der eingehenden Nachricht
amavis2 : durch SPAM- und/oder Virenfilter
state "Mail-Quarantäne" as quarantäne
quarantäne : Bestätigung (250) der Annahme an den
quarantäne : sendenen Mailserver und Einstellung
quarantäne : der Nachricht in die MAIL-Quarantäne
state "Annahme der eingehenden Nachricht" as imap
imap : Bestätigung (250) der Annahme an den
imap : sendenen Mailserver und Zustellung 
imap : der Nachricht in die INBOX des Empfängers 
state "REJECT der eMail" as reject
reject : Annahme der eMail verweigern
reject : Rückmeldecode 500 an den
reject : einliefernden Mailserver
state DMARC_Überprüfungen {
  state "DKIM-Signatur" as dkim_val
  dkim_val : Überprüfen der vorhandenen
  dkim_val : DKIM-Signatur im Mailheader
  dkim_val : der eingehenden Nachricht
  state "SPF-Validierung" as spf_check
  spf_check : Überprüfung ob der
  spf_check : Versendene Mailserver  
  spf_check : zum Mailversand der 
  spf_check : Maildomäne berechtigt ist
  state "Anwenden der DMARC-Policy" as dmarc_check
  dmarc_check : Bewertung der Legitimität
  dmarc_check : der eingehenden Nachricht   
  dmarc_check : an Hand der DMARC-Policy
  dmarc_check : des absendenden Mailservers
}
state DMARC_Ergebnis_Reports {
  state Report_aggregat {
    state "DMARC Check" as ok
    ok : Test O.K.
    ok : DMARC-policy -> Zustellung
  }
  state Report_forensic {
    state "DMARC Check" as nok1
    nok1 : Test nicht O.K.!
    nok1 : DMARC-policy -> Quarantäne
    state "DMARC Check" as nok2
    nok2 : Test nicht O.K.!
    nok2 : DMARC-policy -> REJECT
  }
}

}

sender -down→ smtpd_a smtpd_a -left→ dkim_sig dkim_sig -left→ smtp_a smtp_a -down→ smtpd_b smtpd_b -right→ dkim_val dkim_val -right→ spf_check spf_check -right→ dmarc_check dmarc_check –> ok ok –> amavis1 dmarc_check –> nok1 dmarc_check –> nok2

amavis1 –> imap

nok1 –> amavis2 amavis2 –> quarantäne

nok2 –> reject

note left of smtpd_b

Standard Validierungs-
Überprüfung, wie z.B.
IP-Blacklists, greylisting
und policyd-weight
und ggf. weiteren Filtern

end note

note left of DMARC_Überprüfungen

Abfrage des DKIM public-keys 
("DKIM"-TXT-Record) und der
berechtigten Sender der Mail-
Domäne ("SPF"-/TXT-Record) 
beim zuständigen Nameserver  
der Absendedomäne

end note

note right of dmarc_check

Abfrage der DMARC-Policy  
des absendenden Mail-
Servers durch Abfrage 
des DMARC-/TXT-Record 
beim zuständigen 
Nameserver

end note

note right of Report_aggregat

regelmäßig aggregierter
Bericht an den im DMARC-
Record hinterlegten
"rua=mailto"-Adresse des 
Mailserverbetreibers des 
Absender-Mailservers

end note

note left of Report_forensic

regelmäßiger forensischer 
Bericht an den im DMARC-Record 
hinterlegten "ruaf=mailto"-
Adresse des Mailserver-
betreibers des Absender-
Mailservers

end note

</uml>


Auch wenn DMARC noch immer im Status DRAFT5) ist, macht es doch Sinn, sich mit DMARC näher zu beschäftigen!


Möchten wir DMARC bei unserem Mailserver einsetzen, ist es wichtig, dass alle drei Komponenten via Milter6) an unseren Postfix-Mailserver angebunden werden. Nur so stehen dem DMARC-Daemon alle relevanten Headerinformationen zur Bewertung zur Verfügung.

Wir setzen daher bei unserer Installation jeweils folgende Pakete ein:

Die Installation von SPF-Milter ist im Kapitel SPF - Sender Policy Framework und OpenDKIM-Milter im Kapitel DKIM - Domain Key Identified Mail genauer beschrieben.

Mit Hilfe des DMARC Record Assistant kann man sich sehr leicht und einfach den nötigen DMARC-Record generieren lassen, den man dann über einen TXT-Record der Subdomain _dmarc in seinem DNS einträgt. Im Kapitel 6.2. General Record Format des DMARC Standardisierungs-Entwurf ist die

Als Beispiel sehen wir uns nun den aktuellen DMARC-Record von nausch.org an, den wir u.a. mit dem Aufruf des Befehls host vom DNS-Server abfrsagen können.

 # host -t TXT _dmarc.nausch.org
_dmarc.nausch.org descriptive text "v=DMARC1\; p=reject\; rua=mailto:postmaster@nausch.org\; ruf=mailto:django@nausch.org\; adkim=r\; aspf=r\; pct=100\; rf=afrf\; ri=86400\; sp=reject"

Die einzelnen Werte haben nun folgende Bedeutung.

Parameter Art Wert Bedeutung
v Plaintext; REQUIRED DMARC1 Identifiziert den Datensatz als DMARC-Record. Der Parameter muss als erster wert im DMARC-Record gesetzt sein. Fehlt dieser ist der gesamte DMARC-Record zu verwerfen!
p Plaintext; REQUIRED reject Beschreibt, wie der Empfänger die Nachrichten des Domain-Inhabers verwerten soll. Diese gilt auch für die Subdomains, sofern für diese mit dem Parameter sp keine separate Definition vorliegt. Mögliche Werte sind:
:OK:none : Der Domaininhaber hat keine Vorgaben zur Verabeitung/Zustellung der eMails.
:BRK:quarantine : Der Domaininhaber wünscht, dass eMails, die die DMARC-Bewertung nicht bestehen, als verdächtig gewertet werden sollen. Abhängig vom Empfänger können diese als verdächtig markiert werden, mit weiteren/zusätzlichen SPAM prüfungen zu belegen ist, oder in einen SPAM-Ordner verschoben werden soll.
:NOK:reject : Der Domaininhaber wünscht, dass eMails, die die DMARC-Bewertung nicht bestehen, rejected, also nicht angenommen werden sollen. Dies sollte, wenn möglich, noch während des SMTP-Dialogs passieren.
sp Plaintext;OPTIONAL reject Beschreibt, wie der Empfänger die Nachrichten des Domain-Inhabers einer Subdomäne verwerten soll. Der Parameter beschreibt nur die abgefragte Subdomäne, nicht die Domäne an sich! Der Syntax entspricht dem Parameter p. Wird der Paramter sp nicht gesetzt, gelten die Definitionen des Parameters p auch für alle Subdomänen.
rua Kommaseparierte plain-text Liste von DMARC URIs; OPTIONAL mailto:postmaster@nausch.org Der Domaininhaber wünscht, per eMail mit aufbereiteten Statiskdaten der verarbeiteten eMails, informiert zu werden. Ist dieser Parameter nicht gesetzt, braucht der Empfänger keine Statistikdaten aufbereiten.
ruf Kommaseparierte Plaintext Liste von DMARC URIs; OPTIONAL mailto:django@nausch.org Der Domaininhaber wünscht, per eMail mit detailierten forensischen Statiskdaten der verarbeiteten eMails, informiert zu werden. Ist dieser Parameter nicht gesetzt, braucht der Empfänger keine Statistikdaten aufbereiten.
adkim Plaintext; OPTIONAL; Default = relaxed r Definiert, wie konservativ das Ergebnis der DKIM-Signaturprüfung bewertet werden soll. Mögliche Werte sind entweder r=relaxed oder s=strikt.
aspf Plaintext; OPTIONAL; Default = relaxed r Definiert, wie konservativ das Ergebnis der SPF-Prüfung bewertet werden soll. Mögliche Werte sind entweder r=relaxed oder s=strikt.
pct Plaintext/Zahlenwert zwischen 0 und 100; OPTIONAL; Default = 100 100 Der Domaininhaber wünscht, daß der angegebene Prozentwert an Nachrichten von den DMARC-Prüfungen benutzt werden soll. Der Wert beschreibt nicht das Verhältnis in den DMARC-Reports.
rf Kommaseparierte Plaintext Liste; OPTIONAL; Default = afrf afrf Der Domaininhaber wünscht, dass die aufbereiteten forensischen Prüfberichte im Format AFRF7) oder IODEF8) zu erhalten, wenn sowohl der DKIM- wie auch der SPF-Test negativ ausfällt.
ri Plaintext; OPTIONAL; Default = 86400 86400 Der Domaininhaber wünscht, dass die aufbereiteten Statistik- und Forensikdaten spätestens alle „n“ Sekunden verschickt werden sollen.

Nach Erstellung des DMARC-Records von Hand oder über den DMARC Record Assistant, tragen wir demnach bei unserem zuständigen DNS entsprechenden eigenen und richtigen Daten ein.

 _dmarc.nausch.org                        IN      TXT     "v=DMARC1\; p=reject\; rua=mailto:postmaster@nausch.org\; ruf=mailto:django@nausch.org\; adkim=r\; aspf=r\; pct=100\; rf=afrf\; ri=86400\; sp=reject"

Über die URL OTA Query Tool for SPF & DMARC Records der Online trust Alliance kann man online bei Bedarf testen, ob der DMARC-Eintrag soweit richtig ist.

Mit Hilfe der DMARC Inspectors kann man (s)einen DMARC-Record testen und sich die Optionen die der Domaininhaber gesetzt hat, beschreiben lassen. Möchte man seinen SPF-Record testen lassen, steht einem der SPF Surveyor zur Verfügung.

Zu guter Letzt kann mit dem DKIM Key Checker der, im DNS hinterlegte, DKIM-Schlüssel einer Domäne getestet werden.

Möchte man dann noch testen, ob der eigene Mailserver alle Voraussetzungen für eine DMARC-policy hat, schickt man einfach eine „leere eMail“ an checkmyauth@auth.returnpath.net, so erhält man anschließen einen ausführlichen Prüfbericht.

From: "Return Path" <noreply@returnpath.net>
Subject: Return Path DKIM/SPF Reflector Report
Date: Fri, 21 Mar 2014 03:58:12 -0600 (MDT)
To: undisclosed-recipients:;

Return Path DKIM/SPF Reflector Report
=====================================
Source IP = 217.91.103.190
Mail From = django@nausch.org

Identity Alignment Results
==========================
SPF Domain Alignment Result = PASS
	The From domain 'nausch.org' is an exact match with the SPF domain 'nausch.org'.
	Note that the alignment policy is set to relaxed in your DMARC record.

DKIM Domain Alignment Results:
	Result for DNS Record: 140224._domainkey.nausch.org = PASS
	The From domain 'nausch.org' is an exact match with the DKIM domain 'nausch.org'.
	Note that the alignment policy is set to relaxed in your DMARC record.

DKIM Results
============
Result = pass
Domain = nausch.org
Selector = 140224
DNS Record(s) =
	140224._domainkey.nausch.org TXT v=DKIM1; p=MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAuJ3/CruOs3fCU0ujOStcNN85TJh+5HvMa9m99C5XuRBlxOr+fp5BeIEtiPO0szKvvPojwrueCq0oOuEzjR/i2ObpRkzKRUXmAa0qVezUZwQIbKeiuKII0PnpQclDrmQrzSXcQWPT57tkPg17Q9WamFUUaHeN3+pVGtMyjYekRaAoRlV+a1gD111kXMPhiaFTMIncoRBS/gYN8FjfekH+ezqbLHLB8DLJQBZEGUILvJjAHX0722XyqYtkn1qfv63nPRGw/qqAW1072Gchq4ZS4ZPQ89SrK4KcHt/XptSlztXMWtmRFQriHdvbjr1Fx7ZwXdTQ+ik2AUZLMdhMrQe6/1GujQiMD6po81NpYbrjnfd+QF4sUbus4wPQKVNzsctiuzGlWsFexSHP4dAZtKnImJhVDnzZODQy0nSafedlr5g4VR36vgm0YPWjSyRNnC/APHyw0DtHIrzTqfKuDeGv80uMPbEdujrw9gLbK3H8ow42iTicmgPgT3J5j70ZOo4o4FMtpZ/AEQw+VnWpSfw7bkMjufLc29XHbtp22wfgq2Lmarr3+psaHokFaQrImkMbzdSL9CdabkLptanAilLScvq8UaKVC+G1+vHDgaweq3BhXD5+YcJnJlp4msUqqxGYlnx4RSvv8PipMU2DsVFbNJSH5NJuS7GuzplNg+f20ysCAwEAAQ==
	Public Key Length = 4096

DomainKeys Results
==================
No DomainKeys signature(s) found.

SPF Results
===========
Result = pass
Domain = nausch.org
DNS Record(s) =
	nausch.org TXT v=spf1 ip4:217.91.103.190/32 mx ?all

DMARC Results
=============
Domain = _dmarc.nausch.org
DNS Record = 
	_dmarc.nausch.org TXT v=DMARC1; p=reject; rua=mailto:postmaster@nausch.org; ruf=mailto:django@nausch.org; adkim=r; aspf=r; pct=100; rf=afrf; ri=86400; sp=reject

DMARC Record Validation Results
===============================
DMARC Errors Detected: None.
Non-DMARC flags encountered (skipped): None.

Visit http://www.returnpath.com/solution-content/dmarc-support/ for more information on DMARC record creation and validation.

1)
Domain-based Message Authentication, Reporting & Conformance
2)
Sender Policy Framework
3)
DomainKeys Identified Mail
4)
The Internet Engineering Task Force
5)
Stand Dezember 2014
6)
Mail-Filter
7)
Authentication Failure Reporting Format
8)
Incident Object Description Exchange Format
Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
  • centos/mail_c7/spam_12.1418848366.txt.gz
  • Zuletzt geändert: 17.12.2014 20:32.
  • von django