Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
centos:mail_c6:mta_13 [23.03.2014 17:38. ] – [Konfigurations-Dokumentation] djangocentos:mail_c6:mta_13 [20.05.2021 12:41. ] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 2: Zeile 2:
 {{:centos:mail_c6:dmarc-logo.png?nolink |DMARC Logo}}  {{:centos:mail_c6:dmarc-logo.png?nolink |DMARC Logo}} 
  
-**DMARC**((**D**omain-based **M**essage **A**uthentication, **R**eporting & **C**onformance)) ist an sich kein eigenständiger Prozess in der eMail-Verarbeitung, vielmehr erweitert DMARC auf die beiden Techniken **SPF**((**S**ender **P**olicy **F**ramework)) und **DKIM**((**D**omainKeys **I**dentified **M**ail)). DMARC ergänzt somit DKIM und SPF, ohne die DMARC nicht funktionieren kann.  +**DMARC**((**D**omain-based **M**essage **A**uthentication, **R**eporting & **C**onformance)) ist an sich kein eigenständiger Prozess in der eMail-Verarbeitung, vielmehr erweitert DMARC auf die beiden Techniken **[[centos:mail_c6:mta_10|SPF]]**((**S**ender **P**olicy **F**ramework)) und **[[centos:mail_c6:mta_9|DKIM]]**((**D**omainKeys **I**dentified **M**ail)). DMARC ergänzt somit DKIM und SPF, ohne die DMARC nicht funktionieren kann.  
 Hinweise zu DMARC findet man bei auch auf der Webseite von [[http://dmarc.org|DMARC.org]], oder im [[https://datatracker.ietf.org/doc/draft-kucherawy-dmarc-base/|Entwurf der Network Working Group]], die der **[[http://www.ietf.org/|ITF]]**((The **I**nternet Engineering **T**ask **F**orce)) Anfang 2012 zur Prüfung vorgelegt wurde. Hinweise zu DMARC findet man bei auch auf der Webseite von [[http://dmarc.org|DMARC.org]], oder im [[https://datatracker.ietf.org/doc/draft-kucherawy-dmarc-base/|Entwurf der Network Working Group]], die der **[[http://www.ietf.org/|ITF]]**((The **I**nternet Engineering **T**ask **F**orce)) Anfang 2012 zur Prüfung vorgelegt wurde.
  
Zeile 18: Zeile 18:
 Das nachfolgende Schaubild zeigt den Bearbeitungsverlauf einer eMail mit Berücksichtigung auf DMARC auf. Das nachfolgende Schaubild zeigt den Bearbeitungsverlauf einer eMail mit Berücksichtigung auf DMARC auf.
  
-<uml width=900 title="DMARC - Verarbeitungsschritte einer eMail"+<uml> 
 +skinparam defaultFontName Courier
 state "Absender Klaus generiert eMail" as sender state "Absender Klaus generiert eMail" as sender
 sender : ------------------------------------------- sender : -------------------------------------------
Zeile 43: Zeile 43:
   state "Mail-Ausgang" as smtp_a   state "Mail-Ausgang" as smtp_a
   smtp_a : Versand der eMail   smtp_a : Versand der eMail
-  smtp_a : zum eMail-Server +  smtp_a : zum eMail-Server (MTA)
   smtp_a : des Empfängers   smtp_a : des Empfängers
 } }
