DKIM - Domain Key Identified Mail - Wissensdatenbank

Die Seite wird erstellt Robert Holz
 
WEITER LESEN
DKIM - Domain Key Identified Mail - Wissensdatenbank
28.06.2020 14:42.                               1/32                         DKIM - Domain Key Identified Mail

DKIM - Domain Key Identified Mail

                         Zur Sicherstellung der Authentizität von E-Mail-Absendern wurde in 2004
                        von Yahoo ein Identifikationsprotokoll entwickelt, mit welchem die
                        Authentizität von E-Mail-Absendern sichergestellt werden kann. Dies wurde
                        vor allem mit dem Wunsch zur Eindämmung unerwünschter eMail wie
                        Phishing und/oder Spam konzipiert. Ursprünglich wurde DomainKeys unter
                        dem Titel Domain-Based Email Authentication Using Public Keys Advertised
in the DNS (DomainKeys) im RFC 4870 veröffentlicht. Im RFC 4871 wurde dies unter dem Titel
DomainKeys Identified Mail (DKIM) Signatures über- und in der aktuellen Version RFC 6376
weitergeführt.

DKIM basiert auf asymmetrischer Verschlüsselung, bei der eMails mit zwei Signaturen versehen
werden, die erste über ein paar Header-Zeilen der Nachricht und die zweite über den Mail-Body, also
dem Inhalt einer eMail. Die zugehörigen Prüfsummen werden in standardisierten DKIM-Signature-
Headern in der eMail eingetragen. Weitere Informationen hierzu findet man im RFC 4871 oder in der
Dokumentation von DKIM.org.

Der empfangende Mail-Server ist nun in der Lage, an Hand des öffentlichen Schlüssels diese Daten,
der im TXT-Record des Domain Name System (DNS) der Domäne abrufbar ist, die Daten zu
verifizieren. Ist diese Signatur gültig, ist der Absendeserver der eMail zweifelsfrei festgestellt. Bei
einem negativen Ergebnis hat nun der empfangende MTA1) die Möglichkeit, die Annahme der eMail zu
verweigern bzw. die empfangene Nachricht auszusortieren. Wie bereits erwähnt ist dies möglich, da
der sendende MTA jede versendete E-Mail im sogenannten „DomainKey-Signature-Header“ mit einer
digitalen Signatur des Inhaltes der E-Mail versieht. Der Domaininhaber (Sender) kann mit Hilfe von
ADSP2) festlegen, was der Empfänger beim Eingang einer eMail tun soll, sofern die DKIM-Signatur
gebrochen wurde. Diese Policy wird, wie der öffentliche DKIM-Schlüssel auch, über den DNS publiziert.
Weitere Informationen hierzu findet man im RFC 4871

Installation von AMaVIS

Zur Signierung und Überprüfung der empfangenen Daten nutzen wir bei unserem Mailserver-Postfix
die Möglichkeiten von AMaViS. Die Grundinstallation von AMaViS ist im Kapitel SPAM- und Virenschutz
Mechanismen mit Greylisting, policyd-weight, ClamAV, SpamAssasin und AMaVIS beschrieben. In
unserer Postofficeumgebung nutzen wir den AMaVis-Daemon in der Version amavisd-new-2.8.0.
Neben diesem Perl-Programm benötigen wir noch die beiden Pakete perl-Mail-DKIM und perl-
Crypt-OpenSSL-RSA welche bei der Installation von amavisd-new automatisch mitinstalliert wurden.

Bei der nachfolgenden Konfigurationsbeschreibung gehen wir davon aus, dass bereits ein
funktionierender Mailserver wie auch der Viren- und SPAM-Schutz mit Hilfe von AMaViS zur Verfügung
steht.

Konfiguration

Wertvolle Hinweise zur Konfiguration und Nutzung von DKIM entnimmt man am besten der original
AMaViS-Dokumentation Setting up DKIM mail signing and verification.

Linux - Wissensdatenbank - https://dokuwiki.nausch.org/
DKIM - Domain Key Identified Mail - Wissensdatenbank
Last update: 22.07.2019 15:06.               centos:mail_c6:mta_9 https://dokuwiki.nausch.org/doku.php/centos:mail_c6:mta_9

Überprüfung der DKIM-Signaturen

              WICHTIG: Möchte man später DMARC3), bei der Bewertung von SPF und DKIM
              einsetzen, einsetzen, so greift man zum Überprüfen der DKIM-Signaturen unserer
              Nachrichten auf das Paket OpenDKIM, einem MILTER4) zurück!

              Hintergrund ist, dass die einzelnen Header (SPF und DKIM) nur dann dem DMARC-Milter
              zur Verfügung stehen, wenn diese als MILTER eingebunden wurden. Einen Mix aus
              MILTER und AMaViS als smtpd_proxy_filter in Postfix wird hier unweigerlich Fehlschlagen,
              da es ein Problem ist, wenn die Header dann an unterschiedlichen Zeitpunkten bei der
              eMailverarbeitung eingefügt werden und so für den nächsten Verarbeitungsschritt nicht
              *sichtbar* sind.

              Wollen wir also später DMARC bei der Mailverarbeitung einsetzen, übersprigen wir die
              nachfolgende Konfiguration für die Signaturprüpfung durch AMaViS und setzen dafür
              dann OpenDKIM ein. Die Installation und Konfiguration von OpenDKIM ist in dem
              Absatz hier beschrieben.

Damit unsere AMaViS-installation die Überprüfung von DKIM-Signaturen im Mailheader vornimmt
bedarf es keiner großen Konfiguration. Wie in der Originaldoku von Marc Martinec zu entnehmen ist,
müssen wir lediglich die Variable $enable_dkim_verification setzen, in dem wir ihr den Wert 1
zuweisen.

  # vim /etc/amavisd.conf

...

$enable_dkim_verification = 1;                                           # enable DKIM signatures
verification

...

Anschließend starten wir den Dämon einmal durch.

  # service amavisd condrestart

Shutting down Mail Virus Scanner (amavisd):                                                 [     OK     ]
Starting Mail Virus Scanner (amavisd):                                                      [     OK     ]

Bekommen wir nun eine eMail mit einer DKIM-Signatur im Mail-Header, so können wir diese
Headerzeile im Quelltext der Nachricht sehen:

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=nausch.org; h=
    content-transfer-encoding:content-type:content-type:subject
    :subject:mime-version:user-agent:from:from:date:date:message-id
    :received:received; s=140224; t=1393867197; x=1395681598; bh=sCU
    xtMjFEZ3m2MycmeHx9n/S11f5YgqlMUgftS5R4gg=; b=NoF26JrAH2qzT1u+xVp
    mIOxrFZDt6BYSff5t0wF1LAQxYTcjCun/FageediXMTzOYFeX644/PZ3TCjsEeow

https://dokuwiki.nausch.org/                                                                    Printed on 28.06.2020 14:42.
28.06.2020 14:42.                               3/32                        DKIM - Domain Key Identified Mail

       AXjPbpXTNCVODBzh2elVHhtwHCmbOfbqISCBrd6xBVlzOHloYJB/UVd8ilAw7Bdr
       G51wyKxZS5UyWKpd0l8KXijMQSZUcAY8RYk+glKWEl3D3aZTiKH4O0YhvsvM30YC
       0qW+k4uTph+gNJkyxxRHLQOGkD6xlaoiHOrTutTCapRJp25TJWKMHBmg6qcNrZFH
       Pfh6GUMfqISKnjjVQ6VOKISLLmz+bRnWoPWEiPw07LFL91XAkMtKzEhsDT6uaVsr
       9or/xKARDL6Yhlbi23nT/mrWA0mWrkmnIZxDHnYOTHhWVeU1Pa3gVqJV5AWS7QNF
       h5szXnn1M3poFEBh9nhqo8hyZaYLHbP1gGctmajftkGmHruGfxULwhitacpCbGa0
       iYeoI9RY9uETcN6EuKd9dguSm3oOVPO77J69fp1CiPCItgtBL9CpoD3YZyQ/fMas
       IZPH1w7fC1XZZW5KQSHUO0sPbhBup3vn9Gjany70sZwnFNqA9qs7gEOsWA9mFACw
       6TOst7Q781eMkfWNlIo39v75OspUxGteOFZ4VZSthhN/QXBvndBOhYpOGYVuYZKv
       +AI/2fSj9BuLnp+nVem2aL4Y=

Unser AMaViS-Daemon kann nun mit Hilfe des Public-Keys des absendenden Mailservers überprüfen,
ob dieser Eintrag gültig, die Nachricht also nicht manipuliert wurde. Bei einem positivem
Prüfungsergebnis vermerkt unser AMaViS-Daemon dies mit einer entsprechenden neuen Header-
Zeile.

Authentication-Results: mx1.piratenpartei-bayern.de (amavisd-new);
    dkim=pass (4096-bit key) header.d=nausch.org

Generierung von DKIM-Signaturen

Wie Eingangs bereits erwähnt, wird bei den DKIM-Signaturen auf asymmetrischer Verschlüsselung
zurück gegriffen. Wir benötigen also ein Schlüsselpaar aus public- und private-key. Bevor wir diese
erzeugen, legen wir uns das Zielverzeichnis für unseren privaten Schlüssel an und passen die
Berechtigung so an, dass dieses Verzeichnis unserem User amavis „gehört“:

  # mkdir /var/amavis/dkim

  # chown amavis:amavis /var/amavis/dkim