Zeile 178: Zeile 178:
  
 </uml> </uml>
 +===== Zusammenspiel von DKIM, SPF und DMARC =====
 +
 +<WRAP round important> \\ Möchten wir DMARC bei unserem Mailserver einsetzen, ist es wichtig, dass alle drei Komponenten via **Milter**((**M**ail-F**ilter**)) an unseren Postfix-Mailserver angebunden werden. Nur so stehen dem **DMARC**-Daemon alle relevanten Headerinformationen zur Bewertung zur Verfügung. \\
 +</WRAP>
 +
 +Wir setzen daher bei unserer Installation jeweils folgende Pakete ein:
 +  * **SPF** **smf-spf** aus [[http://repository.nausch.org/public/|Djangos-Repository]]
 +  * **DKIM** **opendkim** aus dem [[centos:rpmforge6|RPMforge]]
 +  * **DMARC** **opendmarc** aus [[http://repository.nausch.org/public/|Djangos-Repository]]
 +
 +Die Installation von **SPF-Milter** ist im Kapitel [[centos:mail_c6:mta_10|SPF - Sender Policy Framework]] und **OpenDKIM-Milter** im Kapitel [[centos:mail_c6:mta_9?=opendkim#besonderheit_-_dmarc|DKIM - Domain Key Identified Mail]] genauer beschrieben.
 +
 +
 +
 +
 ===== DMARC-Record ===== ===== DMARC-Record =====
 ==== Beschreibung des Datensatzes ==== ==== Beschreibung des Datensatzes ====
Zeile 189: Zeile 204:
  
 Die einzelnen Werte haben nun folgende Bedeutung. Die einzelnen Werte haben nun folgende Bedeutung.
-   Parameter       Art       Wert                         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! | +| 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. | +| 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. | +| 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. | +| 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. | +| 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. | +| 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. | +| 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. | +| 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 **AFRF**((**A**uthentication **F**ailure **R**eporting **F**ormat)) oder **IODEF**((Incident Object Description Exchange Format)) zu erhalten, wenn sowohl der DKIM- wie auch der SPF-Test negativ ausfällt. | +| rf          | Kommaseparierte Plaintext Liste; OPTIONAL; Default = afrf         | afrf                          | Der Domaininhaber wünscht, dass die aufbereiteten forensischen Prüfberichte im Format **AFRF**((**A**uthentication **F**ailure **R**eporting **F**ormat)) oder **IODEF**((**I**ncident **O**bject **D**escription **E**xchange **F**ormat)) 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. |+| ri          | Plaintext; OPTIONAL; Default = 86400                              | 86400                         | Der Domaininhaber wünscht, dass die aufbereiteten Statistik- und Forensikdaten spätestens alle "n" Sekunden verschickt werden sollen.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | 
  
 ==== Generierung unseres DMARC-Records ==== ==== Generierung unseres DMARC-Records ====
Zeile 282: Zeile 298:
  
 Im Falle der x86_64-Pakete sind dies dann entsprechend folgende Pakete: Im Falle der x86_64-Pakete sind dies dann entsprechend folgende Pakete:
-   # wget http://repository.nausch.org/public/x86_64/libopendmarc-1.2.0-2.el6.x86_64.rpm+   # wget http://repository.nausch.org/public/x86_64/libopendmarc-1.3.0-beta0.el6.x86_64.rpm
  
-   # wget http://repository.nausch.org/public/x86_64/opendmarc-1.2.0-2.el6.x86_64.rpm+   # wget http://repository.nausch.org/public/x86_64/opendmarc-1.3.0-beta0.el6.x86_64.rpm
  
 ===== Installation ===== ===== Installation =====
-   # yum localinstall libopendmarc-1.2.0-1.el6.x86_64.rpm opendmarc-1.2.0-1.el6.x86_64.rpm+   # yum localinstall libopendmarc-1.3.0-beta0.el6.x86_64.rpm opendmarc-1.3.0-beta0.el6.x86_64.rpm
  
  
    # rpm -qil opendmarc    # rpm -qil opendmarc
-<code>Name        : opendmarc                    Relocations: (not relocatable) +<code>Version     : 1.3.0                             Vendor: Django 
-Version     : 1.2.0                             Vendor: django +Release     : beta0.el6                     Build Date: Mon 28 Apr 2014 05:46:34 PM CEST 
-Release     : 1.el6                         Build Date: Tue 18 Mar 2014 11:08:28 PM CET +Install Date: Mon 28 Apr 2014 05:50:47 PM CEST      Build Host: vml010039.intra.nausch.org 
-Install Date: Tue 18 Mar 2014 11:18:08 PM CET      Build Host: vml010039.intra.nausch.org +Group       : System Environment/Daemons    Source RPM: opendmarc-1.3.0-beta0.el6.src.rpm 
-Group       : System Environment/Daemons    Source RPM: opendmarc-1.2.0-1.el6.src.rpm +Size        : 175607                           License: BSD and Sendmail 
-Size        : 173606                           License: BSD and Sendmail +Signature   : RSA/SHA1, Mon 28 Apr 2014 05:46:35 PM CEST, Key ID 31b4758f7c65ab27
-Signature   : RSA/SHA1, Tue 18 Mar 2014 11:08:30 PM CET, Key ID 31b4758f7c65ab27+
 Packager    : Django Packager    : Django
 URL         : http://http://www.trusteddomain.org/opendmarc.html URL         : http://http://www.trusteddomain.org/opendmarc.html
Zeile 320: Zeile 335:
 /usr/sbin/opendmarc-params /usr/sbin/opendmarc-params
 /usr/sbin/opendmarc-reports /usr/sbin/opendmarc-reports
-/usr/share/doc/opendmarc-1.2.0 +/usr/share/doc/opendmarc-1.3.0 
-/usr/share/doc/opendmarc-1.2.0/INSTALL +/usr/share/doc/opendmarc-1.3.0/INSTALL 
-/usr/share/doc/opendmarc-1.2.0/README +/usr/share/doc/opendmarc-1.3.0/README 
-/usr/share/doc/opendmarc-1.2.0/README.schema +/usr/share/doc/opendmarc-1.3.0/README.schema 
-/usr/share/doc/opendmarc-1.2.0/RELEASE_NOTES +/usr/share/doc/opendmarc-1.3.0/RELEASE_NOTES 
-/usr/share/doc/opendmarc-1.2.0/schema.mysql+/usr/share/doc/opendmarc-1.3.0/schema.mysql
 /usr/share/man/man5/opendmarc.conf.5.gz /usr/share/man/man5/opendmarc.conf.5.gz
 /usr/share/man/man8/opendmarc-check.8.gz /usr/share/man/man8/opendmarc-check.8.gz
Zeile 338: Zeile 353:
 </code> </code>
  
 +  # rpm -qil libopendmarc
 +<code>Name        : libopendmarc                 Relocations: (not relocatable)
 +Version     : 1.3.0                             Vendor: Django
 +Release     : beta0.el6                     Build Date: Mon 28 Apr 2014 05:46:34 PM CEST
 +Install Date: Mon 28 Apr 2014 05:50:46 PM CEST      Build Host: vml010039.intra.nausch.org
 +Group       : System Environment/Libraries   Source RPM: opendmarc-1.3.0-beta0.el6.src.rpm
 +Size        : 69016                            License: BSD and Sendmail
 +Signature   : RSA/SHA1, Mon 28 Apr 2014 05:46:35 PM CEST, Key ID 31b4758f7c65ab27
 +Packager    : Django
 +URL         : http://http://www.trusteddomain.org/opendmarc.html
 +Summary     : An open source DMARC library
 +Description :
 +This package contains the library files required for running services built
 +using libopendmarc.
 +/usr/lib64/libopendmarc.so.1
 +/usr/lib64/libopendmarc.so.1.0.2
 +</code>
  
-===== Konfiguration ===== +===== Konfigurations-Dokumentation ===== 
-==== Konfigurations-Dokumentation ====+==== README ====
 Viele hilfreiche Informationen zur Konfiguration von OpenDMARC finden sich in den nachfolgenden Dateien. Viele hilfreiche Informationen zur Konfiguration von OpenDMARC finden sich in den nachfolgenden Dateien.
    # less /usr/share/doc/opendmarc-1.2.0/README    # less /usr/share/doc/opendmarc-1.2.0/README
Zeile 503: Zeile 535:
 </file> </file>
  
 +==== README.schema ====
    # less /usr/share/doc/opendmarc-1.2.0/README.schema    # less /usr/share/doc/opendmarc-1.2.0/README.schema
 <file /usr/share/doc/opendmarc-1.2.0/README.schema>This directory contains the OpenDMARC schema plus any related files. <file /usr/share/doc/opendmarc-1.2.0/README.schema>This directory contains the OpenDMARC schema plus any related files.
Zeile 545: Zeile 578:
 </file> </file>
  
 +==== opendmarc.conf ====
    # man opendmarc.conf    # man opendmarc.conf
 <code>opendmarc.conf(5)                                            opendmarc.conf(5) <code>opendmarc.conf(5)                                            opendmarc.conf(5)
Zeile 779: Zeile 813:
 </code> </code>
  
 +==== opendmarc ====
    # man 8 opendmarc    # man 8 opendmarc
 <code>opendmarc(8)                                                      opendmarc(8) <code>opendmarc(8)                                                      opendmarc(8)
Zeile 886: Zeile 921:
 </code> </code>
  
 +==== reports-README ====
    # elinks http://www.trusteddomain.org/opendmarc/reports-README    # elinks http://www.trusteddomain.org/opendmarc/reports-README
 <code>OPENDMARC REPORTS <code>OPENDMARC REPORTS
Zeile 949: Zeile 985:
  
 </code> </code>
 +==== opendmarc.import ====
  
    # man opendmarc-import    # man opendmarc-import
Zeile 1007: Zeile 1043:
 </code> </code>
  
 +==== opendmarc-reports ====
    # man opendmarc-reports    # man opendmarc-reports
 <code>opendmarc-reports(8)                                      opendmarc-reports(8) <code>opendmarc-reports(8)                                      opendmarc-reports(8)
Zeile 1083: Zeile 1120:
                           The Trusted Domain Project      opendmarc-reports(8)                           The Trusted Domain Project      opendmarc-reports(8)
 </code> </code>
 +===== Konfiguration =====
 ==== opendmarc Konfiguration ==== ==== opendmarc Konfiguration ====
 +Die Konfiguration von OpenDMARC erfolgt über die Konfigurationsdatei **opendmarc.conf** im Verzeichnis **/etc**. 
 +=== /etc/opendmarc.conf ===
    # vim /etc/opendmarc.conf    # vim /etc/opendmarc.conf
  
Zeile 1094: Zeile 1133:
  
 ##  AuthservID (string) ##  AuthservID (string)
-##   defaults to MTA name+##      defaults to MTA name
 ## ##
 ##  Sets the "authserv-id" to use when generating the Authentication-Results: ##  Sets the "authserv-id" to use when generating the Authentication-Results:
Zeile 1102: Zeile 1141:
 # #
 # AuthservID name # AuthservID name
 +# Django : 2013-03-18
 +AuthservID mx01.nausch.org
  
 ##  AuthservIDWithJobID { true | false } ##  AuthservIDWithJobID { true | false }
-##   default "false"+##      default "false"
 ## ##
 ##  If "true", requests that the authserv-id portion of the added ##  If "true", requests that the authserv-id portion of the added
Zeile 1111: Zeile 1152:
 # #
 # AuthservIDWithJobID false # AuthservIDWithJobID false
 +# Django : 2013-03-18
 +AuthservIDWithJobID true
  
 ##  AutoRestart { true | false } ##  AutoRestart { true | false }
-##   default "false"+##      default "false"
 ## ##
 ##  Automatically re-start on failures. Use with caution; if the filter fails ##  Automatically re-start on failures. Use with caution; if the filter fails
Zeile 1121: Zeile 1164:
  
 ##  AutoRestartCount n ##  AutoRestartCount n
-##   default 0+##      default 0
 ## ##
 ##  Sets the maximum automatic restart count.  After this number of automatic ##  Sets the maximum automatic restart count.  After this number of automatic
Zeile 1130: Zeile 1173:
  
 ##  AutoRestartRate n/t[u] ##  AutoRestartRate n/t[u]
-##   default (no limit)+##      default (no limit)
 ## ##
 ##  Sets the maximum automatic restart rate.  If the filter begins restarting ##  Sets the maximum automatic restart rate.  If the filter begins restarting
Zeile 1145: Zeile 1188:
  
 ##  Background { true | false } ##  Background { true | false }
-##   default "true"+##      default "true"
 ## ##
 ##  Causes opendmarc to fork and exits immediately, leaving the service ##  Causes opendmarc to fork and exits immediately, leaving the service
Zeile 1153: Zeile 1196:
  
 ##  BaseDirectory (string) ##  BaseDirectory (string)
-##   default (none)+##      default (none)
 ## ##
 ##  If set, instructs the filter to change to the specified directory using ##  If set, instructs the filter to change to the specified directory using
Zeile 1164: Zeile 1207:
  
 ##  ChangeRootDirectory (string) ##  ChangeRootDirectory (string)
-##   default (none)+##      default (none)
 ## ##
 ##  Requests that the operating system change the effective root directory of ##  Requests that the operating system change the effective root directory of
Zeile 1174: Zeile 1217:
  
 ##  CopyFailuresTo (string) ##  CopyFailuresTo (string)
-##   default (none)+##      default (none)
 ## ##
 ##  Requests addition of the specified email address to the envelope of ##  Requests addition of the specified email address to the envelope of
Zeile 1182: Zeile 1225:
  
 ##  DNSTimeout (integer) ##  DNSTimeout (integer)
-##   default 5+##      default 5
 ##  ## 
 ##  Sets the DNS timeout in seconds.  A value of 0 causes an infinite wait. ##  Sets the DNS timeout in seconds.  A value of 0 causes an infinite wait.
Zeile 1190: Zeile 1233:
  
 ##  EnableCoredumps { true | false } ##  EnableCoredumps { true | false }
-##   default "false"+##      default "false"
 ## ##
 ##  On systems that have such support, make an explicit request to the kernel ##  On systems that have such support, make an explicit request to the kernel
Zeile 1201: Zeile 1244:
  
 ##  ForensicReports { true | false } ##  ForensicReports { true | false }
-##   default "false"+##      default "false"
 ## ##
 ##  Enables generation of forensic reports when the DMARC test fails and the ##  Enables generation of forensic reports when the DMARC test fails and the
Zeile 1208: Zeile 1251:
  
 # ForensicReports false # ForensicReports false
 +#  Django : 2014-03-18
 +ForensicReports true
  
 ##  ForensicReportsBcc (string) ##  ForensicReportsBcc (string)
-##   default (none)+##      default (none)
 ## ##
 ##  When forensic reports are enabled and one is to be generated, always ##  When forensic reports are enabled and one is to be generated, always
Zeile 1219: Zeile 1264:
  
 # ForensicReportsBcc postmaster@example.coom # ForensicReportsBcc postmaster@example.coom
 +# Django : 2014-03-18
 +ForensicReportsBcc postmaster@nausch.org
  
 ##  ForensicReportsOnNone { true | false } ##  ForensicReportsOnNone { true | false }
-##   default "false"+##      default "false"
 ## ##
 ##  Supplements the "ForensicReports" setting by generating reports for ##  Supplements the "ForensicReports" setting by generating reports for
Zeile 1231: Zeile 1278:
  
 ##  ForensicReportsSentBy string ##  ForensicReportsSentBy string
-##   default "USER@HOSTNAME"+##      default "USER@HOSTNAME"
 ## ##
 ##  Specifies the email address to use in the From: field of forensic ##  Specifies the email address to use in the From: field of forensic
Zeile 1240: Zeile 1287:
  
 # ForensicReportsSentBy USER@HOSTNAME # ForensicReportsSentBy USER@HOSTNAME
 +# Django : 2014-03-18
 +ForensicReportsSentBy dmarc-admin@nausch.org
  
 ##  HistoryFile path ##  HistoryFile path
-##   default (none)+##      default (none)
 ## ##
 ##  If set, specifies the location of a text file to which records are written ##  If set, specifies the location of a text file to which records are written
Zeile 1252: Zeile 1301:
 ##  aggregate reports can be extracted by a tool such as opendmarc-import(8). ##  aggregate reports can be extracted by a tool such as opendmarc-import(8).
 # #
-HistoryFile /var/run/opendmarc/opendmarc.dat/; +HistoryFile /var/run/opendmarc/opendmarc.dat 
-             s+             
  
 ##  IgnoreHosts path ##  IgnoreHosts path
-##   default (internal)+##      default (internal)
 ## ##
 ##  Specifies the path to a file that contains a list of hostnames, IP ##  Specifies the path to a file that contains a list of hostnames, IP
Zeile 1264: Zeile 1313:
 # #
 # IgnoreHosts /usr/local/etc/opendmarc/ignore.hosts # IgnoreHosts /usr/local/etc/opendmarc/ignore.hosts
 +# Django : 2014-03-19
 +IgnoreHosts /etc/opendmarc/ignore.hosts
  
 ##  IgnoreMailFrom domain[,...] ##  IgnoreMailFrom domain[,...]
-##   default (none)+##      default (none)
 ## ##
 ##  Gives a list of domain names whose mail (based on the From: domain) is to ##  Gives a list of domain names whose mail (based on the From: domain) is to
Zeile 1276: Zeile 1327:
  
 ##  MilterDebug (integer) ##  MilterDebug (integer)
-##   default 0+##      default 0
 ## ##
 ##  Sets the debug level to be requested from the milter library. ##  Sets the debug level to be requested from the milter library.
 # #
 # MilterDebug 0 # MilterDebug 0
 +# Django : 2014-04-28
 +MilterDebug 5
  
 ##  PidFile path ##  PidFile path
-##   default (none)+##      default (none)
 ## ##
 ##  Specifies the path to a file that should be created at process start ##  Specifies the path to a file that should be created at process start
Zeile 1290: Zeile 1343:
 # #
 # PidFile /var/run/opendmarc.pid # PidFile /var/run/opendmarc.pid
 +# Django : 2014-03-18
 +PidFile /var/run/opendmarc.pid
  
 ##  PublicSuffixList path ##  PublicSuffixList path
-##   default (none)+##      default (none)
 ## ##
 ##  Specifies the path to a file that contains top-level domains (TLDs) that ##  Specifies the path to a file that contains top-level domains (TLDs) that
Zeile 1303: Zeile 1358:
  
 ##  RecordAllMessages { true | false } ##  RecordAllMessages { true | false }
-##   default "false"+##      default "false"
 ## ##
 ##  If set and "HistoryFile" is in use, all received messages are recorded ##  If set and "HistoryFile" is in use, all received messages are recorded
Zeile 1313: Zeile 1368:
  
 ##  RejectFailures { true | false } ##  RejectFailures { true | false }
-##   default "false"+##      default "false"
 ## ##
 ##  If set, messages will be rejected if they fail the DMARC evaluation, or ##  If set, messages will be rejected if they fail the DMARC evaluation, or
Zeile 1322: Zeile 1377:
 # #
 # RejectFailures false # RejectFailures false
 +# Django : 2014-03-24
 +RejectFailures true
  
 ##  ReportCommand string ##  ReportCommand string
-##   default "/usr/sbin/sendmail -t"+##      default "/usr/sbin/sendmail -t"
 ## ##
 ##  Indicates the shell command to which forensic reports should be passed for ##  Indicates the shell command to which forensic reports should be passed for
Zeile 1332: Zeile 1389:
  
 ##  RequiredHeaders { true | false } ##  RequiredHeaders { true | false }
-##   default "false"+##      default "false"
 ## ##
 ##  If set, the filter will ensure the header of the message conforms to the ##  If set, the filter will ensure the header of the message conforms to the
Zeile 1343: Zeile 1400:
  
 ##  Socket socketspec ##  Socket socketspec
-##   default (none)+##      default (none)
 ## ##
 ##  Specifies the socket that should be established by the filter to receive ##  Specifies the socket that should be established by the filter to receive
Zeile 1356: Zeile 1413:
 # #
 # Socket inet:8893@localhost # Socket inet:8893@localhost
 +# Django : 2014-03-19
 +Socket inet:10012@localhost
  
 ##  SoftwareHeader { true | false } ##  SoftwareHeader { true | false }
-##   default "false"+##      default "false"
 ## ##
 ##  Causes the filter to add a "DMARC-Filter" header field indicating the ##  Causes the filter to add a "DMARC-Filter" header field indicating the
Zeile 1366: Zeile 1425:
 # #
 # SoftwareHeader false # SoftwareHeader false
 +# Django : 2014-03-18
 +SoftwareHeader true
 +
 +##  SPFIgnoreResults { true | false }
 +##      default "false"
 +##
 +##  Causes the filter to ignore any SPF results in the header of the
 +##  message.  This is useful if you want the filter to perfrom SPF checks
 +##  itself, or because you don't trust the arriving header.
 +#
 +# SPFIgnoreResults false
 +
 +##  SPFSelfValidate { true | false }
 +##      default false
 +##
 +##  Causes the filter to perform a fallback SPF check itself when
 +##  it can find no SPF results in the message header.  If SPFIgnoreResults
 +##  is also set, it never looks for SPF results in headers and
 +##  always performs the SPF check itself when this is set.
 +#
 +# SPFSelfValidate false
 +# Django : 2014-04-28
 +SPFSelfValidate true
  
 ##  Syslog { true | false } ##  Syslog { true | false }
-##   default "false"+##      default "false"
 ## ##
 ##  Log via calls to syslog(3) any interesting activity. ##  Log via calls to syslog(3) any interesting activity.
 # #
 # Syslog false # Syslog false
 +# Django : 2014-03-18
 +Syslog true
  
 ##  SyslogFacility facility-name ##  SyslogFacility facility-name
-##   default "mail"+##      default "mail"
 ## ##
 ##  Log via calls to syslog(3) using the named facility.  The facility names ##  Log via calls to syslog(3) using the named facility.  The facility names
Zeile 1383: Zeile 1467:
  
 ##  TemporaryDirectory path ##  TemporaryDirectory path
-##   default /var/tmp+##      default /var/tmp
 ## ##
 ##  Specifies the directory in which temporary files should be written. ##  Specifies the directory in which temporary files should be written.
Zeile 1390: Zeile 1474:
  
 ##  TrustedAuthservIDs string ##  TrustedAuthservIDs string
-##   default HOSTNAME+##      default HOSTNAME
 ## ##
 ##  Specifies one or more "authserv-id" values to trust as relaying true ##  Specifies one or more "authserv-id" values to trust as relaying true
Zeile 1402: Zeile 1486:
  
 ##  UMask mask ##  UMask mask
-##   default (none)+##      default (none)
 ## ##
 ##  Requests a specific permissions mask to be used for file creation.  This ##  Requests a specific permissions mask to be used for file creation.  This
Zeile 1412: Zeile 1496:
 # #
 # UMask 077 # UMask 077
 +# Django : 2014-03-23
 +UMask 007
  
 ##  UserID user[:group] ##  UserID user[:group]
-##   default (none)+##      default (none)
 ## ##
 ##  Attempts to become the specified userid before starting operations. ##  Attempts to become the specified userid before starting operations.
Zeile 1421: Zeile 1507:
 # #
 # UserID opendmarc # UserID opendmarc
 +# Django : 2014-03-23
 +UserID opendmarc:dmarc
 </file> </file>
  
Zeile 1429: Zeile 1517:
 amavis.dmz.nausch.org amavis.dmz.nausch.org
 </file> </file>
 +Besonderen Augenmerk legen wir dabei auf folgende Parameter:
 +  * **AuthservID** Hier setzen wir den Namen unseres Mailservers.
 +  * **HistoryFile** Name und Pfad, in dem OpenDMARC die Statistikdaten ablegen wird.
 +  * **PidFile** Name und Pfad, in dem der Daemon sein PID-File ablegen soll.
 +  * **Socket** Über diesen Socket wird später unser Postfix-Mailserver den OpenDMARC-Daemon ansprechen.
 +  * **UserID** UserID und GroupID, die der Daemon beim Anlegen der Dateien //**HistoryFile**// und //**PidFile**// nutzen soll. So können wir später einfacher die Daten von den einzelnen MX-Hosts abholen:
  
 +Alle anderen Parameter definieren wir noch entsprechen der Gegebenheiten unserer Installation/Infrastruktur.
 +Einen kompakten Überblick über die gewählten Optionen fragen wir einfach mit folgendem Aufruf ab.
 +   # egrep -v '(^#|^$)' /etc/opendmarc.conf
 +
 +<code>AuthservID mx01.nausch.org
 +AuthservIDWithJobID true
 +ForensicReports true
 +ForensicReportsBcc postmaster@nausch.org
 +ForensicReportsOnNone true
 +ForensicReportsSentBy dmarc-admin@nausch.org
 +HistoryFile /var/run/opendmarc/opendmarc.dat
 +IgnoreHosts /etc/opendmarc/ignore.hosts
 +PidFile /var/run/opendmarc.pid
 +Socket inet:10012@localhost
 +SoftwareHeader true
 +Syslog true
 +UserID opendmarc:dmarc
 +</code>
 +
 +=== /etc/opendmarc/ignore.hosts ===
 +In der Datei **ignore.hosts** definieren wir die Hostnamen, oder IP-Adressen, die von der DMARC-Überprüfung und Bewertung ausgenommen werden sollen.
 +   # vim /etc/opendmarc/ignore.hosts
 +<file bash /etc/opendmarc/ignore.hosts># Django : 2013-03-20
 +# folgende Hosts sollen von der DMARC-Überprüfung und Bewertung ausgenommen werden.
 +localhost
 +amavis.dmz.nausch.org
 +</file>
 ==== mysql Konfiguration ==== ==== mysql Konfiguration ====
-<code>mysql> CREATE DATABASE opendmarc;+Eigentlich könnten wir nun schon unseren DMARC-Daemon starten. Jedoch wollen wir noch kurz die nötige mySQL-Datenbank anlegen, damit der Daemon die gewünschten aufbereiteten Statiskdaten und forensischen Berichte generieren und dann per eMail verschicken kann. 
 + 
 +Wir melden uns also als berechtigter Datenbankuser an der mySQL-Datenbank an.  
 +   # mysql -h localhost -u root -p 
 + 
 +<code>Enter password:  
 +Welcome to the MySQL monitor.  Commands end with ; or \g. 
 +Your MySQL connection id is 1942 
 +Server version: 5.1.67 Source distribution 
 + 
 +Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. 
 + 
 +Oracle is a registered trademark of Oracle Corporation and/or its 
 +affiliates. Other names may be trademarks of their respective 
 +owners. 
 + 
 +Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 
 + 
 +mysql> 
 +</code> 
 +Dort legen wir als aller erst einmal eine Datenbank mit dem Namen **opendmarc** an.  
 +   mysql> CREATE DATABASE opendmarc; 
 + 
 +Anschließend legen wir uns dann einen Datenbankuser an, dem wir entsprechende Rechte an der Datenbank **opendmarc** einräumen.  
 +   mysql> CREATE USER 'opendmarc_user'@'10.0.0.80' IDENTIFIED BY 'ALLHs6blVwd8eHoSk2J3WZsT'; 
 + 
 +  Query OK, 0 rows affected (0.00 sec) 
 + 
 +   mysql> CREATE USER 'opendmarc_user'@'vml000080.dmz.nausch.org' IDENTIFIED BY 'ALLHs6blVwd8eHoSk2J3WZsT'; 
 + 
 +  Query OK, 0 rows affected (0.00 sec) 
 + 
 +Anschließend setzen wir noch die Nutzerberechtigungen unseres Datenbanknutzers **opendmarc_user** für die Datenbank **opendmarc** 
 +   mysql> GRANT ALL PRIVILEGES ON opendmarc.* TO 'opendmarc_user'@'10.0.0.80' IDENTIFIED BY 'ALLHs6blVwd8eHoSk2J3WZsT' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0; 
 + 
 +  Query OK, 0 rows affected (0.00 sec)
  
-mysql> CREATE USER 'opendmarc_user'@'10.0.0.80' IDENTIFIED BY 'ALLHs6blVwd8eHoSk2J3WZsT';+  mysql> GRANT ALL PRIVILEGES ON opendmarc.* TO 'opendmarc_user'@'vml000080.dmz.nausch.org' IDENTIFIED BY 'ALLHs6blVwd8eHoSk2J3WZsT' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
  
-mysql> CREATE USER 'opendmarc_user'@'vml000080.dmz.nausch.org' IDENTIFIED BY 'ALLHs6blVwd8eHoSk2J3WZsT';+  Query OK, 0 rows affected (0.00 sec)
  
-mysql> GRANT ALL PRIVILEGES ON opendmarc.* TO 'opendmarc_user'@'10.0.0.80' IDENTIFIED BY 'ALLHs6blVwd8eHoSk2J3WZsT' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;+Zur Aktivierung weisen wir nun noch die Berechtigungen zu:  
 +  mysql> FLUSH PRIVILEGES;
  
-mysql> GRANT ALL PRIVILEGES ON opendmarc.* TO 'opendmarc_user'@'vml000080.dmz.nausch.org' IDENTIFIED BY 'ALLHs6blVwd8eHoSk2J3WZsT' WITH GRANT OPTION MAX_QUERIES_PER_HOUR MAX_CONNECTIONS_PER_HOUR MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;+  Query OK, rows affected (0.00 sec)
  
-mysql> FLUSH PRIVILEGES;+Abschließend melden wir uns wieder von unserem Datenbankhost ab.  
 +  mysql> quit
  
 +  Bye
  
 +Bevor wir die benötigten Tabellen anlegen, testen wir noch, ob der Zugriff von unserem Mail- bzw. Datenimportserver funktioniert.
 +   # mysql -h mysql.dmz.nausch.org -D opendmarc -u opendmarc_user -p
  
-[root@vml000080 ~]# mysql -h vml000030.dmz.nausch.org -D opendmarc -u opendmarc_user -p +<code>Enter password: 
-Enter password: +
 Welcome to the MySQL monitor.  Commands end with ; or \g. Welcome to the MySQL monitor.  Commands end with ; or \g.
 Your MySQL connection id is 2889 Your MySQL connection id is 2889
Zeile 1459: Zeile 1619:
 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  
-mysql> show databases; +mysql> 
-+--------------------++</code> 
 +   mysql> show databases; 
 +<code>+--------------------+
 | Database           | | Database           |
 +--------------------+ +--------------------+
Zeile 1467: Zeile 1629:
 +--------------------+ +--------------------+
 2 rows in set (0.00 sec) 2 rows in set (0.00 sec)
 +</code>
 +   mysql> quit
  
-mysql> quit +  Bye
-Bye+
  
 +Mit Hilfe der Datei //**/usr/share/doc/opendmarc-1.2.0/schema.mysql**// legen wir nun abschließend die Tabellen in der Datenbank **opendmarc** an.
 +   # mysql -h mysql.dmz.nausch.org -D opendmarc -u opendmarc_user -p < /usr/share/doc/opendmarc-1.2.0/schema.mysql
  
-# mysql -h vml000030.dmz.nausch.org -D opendmarc -u opendmarc_user -p < /usr/share/doc/opendmarc-1.2.0/schema.mysql +Auch hier können wir uns bei Bedarf noch überprüfen, welche Tabellen angelegt wurden. 
-Enter password: +   # mysql -h mysql.dmz.nausch.org -D opendmarc -u opendmarc_user -p
  
-# mysql -h vml000030.dmz.nausch.org -D opendmarc -u opendmarc_user -pEnter password: +<code>Enter password: 
 Reading table information for completion of table and column names Reading table information for completion of table and column names
 You can turn off this feature to get a quicker startup with -A You can turn off this feature to get a quicker startup with -A
Zeile 1491: Zeile 1656:
 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  
-mysql> show databases; +mysql> 
-+--------------------++</code> 
 +   mysql> show databases; 
 + 
 +<code>+--------------------+
 | Database           | | Database           |
 +--------------------+ +--------------------+
Zeile 1500: Zeile 1668:
 2 rows in set (0.00 sec) 2 rows in set (0.00 sec)
  
-mysql> use opendmarc; +mysql> 
-Database changed +</code> 
-mysql> show tables; +   mysql> use opendmarc; 
-+---------------------++ 
 +  Database changed 
 +  mysql> 
 + 
 +   mysql> show tables; 
 +<code>+---------------------+
 | Tables_in_opendmarc | | Tables_in_opendmarc |
 +---------------------+ +---------------------+
Zeile 1515: Zeile 1688:
 6 rows in set (0.00 sec) 6 rows in set (0.00 sec)
  
-mysql> quit +mysql>
-Bye +
 </code> </code>
-===== Programmstart =====+   mysql> quit
  
-   # service opendmarc start+  Bye
  
-  Mar 19 00:02:17 vml000080 opendmarc[13533]: OpenDMARC Filter v1.2.0 starting (args: -c /etc/opendmarc.conf -P /var/run/opendmarc/opendmarc.pid) +==== dbCollecting User einrichten ==== 
-  Mar 19 00:02:17 vml000080 opendmarc[13533]: trusted authentication services: mx01.nausch.org+Nicht immer möchte oder kann man von seinem oder seinen Mailservern eine Verbindung zum Datenbankhost ermöglichenUm jetzt nicht von jedem einzelnen MX-Server einzurichten, verwenden wir einen User, den wir zum Einsammeln der Daten degradieren.
  
 +Wir legen uns nun unseren Nutzer an. Als UID und GID verwenden wir eine entsprechend freie Nummer, die wir entsprechend vorher abprüfen.
 +   # grep 487 /etc/group
  
 +   # grep 487 /etc/passwd
 +
 +Anschließend legen wir uns unseren User an.
 +   # groupadd -g 489 dmarc && useradd dmarc -c "DMARC" -g 489 -u 489 -m
 +
 +Anschließend erzeugen wir uns noch einen entsprechenden SSH-Key und verteilen diesen auf unseren Mailservern. Entsprechende Schritte sind im Wiki [[https://dokuwiki.nausch.org/doku.php/centos:ssh-install|hier]] beschrieben.
 +
 +==== dbCollecting Script anlegen ====
 +Zum Einsammeln der Statistikdaten legen wir uns nun ein einfaches Shellscript an.
 +   # vim /usr/local/bin/dmarc-report>
 +<file bash /usr/local/bin/dmarc-report>#!/bin/sh 
 +# Script zum Importieren der DMARC-Daten aus dem lokalen cache-Datei in die mySQL Datenbank
 +# und Generieren der DMARC-reports 
 +# Das Script wird um 03:33 Uhr via cronjob aufgerufen.
 +#
 +# crontab
 +# einmal in der Nacht die DMARC-Statistikdaten abholen und die mySQL-Datenbank damit befüllen.
 +# 33 3 * * * /usr/local/bin/dmarc-report 1>/dev/null 2>&1
 +#
 +# Django : 2014-03-20 
 +
 +WORKDIR="/home/dmarc/"
 +WORKFILE="opendmarc_all_hosts.dat"
 +SSHKEYFILE=".ssh/id_rsa"
 +MXHOSTS="mx01.nausch.org mx02.nausch.org mx03.nausch.org"
 +DBFILE="opendmarc.dat"
 +DBHOST="mysql.dmz.nausch.org"
 +DBPORT="3306"
 +DBUSER="opendmarc_user"
 +DBPASSWD="ALLHs6blVwd8eHoSk2J3WZsT"
 +DBNAME="opendmarc"
 +
 +# DMARC Datenfile von den Mailservern abholen
 +cd $WORKDIR
 +for HOST in $MXHOSTS; do
 +    scp -i $WORKDIR$SSHKEYFILE dmarc@${HOST}:/var/run/opendmarc/$DBFILE ${HOST}.dat
 +    ssh -i $WORKDIR$SSHKEYFILE dmarc@${HOST} "/bin/cat /dev/null > /var/run/opendmarc/$DBFILE"
 +    cat ${HOST}.dat >> $WORKFILE
 +done
 +
 +# DMARC Daten in die mySQL-Datenbank opendmarc schreiben
 +/usr/sbin/opendmarc-import --dbhost=$DBHOST --dbport=$DBPORT --dbname=$DBNAME --dbuser=$DBUSER \
 +  --dbpasswd=$DBPASSWD < $WORKDIR$WORKFILE 
 +
 +# DMARC Statistik-Report erstellen
 +/usr/sbin/opendmarc-reports --dbhost=$DBHOST --dbport=$DBPORT --dbname=$DBNAME --dbuser=$DBUSER \
 +  --dbpasswd=$DBPASSWD --verbose --interval=86400 --report-email 'postmaster@nausch.org' --report-org 'nausch.org'
 +
 +# DMARC Datenbank aufräumen, Datensätze die älter als 90 Tage sind werden gelöscht
 +/usr/sbin/opendmarc-expire --dbhost=$DBHOST --dbport=$DBPORT --dbname=$DBNAME --dbuser=$DBUSER \
 +  --dbpasswd=$DBPASSWD --verbose --expire=90 
 +
 +# Work-Verzeichnis wieder aufräumen
 +cd $WORKDIR
 +rm $WORKDIR*.dat -rf
 +</file>
 +Anschließen setzen wir die Ausführungsrechte unseres neuen Scriptes.
 +   # chmod +x /usr/local/bin/dmarc-report
 +
 +Zu guter Letzt aktivieren wir dann noch einen Cronjob für die tägliche Ausführung.
 +   # vim /etc/crontab
 +<file bash /etc/crontab>...
 +
 +# Django : 2014-03-20
 +# einmal in der Nacht die DMARC-Statistikdaten abholen und die mySQL-Datenbank damit befüllen.
 +33 3 * * * /usr/local/bin/dmarc-report 1>/dev/null 2>&1
 +
 +...
 +</file>
 +
 +==== Postfix ====
 +Die Konfiguration auf Seiten unseres Postfix-Mailserver gestaltet sich relativ einfach, muss doch nur ein zusätzlicher [[http://www.postfix.org/postconf.5.html#smtpd_milters|Mailfilter]] angelegt werden. Hier geben wir dann den Port an, den wir bei der Konfiguration von [[centos:mail_c6:mta_13#opendmarc_konfiguration|OpenDMARC]] definiert haben.
 +   # vim /etc/postfix/main.cf
 +
 +<file bash /etc/postfix/main.cf>...
 +
 +# Django : 2014-03-19
 +# SPF-Check und DKIM-Signaturüberprüfung via SMF-SPF- und DKIM-Milter einbinden.
 +smtpd_milters =
 +# SMF-SPF-Milter   : 
 +   inet:127.0.0.1:10010,
 +# DKIM-Milter: 
 +   inet:127.0.0.1:10011,
 +# DMARC-Milter   : 
 +   inet:127.0.0.1:10012
 +
 +...
 +</file>
 +
 +===== erster manueller Programmstart =====
 +Nun ist es an der Zeit unseren DMARC-Daemon das erste mal zu starten.
 +   # service opendmarc start
 +Im /var/log/maillog wird der erfolgreiche Start ausreichend dokumentiert: 
 +  Apr 28 19:32:24 vml000080 opendmarc[28728]: OpenDMARC Filter: Opening listen socket on conn inet:10012@localhost
 +  Apr 28 19:32:24 vml000080 opendmarc[28729]: OpenDMARC Filter v1.3.0 starting (args: -c /etc/opendmarc.conf -P /var/run/opendmarc/opendmarc.pid)
 +  Apr 28 19:32:24 vml000080 opendmarc[28729]: trusted authentication services: mx01.nausch.org
 +
 +
 +Über den Port 10012 sollte nun unser daemon ansprechbar sein. Was wir auch sehr einfach mittels **lsof** überprüfen können:
    # lsof -i :10003    # lsof -i :10003
  
Zeile 1532: Zeile 1804:
   opendmarc 13533 root    3u  IPv4 115489      0t0  TCP localhost:documentum_s (LISTEN)   opendmarc 13533 root    3u  IPv4 115489      0t0  TCP localhost:documentum_s (LISTEN)
  
 +Auch mit Hilfe von **netstat** können wir abfragen, ob der Port **1003** in Verwendung ist.
 +   # netstat -tulpen | grep 10012
  
-   netstat -tulpen | grep 10003+  tcp        0      0 127.0.0.1:10012             0.0.0.0:                  LISTEN      0          115489     13533/opendmarc      
 + 
 +Anschließend können wir nun auch unseren Postfix-Mailserver durchstarten, damit die Änderungen an seiner [[centos:mail_c6:mta_13#postfix|Konfiguration]] auch wirksam wird. 
 + 
 +===== automatisches Starten des Dienste beim Systemstart =====  
 +Damit nun unser DMARC-Daemon beim Booten unseres Servers automatisch gestartet wird, nehmen wir noch folgende Konfigurationsschritte vor. 
 +   # chkconfig opendmarc on 
 + 
 +Anschließend überprüfen wir noch unsere Änderung: 
 +   # chkconfig --list | grep opendmarc 
 + 
 +  opendmarc       0:Aus   1:Aus   2:Ein   3:Ein   4:Ein   5:Ein   6:Aus
  
-  tcp        0      0 127.0.0.1:10003             0.0.0.0:                  LISTEN      0          115489     13533/opendmarc      
  
 ===== Logging / Mailheader ===== ===== Logging / Mailheader =====
 +Im Maillog werden entsprechend unserer zuvor festgelegten Konfiguration, vom DMARC-Daemon logeinträge erzeugt.
 +Folgender Logeintrag zeigt einen erfolgreiche DMARC-Überprüfung.
 +  Mar 23 22:46:01 vml000080 opendmarc[25914]: C198981: gmail.com pass
  
-  DMARC-Filter: OpenDMARC Filter v1.2.0 mx01.nausch.org D9B6D83 +Im Mailheader der Nachricht, wird dies auch entsprechend vermerkt. 
-  Authentication-Results: mx01.nausch.org/D9B6D83; dmarc=none header.from=piratenpartei-bayern.de+  DMARC-Filter: OpenDMARC Filter v1.2.0 mx01.nausch.org C198981 
 +  Authentication-Results: mx01.nausch.org/C198981; dmarc=pass header.from=gmail.com
  
 +Hat der Domainbetreiber keinen DMARC-Eintrag im DNS hinterlegt, sieht die betreffende Zeile im Maillog entsprechend so aus.
 +  Mar 19 00:22:36 vml000080 opendmarc[14508]: D9B6D83: piratenpartei-bayern.de none
  
 +Auch dies wird im Mailheader entsprechend vermerkt.
 +  DMARC-Filter: OpenDMARC Filter v1.2.0 mx01.nausch.org D9B6D83
 +  Authentication-Results: mx01.nausch.org/D9B6D83; dmarc=none header.from=piratenpartei-bayern.de
  
  • centos/mail_c6/mta_13.1395596339.txt.gz
  • Zuletzt geändert: 23.03.2014 17:38.
  • von django