Im nächsten Schritt erstellen wir uns nun unser Schlüsselpaar. Dazu benutzen wir die Option genrsa
des Befehls amavisd:
amavisd genrsa file_name [nbits] Beim Dateinamen vermerken wir dabei am einfachsten
das Erstellungsdatum YYMMDD (Jahr+Monat+Tag, z.B. 140228 für 28. Februar 2014). So haben wir
es später einfacher, die einzelnen Schlüssel auseinander zu halten, wenn wir mehrere benötigen, oder
einzelne Schlüssel für ungültig erklären (revoke'n). Diesen Datums-Stempel verwenden wir dann auch
als selector bei der nachfolgenden AMaViS-Konfiguration.

  # amavisd genrsa /var/amavis/dkim/dkim-key-140228.pem 4096

Private RSA key successfully written to file "/var/amavis/dkim/dkim-
key-140228.pem" (4096 bits, PEM format)

Alternativ können wir auch openssl zum Erstellen des Schlüssel verwenden.

  # openssl genrsa -out /var/amavis/dkim/dkim-key-140228.pem 4096

Linux - Wissensdatenbank - https://dokuwiki.nausch.org/
Last update: 22.07.2019 15:06.           centos:mail_c6:mta_9 https://dokuwiki.nausch.org/doku.php/centos:mail_c6:mta_9

Generating RSA private key, 4096 bit long modulus
...................++
...................................++
e is 65537 (0x10001)

Haben wir unseren Schlüssel mit Hilfe von openssl erzeugt, passen wir die Dateiberechtigungen und
Rechte unseres erstellen Schlüssels an.

  # chmod 600 /var/amavis/dkim/dkim-key-140228.pem

  # chown amavis:amavis /var/amavis/dkim/dkim-key-140228.pem

In unserem zuvor Schlüssel-Verzeichnis befindet sich nun der erstellte private Schlüssel.

  # ll /var/amavis/dkim/

-rw------- 1 amavis amavis 3243 Feb 28 21:53 dkim-key-140228.pem

In dieser Datei befindet sich nun der private key.

  # cat /var/amavis/dkim/dkim-key.pem

-----BEGIN RSA PRIVATE KEY-----
MIIJKQIBAAKCAgEAuJ3/CruOs3fCU0ujOStcNN85TJh+5HvMa9m99C5XuRBlxOr+
fp5BeIEtiPO0szKvvPojwrueCq0oOuEzjR/i2ObpRkzKRUXmAa0qVezUZwQIbKei
uKII0PnpQclDrmQrzSXcQWPT57tkPg17Q9WamFUUaHeN3+pVGtMyjYekRaAoRlV+
a1gD111kXMPhiaFTMIncoRBS/gYN8FjfekH+ezqbLHLB8DLJQBZEGUILvJjAHX07
22XyqYtkn1qfv63nPRGw/qqAW1072Gchq4ZS4ZPQ89SrK4KcHt/XptSlztXMWtmR
FQriHdvbjr1Fx7ZwXdTQ+ik2AUZLMdhMrQe6/1GujQiMD6po81NpYbrjnfd+QF4s
Ubus4wPQKVNzsctiuzGlWsFexSHP4dAZtKnImJhVDnzZODQy0nSafedlr5g4VR36
vgm0YPWjSyRNnC/APHyw0DtHIrzTqfKuDeGv80uMPbEdujrw9gLbK3H8ow42iTic
mgPgT3J5j70ZOo4o4FMtpZ/AEQw+VnWpSfw7bkMjufLc29XHbtp22wfgq2Lmarr3
+psaHokFaQrImkMbzdSL9CdabkLptanAilLScvq8UaKVC+G1+vHDgaweq3BhXD5+
YcJnJlp4msUqqxGYlnx4RSvv8PipMU2DsVFbNJSH5NJuS7GuzplNg+f20ysCAwEA
AQKCAgAY4qM4TSPlKSV2mOF9mUyqi9RrcLraDZ32g7lJKt4EQiOVsZ9wbeChX7hF
l6Qp65Eoxgb//s5E3iZoGWcbhMrNNgMHyN4TDGL+otrsDiprYG3KR6Z1gNHzaVx5
06ld3n7Q/mN8JPqxZ98RRjvxXt+h3QYNNuBW6H1kSkesMDaCdB45rNiHm6uY4ivf
HUBPjwFpr4uf4lVtjF9goHovPqoQ7ktwaF+gAxiBnP688NwoJebvkqv43Psiw3li
yZJzAfwDjVjwWwdGSYEBoJU3S7nsUkJ+O5J/IPHub3ngMRXQlZ0gOeeGkJr+L16f
FQBM9VicLU2mCtwOu+zy4Rck07/u4/Xkqnq5cNLbc0a1AYU6UDikB3yrG1QeupGg
/0M11D/4qDJ8hVK8Sl72SEWMnbkLh5YZEOoKE83C4uQ79yMnbSADXHJfUHmnO6O8
aDlCaMoRKw+Dj4n90/d3R-m4i153rV3R-gURu+p8UXtpz19zXK9nxsBsI1bl/63M
4y0VMba8UjgtSz2rzrjO2BkN4g/p3k1wmgyxAorJeyZRcNpG+HdBf4jMo5j8f+Jd
BlZgjFx0d69v3hToHfWd6Un4yc1+KDsyB1uNwuA1zs5lVX5QGba5LgYhNPUWmhQ/
3Vj2hG7Pp4FpK1UcnwoyX8YqK0/NJICqkwu+kDUDLHapgnVawQKCAQEA2YR/pVc4
CXEyxwwCfV5Q6qtHdgHGXwKfMikQl86YmDy2DLGTSojQW8BZmlCAxDqmaWit0DN8
TEGoM+hkVenz5ebG+SVFGGdQEh+urrRCHkrBIAGiNMHhh0ecKud2z7Pc+nxSDdKS
8QPko+wnAzG/WKNkl73Wvx06UqnbBqMSiG6SKjdtH2Kh2wXb5KT5PQYY112W4JIi
53PVQMbgwFdRaJyy1WmCro0OaIs/6bJPWIKuKdSw35fC6/lgQsC7elD5p0XrdcpN
MuYJJOg0L8GYvIqO5+AIR5tCkutbd5yAEmLoHN6/IwDrt69YV1yLg27N09a/RJbI

https://dokuwiki.nausch.org/                                                               Printed on 28.06.2020 14:42.
28.06.2020 14:42.                               5/32                       DKIM - Domain Key Identified Mail

uTkQmtpaJBgzcQKCAQEA2UdrNeaoz9jaRxm6HJgGtIbO8RJM/9bGYMxgSP+KAGIY
nQIEF/rxySdzIrkBuewIiWgKdjFiP+1DCi7M6IDu3YNxYik6f1Pp2HlZ7MUmT3XF
3Tm2RjnR33eCknoicohzEj5tSKFzshCqDDlv1sm9e32+eO5xjgx59EpxvjqQnP/4
PR3gxSIOGfYwAaHJnV3n/YAKKhM52f09+IMouk0javOYDg96Se6acnZszcLOv8vQ
FiwtRTAWiV6wbY1H7SFwWb2fMINsmh9E4eOz17cmwVHDSjxOnCvwUpFsAAqqWRBa
jqFxumSApErGEW97E1ucAdeZemqtki0yY3mnu6wqWwKCAQEAwjVNCsDu5W9OWO3e
IzVcpcm7ih9XkGj03oJPsFrjX7mFCZxa2AeDkQgSeHc8IPgEsMSnu+bcKfHNTltF
infSLgh4yuZ95KYJlcT34EBNcGJqQDt1KgmZZYGIa74yFIyQ1oy9bl3+mHZTZBBr
XKzEHU31eI4k+IoOEtRZHHnpCCtBEbRfF9CmlrmKdYDej5+r+k4zcdrIk0KWurlW
3iSYKQEPowALj/GdVbZOoEd2FJ7JBcxDB7+mZ65GRhNy0GkQHkuNSaQQfUtqCqvQ
PHtr9Zr4sQsUGWsEa8z747W1m7T3bR9sJMKjs2M5Svb0EauS1ns8Vu8R1F6g9sHS
DbwV4QKCAQEAiMguFOOdOCNy3jmy8Rc/eVw4YIi90n05q2xd3PaJwM4AYq8HNrVy
ish78cr37DxL73yAwYE7MbVCc+Gce23XcbmyojIEMm34E5/pXWWLRZCFvEv9lF4H
4h8RIvcidB3qglse0N6IQ/9gUrCHywypsGOV5DRvZhYym/hVfITPzxZRBuCNRGy4
5d0WwaBBFQEt72cwfuZVkAadgZnIBOhUuJqbCZbyzCIaNp6Yxjux/gnneF3dLeYk
+duTQ5QiSIS5frUhxt+leazfpzi6Wb1h92dqgoxOjIAYrVIA5FHShXkHGS1HNCja
1xJ/eDBvEXOlVX+NjgQkOpabVwYZ8spiawKCAQAI30WzWHPLcFHOhaIIRr7VlUv5
IR96T95H+c0a5JzNFhSOwxnqCWOtTmUnlaJcFwbREYl2mrImjht44Tz3bNjQlGqr
04WUf1VExh1WRfRGlT8LWuSLgVDHrI6M5yl5sefzILqogHaiEAvKbaTlIowD8hbR
MJGE0QdJKZNU/+dPO5w/0Rnq2kY54OJhSWZE0Z6zWqMQa3komnqQAXnlvHaUshjy
0M8oJ2zG8LEvqJllsjIU3orVPPfkuenWkn3cGQhx1xZIEEaLo1YC8eyAGW2OkKMP
OMrxmovD66O4MuPCnnPfcftE1e80Gi/UgxiVrdGOqx8BZ/AmChdWFZx5ZrVF
-----END RSA PRIVATE KEY-----

Den ersten Teil unserer Konfiguration haben wir schon erledigt. Nun weisen wir unseren AMaViS-
Daemon an unsere ausgehenden Nachrichten mit einer DKIM-Signatur zu versehen. Hierzu tragen wir
folgende Zeilen ein.

amavisd.conf

        ...

        $enable_dkim_signing = 0;    # load DKIM signing code, keys defined by
        dkim_key
        dkim_key('nausch.org', '140228', '/var/amavis/dkim/dkim-key-140228.pem
        ', h=>'sha256'); # Nausch.org's Mailserver DKIM-Schluessel
        @dkim_signature_options_bysender_maps = (
            { '.' => { ttl => 21*24*3600, c => 'relaxed/simple' } } # catchall
        defaults
                                                );

        ...

             Die Variable $enable_dkim_signing setzen wir erst noch auf den Wert 0, da wir
             unseren public-key erst noch auf dem für uns zuständigen Nameserver einen
             entsprechenden DNS-Eintrag hinterlegen müssen, sprich wie müssen den public-key

Linux - Wissensdatenbank - https://dokuwiki.nausch.org/
Last update: 22.07.2019 15:06.              centos:mail_c6:mta_9 https://dokuwiki.nausch.org/doku.php/centos:mail_c6:mta_9

              veröffentlichen. Anderenfalls würde AMaViS- bereits jetzt schon Nachrichten Signieren,
              die dann aber vom Empfänger nicht geprüft werden können. Schlimmstenfalls würde das
              zu bounces oder rejects führen!

Die Angaben der Schlüsselparameter im obigen Beispiel haben folgende Bedeutungen:

       nausch.org = Maildomäne, bei die der Schlüssel verwendet werden soll
       140228 = Selector: Der Selector wird zusammen mit der Kennung _domainkey und dem
       Maildomänen-Namen vom empfangenen Mailserver benutzt, um über einen TXT-Abfrage des
       DNS-Records den verwendeten public-key zu erfragen. Bei obigen Beispiel wäre das demnach
       140228._domainkey.nausch.org
       /var/amavis/dkim/dkim-key-140228.pem = Name und Pfad unseres privatekey .
       h⇒'sha256' = Über die Optionen/tags (RFC 4871 Abschnitt 3.6) kann z.B. Einfluß auf die
       Signatur genommen werden. Nähere Informationen hierzu entnimmt man entweder dem RFC
       5672 oder der Doku von Marc Martinec.

Über das Array @dkim_signature_options_bysender_maps können ferner Standardwerte für
Signatur-Tags überschrieben werden. Dies kann per Sender(Domäne) erfolgen, oder wie im obigen
Beispielals „catch all“ für alle Absender. Über den Parameter ttl kann defniert werden, wie lange eine
Signatur nach Erstellung als gültig erachtet werden soll - in unserem Beispiel also 3 Wochen. Der
Parameter c definiert, wie Amavis die zur Signierung herangezogenen Daten ggf. umeschrieben
werden sollen. Detailierte erklärungen hierzu entnimmt man dem Kapitel 3.5 The DKIM-Signature
Header Field bzw. dem Kapitel 3.4. Canonicalization.

Haben wir noch weitere virtuelle Mailserver am laufen, können wir durch nachfolgende exeplarische
Zeilen erreichen, dass auch diese Nachrichten mit unserem DKIM-Signatur versehen werden können.

amavisd.conf

        ...

        dkim_key('nausch.org', '140228', '/var/amavis/dkim/dkim-key-140228.pem
        ', h=>'sha256');
        dkim_key('omni128.de', '140228', '/var/amavis/dkim/dkim-key-140228.pem
        ', h=>'sha256');
        dkim_key('ebersberger-liedersammlung.de', '140228',
        '/var/amavis/dkim/dkim-key-140228.pem
        ', h=>'sha256');

        ...

Betreiben wir einen Mailserver für viele Domänen, so kann selbst das händische Pflegen der Domänen
in den verschiedenen Konfigurationsdateien zum nervigen und fehleranfälligem Zeitvertreib werden.
Abhilfe schafft hier eine zentrale Datei, in der alle lokalen Maildomänen enthalten sind. Diese Datei
erstellen wir einmal per Hand z.B. mit unserem Editor der Wahl.

# vim /etc/postfix/all_local_domains_map

omni128.de

https://dokuwiki.nausch.org/                                                                  Printed on 28.06.2020 14:42.
28.06.2020 14:42.                               7/32                        DKIM - Domain Key Identified Mail

nausch.org
it-ignorant.de
it-ignorant.org
wetterstation-pliening.info
ebersberger-liedersammlung.de

Hat man sehr viele Maildomänen, pflegt man seine virtuellen Maildomänen oft mit Hilfe von
postfix.admin. Die Installation und Konfiguration von postfix.admin ist im Kapitel Postfixadmin zur
Verwaltung des Dovecot-IMAP-Server unter CentOS 6.x detailiert beschrieben.

Über ein kleines Script erzeugen wir die oben gezeigte Konfigurationsdatei
/etc/postfix/all_local_domains_map.

  # vim /usr/local/bin/generate_local_domains_maps

/usr/local/bin/generate_local_domains_maps

        #!/usr/bin/perl
        # Perl-script zum Erstellen der Datei
        /etc/postfix/all_local_domains_map mit den
        # Daten aus der mySQL-Datenbank "postfix" von postfix.admin
        # Wir verbinden uns dabei mit dem User "amavisd_systemuser" und dem
        Passwort "Dj4n90_d3r_m4i153rv3r_guru"
        # mit der Datenbank "postfix" auf dem mySQL-Datenbank-Server
        "mysql.dmz.nausch.org"
        # Django : 2014-02-10
        #
        use DBI;
        use strict;
        my $config = "/etc/postfix/all_local_domains_map";
        my $dbh =
        DBI->connect("dbi:mysql:database=postfix;host=mysql.dmz.nausch.org:3306
        ;user=amavisd_systemuser;password=Dj4n90_d3r_m4i153rv3r_guru") || die
        "Cannot connect to database\n", $DBI::Errstr;

        my $sth = $dbh->prepare("select domain from domain where active =
        '1'");

        $sth->execute || die "failed to execute:\n ", $DBI::Errstr;

        open (FH, "> $config") || die "Cannot open file\n";
        while (my @row = $sth->fetchrow_array) {
            print FH join(', ', @row), "\n";
        }
        close FH;
        $dbh->disconnect;

Anschließend tragen wir in der /etc/crontab nachfolgende Zeile ein: 0 * * * * root
/usr/local/bin/generate_local_domains_maps

Linux - Wissensdatenbank - https://dokuwiki.nausch.org/
Last update: 22.07.2019 15:06.          centos:mail_c6:mta_9 https://dokuwiki.nausch.org/doku.php/centos:mail_c6:mta_9

  # vim /etc/crontab

/etc/crontab

        ...

        # Django : 2014-02-10
        # jede Stunde alle Maildomains in configfile für amavisd schreiben
        0 * * * * root /usr/local/bin/generate_local_domains_maps

        ...

In der AMaViS-Konfigurationsdatei /etc/amavisd.conf tragen wir nun noch nachfolgende
Konfiguration ein.

  # vim /etc/amavisd.conf

/etc/amavisd.conf

        ...

        # Django : 2014-02-28
        # DKIM-Keys für automatisch generierte Domainliste definieren
          open(filehandle,'/etc/postfix/all_local_domains_map')
            or die "Can't open domain-list-file: $!";
               while ()
                     {
                       chomp; s/\s*#.*$//; next if $_ eq '';
                       dkim_key($_, '140228', '/var/amavis/dkim/dkim-
        key-140228.pem', h=>'sha256');
                     }
          close(filehandle) or die "Can't close domain-list-file: $!";

        # Django : 2014-02-07
        #@local_domains_maps = ( [".$mydomain"] );      # list of all local
        domains
        @local_domains_maps = ( read_hash("/etc/postfix/all_local_domains_map")
        );

Damit AMaViS ausgehende eMail auch signieren kann, muss der Deamon natürlich wissen, welche
Domains „local“ sind und welche Nachrichten nach extern verschickt werden, kurz handelt es sich um
einen legitimen Sender. Hierzu setzen wir noch den Parameter @mynetworks. Dieses Array definiert
eine Liste von IP-Adressen bzw. Netzwerksegmente, die AMaViS als internen Server/Sender, also dem
Mailserver zugeordnete Maschinen, betrachten soll.

Wir tragen also in unserer Konfigurationsdatei /etc/amavisd.con die betreffenden Adressbereiche
ein, sofern wir das bei der Grundkonfiguration von AMaViS nicht bereits erledigt haben.

https://dokuwiki.nausch.org/                                                              Printed on 28.06.2020 14:42.
28.06.2020 14:42.                               9/32                        DKIM - Domain Key Identified Mail

  # vim /etc/amavisd.conf

/etc/amavisd.conf

        ...

        # Django : 2012-05-21
        # @mynetworks = qw( 127.0.0.0/8 [::1] [FE80::]/10 [FEC0::]/10
        #                   10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 );
        @mynetworks = qw( 127.0.0.0/8 10.0.0.0/24 10.0.10.0/26 );

        ...

Somit haben wir alle internen Sender hinreichend qualifiziert, was noch fehlt sind nun alle externern
mobilen Klienten, die in der Regel von dynamischen IP-Adressen aus ihre Nachrichten einliefern. Diese
IP-Adressen können natürlich unmöglich unserem Array @mynetworks zugeschlagen werden. In den
seltensten Fällen wird die entsprechende IP-Adresse „sauber“ sein, sondern wir bereits auf vielen
Blacklist gelandet sein, bzw. der ISP hat die entsprechenden IP-Adressbereiche von sich aus an
Dienste wie SPAMHAUS gemeldet haben.

Für diese Nutzer haben wir auf unserem Postfix-Mailserver den Submission-Port 587 eingerichtet. Das
besondere an diesem Port ist die zwingende Notwendigkeit, dass sich der Sender vor dem Einliefern
zwingend mit SMTP-Authentifizierung identifizieren muss. Nähere Informationen hierzu findet man im
RFC 4409. Wir können also einem erfolgreich authentifizierten Klient eine ähnliche Vertrauensstellung
gewähren, wie einem Sender aus dem eigenen Netzwerk!

Haben wir die Einrichtung des Submission-Ports auf Seiten unseres Postfix-Servers noch nicht
vorgenommen, holen wir diesen wichtigen Schritt nun nach. Hierzu aktivieren wir die bereits
vorgefertigte Konfig in der master.cf und passen diese noch entsprechend an.

  # vim /etc/postfix/master.cf

/etc/postfix/master.cf

        ...

        # Django : 2013-02-15
        # # Submission auf Port 587 geöffnet
        submission inet n       -       n       -       -       smtpd
                  -o smtpd_tls_security_level=encrypt
                  -o smtpd_sasl_auth_enable=yes
                  -o mydestination=lists.nausch.org,fax.nausch.org
                  -o
        smtpd_client_restrictions=permit_mynetworks,permit_sasl_authenticated,r
        eject
                  -o smtpd_etrn_restrictions=reject
                  -o smtpd_proxy_filter=amavis.dmz.nausch.org:10026
                  -o milter_macro_daemon_name=ORIGINATING

Linux - Wissensdatenbank - https://dokuwiki.nausch.org/
Last update: 22.07.2019 15:06.           centos:mail_c6:mta_9 https://dokuwiki.nausch.org/doku.php/centos:mail_c6:mta_9

        # Django : 2013-02-15
        # HTPPS auf Port 465 geöffnet
        smtps     inet n        -       n       -       -       smtpd
                  -o smtpd_tls_security_level=encrypt
                  -o smtpd_tls_wrappermode=yes
                  -o smtpd_sasl_auth_enable=yes
                  -o
        smtpd_client_restrictions=permit_mynetworks,permit_sasl_authenticated,r
        eject
                  -o smtpd_etrn_restrictions=reject
                  -o smtpd_proxy_filter=amavis.dmz.nausch.org:10026
                  -o milter_macro_daemon_name=ORIGINATING
        ...

Anschließend starten wir unseren Postfix-Mailserver einmal durch.

  # service postfix condrestart

Shutting down postfix:                                                                  [     OK     ]
Starting postfix:                                                                       [     OK     ]

Nun müssen wir unserem AMaViS-Daemon noch so konfigurieren, dass dieser auch auf dem Port
10026 lauscht und die Nachrichten die auf diesem port eingehen einer spezielen policy_bank
zuordnet. Dies ist nicht sonderlich aufwändig, da in der etc/amavisd.conf für die policy-bank
ORIGINATING fast alles schon vorbereitet ist.

  # vim /etc/amavisd.conf

/etc/amavisd.conf

        ...

        # Django : 2014-02-10
        # default: $inet_socket_port = 10024;
        #$inet_socket_port = 10024;   # listen on this local TCP port(s)
        $inet_socket_port = [10024,10026]; # listen on multiple TCP ports

        ...

        # it is up to MTA to re-route mail from authenticated roaming users or
        # from internal hosts to a dedicated TCP port (such as 10026) for
        filtering
        $interface_policy{'10026'} = 'ORIGINATING';

        $policy_bank{'ORIGINATING'} = { # mail supposedly originating from our
        users
          originating => 1, # declare that mail was submitted by our smtp
        client
          allow_disclaimers => 1, # enables disclaimer insertion if available

https://dokuwiki.nausch.org/                                                                Printed on 28.06.2020 14:42.
28.06.2020 14:42.                              11/32                         DKIM - Domain Key Identified Mail

           # notify administrator of locally originating malware
          virus_admin_maps => ["virusalert\@$mydomain"],
          spam_admin_maps => ["virusalert\@$mydomain"],
          warnbadhsender    => 1,
           # forward to a smtpd service providing DKIM signing service
           #forward_method => 'smtp:[127.0.0.1]:10027',
           # force MTA conversion to 7-bit (e.g. before DKIM signing)
          smtpd_discard_ehlo_keywords => ['8BITMIME'],
          bypass_banned_checks_maps => [1], # allow sending any file names and
        types
          terminate_dsn_on_notify_success => 0, # don't remove NOTIFY=SUCCESS
        option
        };

        ...

Damit AMaVis nun Kenntnis von unseren Änderungen erfährt, starten wir diesen einmal durch.

  # service amavisd restart

Shutting down Mail Virus Scanner (amavisd):                                   [     OK    ]
Starting Mail Virus Scanner (amavisd):                                        [     OK    ]

öffentlichen Schlüssel

Damit wir den unseren öffentlichen Schlüssel via DNS veröffentlichen können, lassen wir uns den
public-key unseres DKIM-keys am besten mit Hilfe des Befehls amavisd ausgeben.

  # amavisd showkey nausch.org

; key#2, domain nausch.org, /var/amavis/dkim/dkim-key_140224.pem
140224._domainkey.nausch.org.   3600 TXT (
  "v=DKIM1; p="
  "MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAuJ3/CruOs3fCU0ujOStc"
  "NN85TJh+5HvMa9m99C5XuRBlxOr+fp5BeIEtiPO0szKvvPojwrueCq0oOuEzjR/i"
  "2ObpRkzKRUXmAa0qVezUZwQIbKeiuKII0PnpQclDrmQrzSXcQWPT57tkPg17Q9Wa"
  "mFUUaHeN3+pVGtMyjYekRaAoRlV+a1gD111kXMPhiaFTMIncoRBS/gYN8FjfekH+"
  "ezqbLHLB8DLJQBZEGUILvJjAHX0722XyqYtkn1qfv63nPRGw/qqAW1072Gchq4ZS"
  "4ZPQ89SrK4KcHt/XptSlztXMWtmRFQriHdvbjr1Fx7ZwXdTQ+ik2AUZLMdhMrQe6"
  "/1GujQiMD6po81NpYbrjnfd+QF4sUbus4wPQKVNzsctiuzGlWsFexSHP4dAZtKnI"
  "mJhVDnzZODQy0nSafedlr5g4VR36vgm0YPWjSyRNnC/APHyw0DtHIrzTqfKuDeGv"
  "80uMPbEdujrw9gLbK3H8ow42iTicmgPgT3J5j70ZOo4o4FMtpZ/AEQw+VnWpSfw7"
  "bkMjufLc29XHbtp22wfgq2Lmarr3+psaHokFaQrImkMbzdSL9CdabkLptanAilLS"
  "cvq8UaKVC+G1+vHDgaweq3BhXD5+YcJnJlp4msUqqxGYlnx4RSvv8PipMU2DsVFb"
  "NJSH5NJuS7GuzplNg+f20ysCAwEAAQ==")

Alternativ können wir auch hier den public-key mittels openssl erstellen und auf die Platte schreiben
lassen.

Linux - Wissensdatenbank - https://dokuwiki.nausch.org/
Last update: 22.07.2019 15:06.              centos:mail_c6:mta_9 https://dokuwiki.nausch.org/doku.php/centos:mail_c6:mta_9

 # openssl rsa -in /var/amavis/dkim/dkim-key_140224.pem -out
/var/amavis/dkim/dkim-key_140224_public.pem -pubout -outform PEM

  writing RSA key

Die Dateiberechtigung passen wir entsprechend an:

  # chmod 600 /var/amavis/dkim/dkim-key_140224_public.pem

Die Schlüsseldatei enthält nun den public-key für unsere DKIM-Konfiguration.

  # cat /var/amavis/dkim/dkim-key_140224_public.pem

-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAuJ3/CruOs3fCU0ujOStc
NN85TJh+5HvMa9m99C5XuRBlxOr+fp5BeIEtiPO0szKvvPojwrueCq0oOuEzjR/i
2ObpRkzKRUXmAa0qVezUZwQIbKeiuKII0PnpQclDrmQrzSXcQWPT57tkPg17Q9Wa
mFUUaHeN3+pVGtMyjYekRaAoRlV+a1gD111kXMPhiaFTMIncoRBS/gYN8FjfekH+
ezqbLHLB8DLJQBZEGUILvJjAHX0722XyqYtkn1qfv63nPRGw/qqAW1072Gchq4ZS
4ZPQ89SrK4KcHt/XptSlztXMWtmRFQriHdvbjr1Fx7ZwXdTQ+ik2AUZLMdhMrQe6
/1GujQiMD6po81NpYbrjnfd+QF4sUbus4wPQKVNzsctiuzGlWsFexSHP4dAZtKnI
mJhVDnzZODQy0nSafedlr5g4VR36vgm0YPWjSyRNnC/APHyw0DtHIrzTqfKuDeGv
80uMPbEdujrw9gLbK3H8ow42iTicmgPgT3J5j70ZOo4o4FMtpZ/AEQw+VnWpSfw7
bkMjufLc29XHbtp22wfgq2Lmarr3+psaHokFaQrImkMbzdSL9CdabkLptanAilLS
cvq8UaKVC+G1+vHDgaweq3BhXD5+YcJnJlp4msUqqxGYlnx4RSvv8PipMU2DsVFb
NJSH5NJuS7GuzplNg+f20ysCAwEAAQ==
-----END PUBLIC KEY-----

              Den public-key lassen wir uns am besten mit Hilfe des Befehls amavisd ausgeben, denn
              so können wir einfach die Zeichenfolge direkt in die ZONEN des Nameserver BIND ein.
              Somit können auch einfach größere Schlüssel, wie in unserem Beispiel 4096 bits
              hinterlegt werden, da der Schlüssel bereits in mehrere TXT-Häppchen aufgeteilt wurde!

Die nachfolgende Zeichenfolge veröffentlichen wir nun überunseren Nameserver. Dazu tragen wir die
Textausgabe entweder in die ZONEN-Datei unseres eigenen DNS-Servers ein, tragen die Daten in die
WEB-GUI unseres ISPs ein oder schicken die Daten dem DNS-Administrator des Domain-Hosters mit
der Bitte, diese dort zu hinterlegen.

Alternativ zur Abfrage einer Domäne kann man sich auch alle Schlüssel mit Hilfe des Befehlss
amavisd showkeys anzeigen lassen.

  # amavisd showkeys

; key#1, domain omni128.de, /var/amavis/dkim/dkim-key_4096.pem
140224._domainkey.omni128.de.   3600 TXT (
  "v=DKIM1; p="
  "MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAuJ3/CruOs3fCU0ujOStc"
  "NN85TJh+5HvMa9m99C5XuRBlxOr+fp5BeIEtiPO0szKvvPojwrueCq0oOuEzjR/i"
https://dokuwiki.nausch.org/                                                                  Printed on 28.06.2020 14:42.
28.06.2020 14:42.                              13/32                      DKIM - Domain Key Identified Mail

    "2ObpRkzKRUXmAa0qVezUZwQIbKeiuKII0PnpQclDrmQrzSXcQWPT57tkPg17Q9Wa"
    "mFUUaHeN3+pVGtMyjYekRaAoRlV+a1gD111kXMPhiaFTMIncoRBS/gYN8FjfekH+"
    "ezqbLHLB8DLJQBZEGUILvJjAHX0722XyqYtkn1qfv63nPRGw/qqAW1072Gchq4ZS"
    "4ZPQ89SrK4KcHt/XptSlztXMWtmRFQriHdvbjr1Fx7ZwXdTQ+ik2AUZLMdhMrQe6"
    "/1GujQiMD6po81NpYbrjnfd+QF4sUbus4wPQKVNzsctiuzGlWsFexSHP4dAZtKnI"
    "mJhVDnzZODQy0nSafedlr5g4VR36vgm0YPWjSyRNnC/APHyw0DtHIrzTqfKuDeGv"
    "80uMPbEdujrw9gLbK3H8ow42iTicmgPgT3J5j70ZOo4o4FMtpZ/AEQw+VnWpSfw7"
    "bkMjufLc29XHbtp22wfgq2Lmarr3+psaHokFaQrImkMbzdSL9CdabkLptanAilLS"
    "cvq8UaKVC+G1+vHDgaweq3BhXD5+YcJnJlp4msUqqxGYlnx4RSvv8PipMU2DsVFb"
    "NJSH5NJuS7GuzplNg+f20ysCAwEAAQ==")

...

...

; key#16, domain c3n705.guru, /var/amavis/dkim/dkim-key_140224.pem
140224._domainkey.c3n705.guru. 3600 TXT (
  "v=DKIM1; p="
  "MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAuJ3/CruOs3fCU0ujOStc"
  "NN85TJh+5HvMa9m99C5XuRBlxOr+fp5BeIEtiPO0szKvvPojwrueCq0oOuEzjR/i"
  "2ObpRkzKRUXmAa0qVezUZwQIbKeiuKII0PnpQclDrmQrzSXcQWPT57tkPg17Q9Wa"
  "mFUUaHeN3+pVGtMyjYekRaAoRlV+a1gD111kXMPhiaFTMIncoRBS/gYN8FjfekH+"
  "ezqbLHLB8DLJQBZEGUILvJjAHX0722XyqYtkn1qfv63nPRGw/qqAW1072Gchq4ZS"
  "4ZPQ89SrK4KcHt/XptSlztXMWtmRFQriHdvbjr1Fx7ZwXdTQ+ik2AUZLMdhMrQe6"
  "/1GujQiMD6po81NpYbrjnfd+QF4sUbus4wPQKVNzsctiuzGlWsFexSHP4dAZtKnI"
  "mJhVDnzZODQy0nSafedlr5g4VR36vgm0YPWjSyRNnC/APHyw0DtHIrzTqfKuDeGv"
  "80uMPbEdujrw9gLbK3H8ow42iTicmgPgT3J5j70ZOo4o4FMtpZ/AEQw+VnWpSfw7"
  "bkMjufLc29XHbtp22wfgq2Lmarr3+psaHokFaQrImkMbzdSL9CdabkLptanAilLS"
  "cvq8UaKVC+G1+vHDgaweq3BhXD5+YcJnJlp4msUqqxGYlnx4RSvv8PipMU2DsVFb"
  "NJSH5NJuS7GuzplNg+f20ysCAwEAAQ==")

ADSP

Eingangs wurde bereits schon erwähnt, dass der Domaininhaber und Absender die Möglichkeit hat,
dem Empfänger weitere Informationen zur DKIM-Signatur-Policy mitzugeben. Die Publizierung erfolgt
wir der öffentliche DKIM-Schlüssel auch schon über den DNS. Beim unserer Installation nausch.org
wird der Name ._domainkey.nausch.org benutzt, wobei der Domaininhaber den
 nutzt, den aktuellen Schlüssel an Hand eines eindeutigen Datums zu qualifizieren. Im
aktuellen Beispiel lautet dieser: 140224._domainkey.nausch.org

Für ADSP wird der eigene Qualifier _adsp verwendet, somit wird lautet der Name für unsere Doamin
nausch.org: _adsp._domainkey.nausch.org

Der (TXT)-Datensatz hat dabei folgende Struktur „dkim=“. Über den  kann der
Domaininhaber folgendes festlegen:

       unknown Der Domaininhaber signiert einige oder alle Nachrichten.
       all Alle Nachrichten der Mail-Domäne werden mit einer DKIM-Signatur versehen.
       discardable Alle Nachrichten der Mail-Domäne werden mit einer DKIM-Signatur versehen.
       Darüber hinaus empfiehlt der Domain-Inhaber alle Nachrichten deren DKIM-Signatur gebrochen
Linux - Wissensdatenbank - https://dokuwiki.nausch.org/
Last update: 22.07.2019 15:06.             centos:mail_c6:mta_9 https://dokuwiki.nausch.org/doku.php/centos:mail_c6:mta_9

       wurde, bei der die Nachricht also manipuliert wurde, zu Verwerfen (REJECT).

Wurde nichts definiert oder ein anderer Wert als die oben angegeben wurde, wird der Wert unknown
gesetzt. Somit ergibt sich in unserem Anwendungsbeispiel, bei dem der Domaininhaber von sec-
mail.guru selbst alle Nachrichten signiert und dem Empfänger bittet, Nachrichten mit schadhafter
DKIM-Signatur zu rejecten, folgender TXT-Record:

_adsp._domainkey.sec-mail.guru.                            IN TXT        "dkim=discardable;"

Diesen Record veröffentlichen wir nun über unseren DNS.

Tests

Schlüssel

Nachdem der TXT zur Verfügung steht, können wir mit Hilfe von amavisd diesen Überprüfen.

  # amavisd testkeys

TESTING#1: 140224._domainkey.omni128.de                                => pass
...
...
...
TESTING#16: 140224._domainkey.c3n705.guru                              => pass

Wollen wir nur den Schlüssel einer bestimmten Domain testen, so verwenden wir folgenden Aufruf.

  # amavisd testkey domain omni128.de

TESTING#1: 140224._domainkey.omni128.de                                => pass

Das folgende Beispiel zeigt eine Abfrage, die die Fehlermeldung invalid (public key: OpenSSL
error: bad base64 decode) nach sich zieht.

  # amavisd testkey domain ebersberger-liedersammlung.de

TESTING#6: 140224._domainkey.ebersberger-liedersammlung.de                                         => invalid
(public key: OpenSSL error: bad base64 decode)

Die Fehlermeldung bad base64 decode weißt direkt auf einem Typo-Fehler im Schlüsseldaten hin!

Das nächste Beispiel zeigt eine Abfrage, die eine weitere Fehlermeldung nach sich zieht:

  # amavisd testkey domain ebersberger-liedersammlung.de

TESTING#6: 140224._domainkey.ebersberger-liedersammlung.de => fail (OpenSSL
error: data too large for key size)

https://dokuwiki.nausch.org/                                                                 Printed on 28.06.2020 14:42.
28.06.2020 14:42.                              15/32                              DKIM - Domain Key Identified Mail

Erhalten wir die Fehlermeldung fail (OpenSSL error: data too large for key size), so liegt es
meist nicht an einem vermeintlich zu großen DKIM-Schlüssel, den wir verwenden, sondern
schlichtweg an einem Typo-Fehler beim DNS-Eintrag unseres DKIM-Schlüssels!

Wurde der public DKIM-Schlüssel revoked, also zurückgezogen, zeigt dies nachfolgende
Fehlermeldung.

TESTING#6: 140224._domainkey.piraten-it.guru                            => invalid (public key:
revoked)

Möchte man einen DKIM-Schlüssel zurückziehen (revoke), dann löscht man im DNS-Eintrag einfach
den Teil hinter dem p=:

main._domainkey.piraten-it.guru                                    IN      TXT     "v=DKIM1; p="

Wir können natürlich auch direkt den TXT-Record eines Hosts abfragen eim DNS-Server abrufen:

  # host -t TXT 140224._domainkey.nausch.org

;; Truncated, retrying in TCP mode.
140224._domainkey.nausch.org descriptive text "v=DKIM1\; p="
"MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAuJ3/CruOs3fCU0ujOStc"
"NN85TJh+5HvMa9m99C5XuRBlxOr+fp5BeIEtiPO0szKvvPojwrueCq0oOuEzjR/i"
"2ObpRkzKRUXmAa0qVezUZwQIbKeiuKII0PnpQclDrmQrzSXcQWPT57tkPg17Q9Wa"
"mFUUaHeN3+pVGtMyjYekRaAoRlV+a1gD111kXMPhiaFTMIncoRBS/gYN8FjfekH+"
"ezqbLHLB8DLJQBZEGUILvJjAHX0722XyqYtkn1qfv63nPRGw/qqAW1072Gchq4ZS"
"4ZPQ89SrK4KcHt/XptSlztXMWtmRFQriHdvbjr1Fx7ZwXdTQ+ik2AUZLMdhMrQe6"
"/1GujQiMD6po81NpYbrjnfd+QF4sUbus4wPQKVNzsctiuzGlWsFexSHP4dAZtKnI"
"mJhVDnzZODQy0nSafedlr5g4VR36vgm0YPWjSyRNnC/APHyw0DtHIrzTqfKuDeGv"
"80uMPbEdujrw9gLbK3H8ow42iTicmgPgT3J5j70ZOo4o4FMtpZ/AEQw+VnWpSfw7"
"bkMjufLc29XHbtp22wfgq2Lmarr3+psaHokFaQrImkMbzdSL9CdabkLptanAilLS"
"cvq8UaKVC+G1+vHDgaweq3BhXD5+YcJnJlp4msUqqxGYlnx4RSvv8PipMU2DsVFb"
"NJSH5NJuS7GuzplNg+f20ysCAwEAAQ=="

lokaler Test beim Empfänger/Mailserver

Für die abschließenden Test aktivieren wir nun in der AMaViS-Konfigurationsdatei /etc/amavisd.conf
die anfänglich gesperrte Option enable_dkim_signing.

  # vim /etc/amavisd.conf

 $enable_dkim_signing = 1;                             # load DKIM signing code, keys defined by
dkim_key

Zur Aktivierung der DKIM-Signaturfunktion starten wir den AMaViS-Dämon 1x durch.

  # service amavisd condrestart

Shutting down Mail Virus Scanner (amavisd):                                         [    OK    ]

Linux - Wissensdatenbank - https://dokuwiki.nausch.org/
Last update: 22.07.2019 15:06.           centos:mail_c6:mta_9 https://dokuwiki.nausch.org/doku.php/centos:mail_c6:mta_9

Starting Mail Virus Scanner (amavisd):                                                  [     OK     ]

Schicken wir nun eine Test-eMail so findet der Empfänger im Mailheader die entsprechende DKIM-
Signatur:

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=nausch.org; h=
    content-transfer-encoding:content-type:content-type:mime-version
    :user-agent:from:from:date:date:message-id:received:received; s=
    140224; t=1394130616; x=1395945017; bh=frcCV1k9oG9oKj3dpUqdJg1Px
    RT2RSN/XKdLCPjaYaY=; b=JTAoETI+ZtTJ0xFDk4DcZqDxPAq+fOuQ+BbjyYmMx
    izj2W0G8zJe+a5RVAKj9nFlPgPB1KtQ3rCPXmYsn59zJ/DyS30gZjkt43KQUcydr
    Hf3z8QmFmPWvvBx/bLKWrs9+RwsckDsJ7OSh1u3pOvqaTzdMjOcxt3CFNFXhSBj0
    ipOZa2FrXNeHJpAhMpAFZ9ynhxV8ekg9v000f6ZLKlzTj5MNuXzohhfdH7I1hy/R
    b9r+/zTY0NjEtCvLn2k/HBmoDxzUwx5A/XuQGTcEfBZelFgKdJuaDTNVCdlPgmSv
    o+LB2i8zLWNe56hrKDzEoOS872xQQvErezZ4+X7UPpMeswspcaLdnSkbeWMNGElw
    pTpL/h/WN3lJiVYB7+ZrC0k/V79KZWsui7og3KZ9PwyO9wB6HJOM80O8zIs8jH6o
    S4Gnk0yXgrx6B9wVwytAhEguDe3dhm6stQgkzvSi0sl1I9WV85OS3+5sFfOpuvju
    icOrI2DGNZnuFWFmbiaTLmMlw4y2QENxP/EonCuVKCGit5CGdkuJU+Q6HVfkseGU
    mqH8mwZRdaTcQD2M3mtGNqDYIlnCsir/whLhkFqP/zeqCAm9sRbJXAuYIfxrONDm
    XkEEoELtW7aIWIKM2xWagUtmVVW/FBbYOonMNuyLuC7Gf9q5gN5WqMwapJRjdtNQ
    dk=

Der empfangende Mailserver ist mit Hilfe des Authentication-Results:-Header in der Lage
festzustellen, ob die eMail unverändert angekommen und somit nicht manipuliert wurde:

Authentication-Results: mx1.tachtler.net (amavisd-new);
    dkim=pass (4096-bit key) header.d=nausch.org

Wurde die Nachricht hingegen verändert, so schlägt die Überprüfung fehl und wird entsprechend
quittiert:

Authentication-Results: amavis.dmz.nausch.org (amavisd-new);
    dkim=fail (1024-bit key) reason="fail (message has been altered)"
    header.d=controlc.de

Die Veränderung der Nachricht passierte in dem obigen Beispiel dadurch, dass die Nachricht aus einer
Mailingliste vom Mailinglisten-Server verändert wurde, da am Ende der nachricht ein listenspezifischer
Mailfooter angefügt wurde.

WEB-online

Eine sehr gute und einfache Möglichkeit die DKIM-Konfiguration zu testen, stellt die DomainKeys,
DKIM, SPF, SpamAssassin Email Validator von Brandon Checketts dar. Die angegebene temporäre
eMailadresse kopieren wir uns und schicken an diese eine Testnachricht.

https://dokuwiki.nausch.org/                                                                Printed on 28.06.2020 14:42.
28.06.2020 14:42.                              17/32                     DKIM - Domain Key Identified Mail

Über die Schaltfläche [View Results] erhalten wir dann die Prüfungsergebnisse unserer
Testnachricht präsentiert.

Original Message:

Return-Path: 
X-Original-To: Dj4n90-i5-a-G33k@www.brandonchecketts.com
Delivered-To: spamapp@yen.roundsphere.com
Received: from mx01.nausch.org (mx01.nausch.org [217.91.103.190])
    by yen.roundsphere.com (Postfix) with ESMTP id 7297B53300D2
    for ; Thu, 6 Mar 2014
13:42:13 -0500 (EST)
Received: from viruswall.dmz.nausch.org (vml000060.dmz.nausch.org
[10.0.0.60])
    by mx01.nausch.org (Postfix) with ESMTP id 691224A
    for ; Thu, 6 Mar 2014
19:42:03 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=nausch.org; h=
    content-transfer-encoding:content-type:content-type:subject
    :subject:mime-version:user-agent:from:from:date:date:message-id
    :received:received; s=140224; t=1394131320; x=1395945721; bh=c0z
    mKE3eWNgYb30A42NNvzmrD4zdGQYblGKdqriyyJM=; b=FM7au9fI7gUwznGnpZd
    m2iCsFB0ufNhWGcGNadPZC82G6XhJ+9TRrXIhqgBLHWvVMZ4XvcWfoX0QEwjwU8Q
    SuLItU4J/+HuGFhrgEkbDO3TzYvRg1LzgTVX4CeYSfQ7rwcoOrcCmDge1li9W+kB
    kfmk3ZSdwHJIjAU+qvb9fY706FGZpv8vMm6k5jH4fIptrNsncyT131P4bp9Kj4eF
    kIYCz1jErtbsxicWmUMv4Jvb02+hfYfecmoT318xsq6J8IojIVNVLEeBDewkhI0s

Linux - Wissensdatenbank - https://dokuwiki.nausch.org/
Last update: 22.07.2019 15:06.   centos:mail_c6:mta_9 https://dokuwiki.nausch.org/doku.php/centos:mail_c6:mta_9

    ae5tjbgF8HUM8v3STvbd9q78+wVHerSV/L3KyUJQjMlQr+dWXn2W/6cu7+cM1QiH
    xNlNdKlekrl1GdqGgIFxWAzQncl0qLWzvla3QZpoA/U9YMZB59NY/jgPIcVzLJPh
    1TDWALr1TqHP5Hlw9uuBKxe24JEqBf+R+Srpy1rJFXVjNhE6bskYC+mk4czfjPZL
    LmJPRUNiVwI50scsxq6p5uYFqab0ls+kv7pBYITbxuHtZdtEFuS/Kv65gcOAIcNh
    l1Npp173MIWTT/1lVCt9TZWgsEU4vxTxem0GBOxM9Lf99oVukM5MueJlAJ0fYtM2
    ivaFQpBFqNna91f2/Pu3MkdeKYKWf9wp9/0U2mdZINtHVOjD0SxxL1nwRr0B4QfO
    BiywAPRwJeqcAn2WemOdRrQA=
X-Virus-Scanned: amavisd-new at nausch.org
Received: from mx01.nausch.org ([10.0.0.80])
    by viruswall.dmz.nausch.org (amavis.dmz.nausch.org [10.0.0.60])
(amavisd-new, port 10026)
    with ESMTP id cQavTPLwa_If for ;
    Thu, 6 Mar 2014 19:42:00 +0100 (CET)
Received: from pml010045.intra.nausch.org (vml000020.dmz.nausch.org
[10.0.0.20])
    (using SSLv3 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits))
    (No client certificate requested)
    by mx01.nausch.org (Postfix) with ESMTPSA
    for ; Thu, 6 Mar 2014
19:42:00 +0100 (CET)
Message-ID: 
Date: Thu, 06 Mar 2014 19:42:09 +0100
From: "Django [BOfH]" 
User-Agent: Mozilla/5.0 (X11; Linux i686; rv:17.0) Gecko/20130625
Thunderbird/17.0.7
MIME-Version: 1.0
To: Dj4n90-i5-a-G33k@www.brandonchecketts.com
Subject: DKIM-Test
X-Enigmail-Version: 1.6
Content-Type: text/plain; charset=ISO-8859-15
Content-Transfer-Encoding: 7bit

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Na, dann wollen wir mal sehen,ob das Ganze auch so funktioniert, wie
wir uns das vorstellen!
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.13 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQIcBAEBAgAGBQJTGMGAAAoJEAdOz2FQpr/tB7kP+wbBARPsh3Tc9lLFc1AQaiwn
4uSwsIfcYu4iMnpjDtDk2+z3EqW/bOHVoJa0dT8yDQG2ywjgCRrok90RiHkRnOxO
On4tnNlE5BgS5l6Dz4VnteBmt71NCOjSiWe2FipDsWxohjT+F+jPgeoPdk8S+OJM
Jtzchq8VxiMh7n1evD14/LTWRlnL3LaX1vVAVBze0Iwb8qBSHC4aU5nGk4hm5UKX
z0+GTv98SYkVADVkru7a24A8GRklWnP1D9KpOQhMsFa4ip4YjW7khfsPd5oSrNOC
VxI70za89AeN/0GwC8HlwDjUkYyMoxzCClYZyFPFBvVgvfK+t30qD07j0tBvvJbS
fzX9FKIq6Xqkvrq0T07ZWvOU33hY/fjZu4nfKJ3LTcIqAHc9GxitXclFPKvYRqeH
CaQEhKbgkVK2YJvXlpmsgc10FwNcpXHilLlUDsb+fC0ZQgZNBlu0hXs+56CbWM8l
81r9w3nPQ7jyo4FRQmFtzKPcOffs3+272bLoPTTjAPZCNogJhIfn60zQm6JEnTYS

https://dokuwiki.nausch.org/                                                       Printed on 28.06.2020 14:42.
28.06.2020 14:42.                              19/32      DKIM - Domain Key Identified Mail

VjwACvx2JEKI7sZ26CWk4V0fVMZU8lZUCbIqK+fNpOtJ9dA8O2t9/26M9r9ubgRl
vQMB1bRXgMyxItR+L+PA9FW0xdInFlNvcetHRNBXaAYkht+zq5anpUjn9FrFypTQ
EowtsmxX9pfKCPqBEvdT
=Jb01
-----END PGP SIGNATURE-----

DKIM Information:

DKIM Signature

Message contains this DKIM Signature:
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=nausch.org; h=
    content-transfer-encoding:content-type:content-type:subject
    :subject:mime-version:user-agent:from:from:date:date:message-id
    :received:received; s=140224; t=1394131320; x=1395945721; bh=c0z
    mKE3eWNgYb30A42NNvzmrD4zdGQYblGKdqriyyJM=; b=FM7au9fI7gUwznGnpZd
    m2iCsFB0ufNhWGcGNadPZC82G6XhJ+9TRrXIhqgBLHWvVMZ4XvcWfoX0QEwjwU8Q
    SuLItU4J/+HuGFhrgEkbDO3TzYvRg1LzgTVX4CeYSfQ7rwcoOrcCmDge1li9W+kB
    kfmk3ZSdwHJIjAU+qvb9fY706FGZpv8vMm6k5jH4fIptrNsncyT131P4bp9Kj4eF
    kIYCz1jErtbsxicWmUMv4Jvb02+hfYfecmoT318xsq6J8IojIVNVLEeBDewkhI0s
    ae5tjbgF8HUM8v3STvbd9q78+wVHerSV/L3KyUJQjMlQr+dWXn2W/6cu7+cM1QiH
    xNlNdKlekrl1GdqGgIFxWAzQncl0qLWzvla3QZpoA/U9YMZB59NY/jgPIcVzLJPh
    1TDWALr1TqHP5Hlw9uuBKxe24JEqBf+R+Srpy1rJFXVjNhE6bskYC+mk4czfjPZL
    LmJPRUNiVwI50scsxq6p5uYFqab0ls+kv7pBYITbxuHtZdtEFuS/Kv65gcOAIcNh
    l1Npp173MIWTT/1lVCt9TZWgsEU4vxTxem0GBOxM9Lf99oVukM5MueJlAJ0fYtM2
    ivaFQpBFqNna91f2/Pu3MkdeKYKWf9wp9/0U2mdZINtHVOjD0SxxL1nwRr0B4QfO
    BiywAPRwJeqcAn2WemOdRrQA=

Signature Information:
v= Version:         1
a= Algorithm:       rsa-sha256
c= Method:          relaxed/simple
d= Domain:          nausch.org
s= Selector:        140224
q= Protocol:
bh=                 c0z
    mKE3eWNgYb30A42NNvzmrD4zdGQYblGKdqriyyJM=
h= Signed Headers: content-transfer-encoding:content-type:content-
type:subject
    :subject:mime-version:user-agent:from:from:date:date:message-id
    :received:received
b= Data:            FM7au9fI7gUwznGnpZd
    m2iCsFB0ufNhWGcGNadPZC82G6XhJ+9TRrXIhqgBLHWvVMZ4XvcWfoX0QEwjwU8Q
    SuLItU4J/+HuGFhrgEkbDO3TzYvRg1LzgTVX4CeYSfQ7rwcoOrcCmDge1li9W+kB
    kfmk3ZSdwHJIjAU+qvb9fY706FGZpv8vMm6k5jH4fIptrNsncyT131P4bp9Kj4eF
    kIYCz1jErtbsxicWmUMv4Jvb02+hfYfecmoT318xsq6J8IojIVNVLEeBDewkhI0s
    ae5tjbgF8HUM8v3STvbd9q78+wVHerSV/L3KyUJQjMlQr+dWXn2W/6cu7+cM1QiH
    xNlNdKlekrl1GdqGgIFxWAzQncl0qLWzvla3QZpoA/U9YMZB59NY/jgPIcVzLJPh
    1TDWALr1TqHP5Hlw9uuBKxe24JEqBf+R+Srpy1rJFXVjNhE6bskYC+mk4czfjPZL
Linux - Wissensdatenbank - https://dokuwiki.nausch.org/
Last update: 22.07.2019 15:06.   centos:mail_c6:mta_9 https://dokuwiki.nausch.org/doku.php/centos:mail_c6:mta_9

    LmJPRUNiVwI50scsxq6p5uYFqab0ls+kv7pBYITbxuHtZdtEFuS/Kv65gcOAIcNh
    l1Npp173MIWTT/1lVCt9TZWgsEU4vxTxem0GBOxM9Lf99oVukM5MueJlAJ0fYtM2
    ivaFQpBFqNna91f2/Pu3MkdeKYKWf9wp9/0U2mdZINtHVOjD0SxxL1nwRr0B4QfO
    BiywAPRwJeqcAn2WemOdRrQA=
Public Key DNS Lookup

Building DNS Query for 140224._domainkey.nausch.org
Retrieved this publickey from DNS: v=DKIM1;
p=MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAuJ3/CruOs3fCU0ujOStcNN85TJh+5H
vMa9m99C5XuRBlxOr+fp5BeIEtiPO0szKvvPojwrueCq0oOuEzjR/i2ObpRkzKRUXmAa0qVezUZw
QIbKeiuKII0PnpQclDrmQrzSXcQWPT57tkPg17Q9WamFUUaHeN3+pVGtMyjYekRaAoRlV+a1gD11
1kXMPhiaFTMIncoRBS/gYN8FjfekH+ezqbLHLB8DLJQBZEGUILvJjAHX0722XyqYtkn1qfv63nPR
Gw/qqAW1072Gchq4ZS4ZPQ89SrK4KcHt/XptSlztXMWtmRFQriHdvbjr1Fx7ZwXdTQ+ik2AUZLMd
hMrQe6/1GujQiMD6po81NpYbrjnfd+QF4sUbus4wPQKVNzsctiuzGlWsFexSHP4dAZtKnImJhVDn
zZODQy0nSafedlr5g4VR36vgm0YPWjSyRNnC/APHyw0DtHIrzTqfKuDeGv80uMPbEdujrw9gLbK3
H8ow42iTicmgPgT3J5j70ZOo4o4FMtpZ/AEQw+VnWpSfw7bkMjufLc29XHbtp22wfgq2Lmarr3+p
saHokFaQrImkMbzdSL9CdabkLptanAilLScvq8UaKVC+G1+vHDgaweq3BhXD5+YcJnJlp4msUqqx
GYlnx4RSvv8PipMU2DsVFbNJSH5NJuS7GuzplNg+f20ysCAwEAAQ==
Validating Signature

result = pass
Details:

SPF Information:

Using this information that I obtained from the headers

Helo Address = mx01.nausch.org
From Address = django@nausch.org
From IP      = 217.91.103.190
SPF Record Lookup

Looking up TXT SPF record for nausch.org
Found the following namesevers for nausch.org: ns.udagdns.de ns.udagdns.net
Retrieved this SPF Record: v=spf1 ip4:217.91.103.190/32 a mx
include:nausch.org ?all (TTL = 3600)
using authoritative server {ns.udagdns.de} directly for SPF Check
Result: pass (Mechanism 'ip4:217.91.103.190' matched)

Result code: pass
Local Explanation: nausch.org: 217.91.103.190 is authorized to use
'django@nausch.org' in 'mfrom' identity (mechanism 'ip4:217.91.103.190'
matched)
spf_header = Received-SPF: pass (nausch.org: 217.91.103.190 is authorized to
use 'django@nausch.org' in 'mfrom' identity (mechanism 'ip4:217.91.103.190'
matched)) receiver=yen; identity=mailfrom; envelope-
from="django@nausch.org"; helo=mx01.nausch.org; client-ip=217.91.103.190

https://dokuwiki.nausch.org/                                                       Printed on 28.06.2020 14:42.
28.06.2020 14:42.                              21/32                         DKIM - Domain Key Identified Mail

SPAM-Scoring:

SpamAssassin Score: -1.106
Message is NOT marked as spam
Points breakdown:
-0.0 T_RP_MATCHES_RCVD      Envelope sender domain matches handover relay
                            domain
-0.0 SPF_PASS               SPF: sender matches SPF record
 0.9 FRT_TODAY2             BODY: ReplaceTags: Today (2)
-1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%
                            [score: 0.0000]
-0.1 DKIM_VALID_AU          Message has a valid DKIM or DK signature from
author's
                            domain
 0.1 DKIM_SIGNED            Message has a DKIM or DK signature, not
necessarily valid
-0.1 DKIM_VALID             Message has at least one valid DKIM or DK
signature

Besonderheit - Mailinglisten

Wie am Anfang dieses Artikels beschrieben, basiert DKIM auf asymmetrischer Verschlüsselung. Die
eMails werden mit zwei Signaturen versehen, die erste über ein paar Header-Zeilen der Nachricht und
die zweite über den Mail-Body, also dem Inhalt einer eMail.

Der empfangende Mail-Server ist nun in der Lage, an Hand des öffentlichen Schlüssels, der im TXT-
Record des Domain Name System (DNS) der Domäne abrufbar ist, die beiden übermittelten DKIM-
Signaturen zu zu verifizieren. Ist die Signatur ungültig, hat der empfangende MTA1) die Möglichkeit,
die Annahme der eMail zu verweigern bzw. die empfangene Nachricht auszusortieren.

Und genau bei diesem Punkt haben wir nun bei unserem Mailinglistenserver unter Umständen ein
Problem, da sehr oft das Headerfeld „Subject“ mit dem Namen der Mailingliste ergänzt. So wird aus
der Subject „DKIM-Headertest“ auf der Postfixmailingliste ein „[Postfixbuch-users] DKIM-
Headertest“. Ebenso wird am Ende der verteilten eMail ein Footer angefügt, mit Hinweisen zur
Mailingliste. Bei unserem Beispiel mit der Postfixmailingliste wird folgendes eingefügt:

--
_______________________________________________
Postfixbuch-users -- http://www.postfixbuch.de
Heinlein Professional Linux Support GmbH

Postfixbuch-users@listen.jpberlin.de
https://listi.jpberlin.de/mailman/listinfo/postfixbuch-users

Haben wir uns die Rahmenbedingungen zum DKIM verinnerlicht, werden wir so schnell zu dem
Schluß kommen, dass die Überprüfung der DKIM-Signaturen fehlschlagen muß! Damit also die eMails
unserer Kunden bei den Mailservern unserer Empfänger nicht mit einem Malus belegt werden, haben
wir zwei Möglichkeiten:

Linux - Wissensdatenbank - https://dokuwiki.nausch.org/
Last update: 22.07.2019 15:06.           centos:mail_c6:mta_9 https://dokuwiki.nausch.org/doku.php/centos:mail_c6:mta_9

   1. eMail nicht verändern: Der Mailheader Subject darf eben so wenig verändert werden, wie der
      Mailbody nicht durch Anfügen eines Listenspezifischen Footers verändert werden.
   2. DKIM Header entfernen: Soll der Mailheader mit dem [LISTENNAMEN] erweitert und ein
      listenzpezifischer Footer angefügt werden, dann soll unser AMaViS etwaige DKIM-Signaturen
      entfernen.

eMail nicht verändern

Eine ungültige DKIM-Signatur bekommen wir immer dann, wenn der Mailheader und/oder der
Mailbody, also der Nachrichtentext, nach dem Signieren von jemanden manipuliert wurde. Also
werden wir nun dafür Sorge tragen, dass der Mailinglistenserver weder den Mail-Header noch den
Nachrichtentext manipuliert.

       Mailheader: Über die Variable subject_prefix in der Konfigurationskategorie [Allgemeine
       Optionen] kann man den Mailinglisten Server anweisen, in der Betreffzeile eine Zeichenfolge,
       meist der Mailinglistenkurzmane, voranzustellen. Über die URL
       ../?VARHELP=general/subject_prefix erreichen wir diese Einstellungsmöglichkeit; im Falle
       der Liste wetterstation-pliening wäre das dann entsprechend:
       https://lists.nausch.org/mailman/admin/wetterstation-pliening/?VARHELP=g
       eneral/subject_prefix.
       Wir löschen also den Inhalt der Variable und bestätigen die Konfigurationsänderung mit einem
       Klick auf die Schaltfläche [Änderungen speichern]. Diese Konfigurationsänderung ist somit
       sofort aktiv!

https://dokuwiki.nausch.org/                                                               Printed on 28.06.2020 14:42.
28.06.2020 14:42.                              23/32                       DKIM - Domain Key Identified Mail

       Mailbody: Mit Hilfe der beiden Variablen msg_header und msg_footer in der
       Konfigurationskategorie [Non-Digest-Optionen] kann man entweder am Anfang oder am
       Ende jeder Nachricht zusätzliche Hinweise einfließen lassen. So wir in aller Regel bei der
       Variable msg_footer der listenspezifische Footer mit

        _______________________________________________
        %(real_name)s mailing list
        %(real_name)s@%(host_name)s
        %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

       Über die URL ../?VARHELP=nondigest/msg_header bzw.
       ../?VARHELP=nondigest/msg_footer erreichen wir diese Einstellungsmöglichkeit; im Falle
       der Liste wetterstation-pliening wäre das dann entsprechend:
       https://lists.nausch.org/mailman/admin/wetterstation-pliening/?VARHELP=n
       ondigest/msg_header
       bzw.
       https://lists.nausch.org/mailman/admin/wetterstation-pliening/?VARHELP=n
       ondigest/msg_footer.
       Wir löschen also den Inhalt der Variable und bestätigen die Konfigurationsänderung mit einem
       Klick auf die Schaltfläche [Änderungen speichern]. Diese Konfigurationsänderung ist somit
       sofort aktiv!

Linux - Wissensdatenbank - https://dokuwiki.nausch.org/
Last update: 22.07.2019 15:06.           centos:mail_c6:mta_9 https://dokuwiki.nausch.org/doku.php/centos:mail_c6:mta_9

       Default-Einstellungen: Um nun nicht bei jeder neuen Mailingliste die oben genannten
       Änderungen vornehmen zu müssen, tragen wir in die Konfigurationsdatei unseres
       Mailinglistenservers nachfolgende Zeilen ein.

          # vim /etc/mailman/mm_cfg.py

       /etc/mailman/mm_cfg.py

                 ...

                 # Django : 2014-02-09
                 # Vorhandenen Mail-Header und Mail-Body nicht ergaenzen. (DKIM-
                 Signatur bleibt valide)
                 DEFAULT_SUBJECT_PREFIX = ""
                 DEFAULT_MSG_HEADER = ""
                 DEFAULT_MSG_FOOTER = ""
                 # Django : 2013-02-21
                 # Vorhandene DKIM-Header nicht entfernen
                 REMOVE_DKIM_HEADERS = No

https://dokuwiki.nausch.org/                                                               Printed on 28.06.2020 14:42.
28.06.2020 14:42.                              25/32                         DKIM - Domain Key Identified Mail

                ...

       Zur Aktivierung unserer Änderungen starten wir den Mailinglisten-Server einmal durch.

          # service mailman condrestart

        Shutting down mailman:                                                        [    OK     ]
        Starting mailman:                                                             [    OK     ]

Mit diesen Änderungen bleiben nunmehr die DKIM-Signaturen der eingehenden Nachrichten intakt
und somit valide.

DKIM-Signaturen entfernen

Möchte man auf die Listenspezifischen Detailangaben im Subject wie auch am Ende des
Nachrichtentextes nicht verzichten, haben wir nur noch die Option, eine etwaige DKIM-Signatur
vom Mailinglistenserver entfernen zu lassen. Wir tragen hierzu in die Konfigurationsdatei unseres
Mailman-Mailinglistenservers nachfolgende Zeilen ein.

  #    vim /etc/mailman/mm_cfg.py

vim /etc/mailman/mm_cfg.py

        ...

        # Django : 2013-02-21
        # Vorhandene DKIM-Header entfernen
        REMOVE_DKIM_HEADERS = Yes

        ...

Anschließend starten wir unseren Mailinglistenserver einmal durch.

  # service mailman condrestart

Shutting down mailman:                                                        [     OK    ]
Starting mailman:                                                             [     OK    ]

Besonderheit - DMARC

Möchten wir DMARC bei der Bewertung der anzunehmenden Nachrichten mit berücksichtigen, setzen
wir auf das Paket opendmarc aus den Repository EPEL ein. Dies hat gegenüber der Signaturprüfung
den entscheidenden Vorteil, dass die einzelnen Milter (SPF, DKIM und DMARC) nahtlos ineinander
greifen, und so die neu hinzugefügten Haeder bei der Berwertung mit Betrachtet werden können.

Linux - Wissensdatenbank - https://dokuwiki.nausch.org/
Sie können auch lesen