Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
centos:mail_c7:spam_9 [27.11.2014 09:09. ] – [Tests] django | centos:mail_c7:spam_9 [22.07.2019 14:46. ] (aktuell) – django | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | <WRAP center round tip 30%>\\ | ||
- | **//aktuell in Bearbeitung!// | ||
- | </ | ||
====== DKIM - Domain Key Identified Mail unter CentOS 7.x ====== | ====== DKIM - Domain Key Identified Mail unter CentOS 7.x ====== | ||
{{: | {{: | ||
Zeile 19: | Zeile 16: | ||
===== Überprüfung von DKIM-Signaturen ===== | ===== Überprüfung von DKIM-Signaturen ===== | ||
Damit unsere AMaViS-installation die Überprüfung von DKIM-Signaturen im Mailheader vornimmt bedarf es keiner großen Konfiguration. Wie in der [[http:// | Damit unsere AMaViS-installation die Überprüfung von DKIM-Signaturen im Mailheader vornimmt bedarf es keiner großen Konfiguration. Wie in der [[http:// | ||
- | # vim / | + | # vim /etc/amavisd/ |
<code perl>################################################################################ | <code perl>################################################################################ | ||
Zeile 61: | Zeile 58: | ||
# ll / | # ll / | ||
- | < | + | < |
In dieser Datei befindet sich nun der **private key**. | In dieser Datei befindet sich nun der **private key**. | ||
Zeile 353: | Zeile 350: | ||
Somit ergibt sich in unserem Anwendungsbeispiel, | Somit ergibt sich in unserem Anwendungsbeispiel, | ||
_adsp._domainkey.sec-mail.guru. | _adsp._domainkey.sec-mail.guru. | ||
- | Diesen Record veröffentlichen wir nun über unseren DNS. Somit kann ein Empfänger | + | Diesen Record veröffentlichen wir nun über unseren DNS. Somit kann ein Empfänger |
===== Tests ===== | ===== Tests ===== | ||
==== DNS + private key ==== | ==== DNS + private key ==== | ||
Nachdem der TXT zur Verfügung steht, können wir mit Hilfe von **amavisd** diesen Überprüfen. | Nachdem der TXT zur Verfügung steht, können wir mit Hilfe von **amavisd** diesen Überprüfen. | ||
- | # amavisd testkeys | + | # amavisd |
TESTING#1: 141126._domainkey.omni128.de | TESTING#1: 141126._domainkey.omni128.de | ||
Zeile 367: | Zeile 364: | ||
Wollen wir nur den Schlüssel einer bestimmten Domain testen, so verwenden wir folgenden Aufruf. | Wollen wir nur den Schlüssel einer bestimmten Domain testen, so verwenden wir folgenden Aufruf. | ||
- | # amavisd testkey domain omni128.de | + | # amavisd |
TESTING#1: 141126._domainkey.omni128.de | TESTING#1: 141126._domainkey.omni128.de | ||
Das folgende Beispiel zeigt eine Abfrage, die die Fehlermeldung **invalid (public key: OpenSSL error: bad base64 decode)** nach sich zieht. | 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 | + | # amavisd |
TESTING#6: 141126._domainkey.ebersberger-liedersammlung.de | TESTING#6: 141126._domainkey.ebersberger-liedersammlung.de | ||
Zeile 378: | Zeile 375: | ||
Das nächste Beispiel zeigt eine Abfrage, die eine weitere Fehlermeldung nach sich zieht: | Das nächste Beispiel zeigt eine Abfrage, die eine weitere Fehlermeldung nach sich zieht: | ||
- | # amavisd testkey domain ebersberger-liedersammlung.de | + | # amavisd |
TESTING#6: 141126._domainkey.ebersberger-liedersammlung.de => fail (OpenSSL error: data too large for key size) | TESTING#6: 141126._domainkey.ebersberger-liedersammlung.de => fail (OpenSSL error: data too large for key size) | ||
Zeile 397: | Zeile 394: | ||
141126._domainkey.nausch.org descriptive text " | 141126._domainkey.nausch.org descriptive text " | ||
- | ==== verifying ==== | + | ==== signing und verifying ==== |
+ | Nachdem die Überprüfung der AMaViS/ | ||
+ | # vim / | ||
+ | |||
+ | <code perl>################################################################################ | ||
+ | ## DKIM - Domain Key Identified Mail | ||
+ | # | ||
+ | |||
+ | # DKIM-Signaturen verifizieren | ||
+ | $enable_dkim_verification = 1; | ||
+ | |||
+ | # DKIM-Signaturen erstellen | ||
+ | $enable_dkim_signing = 1; | ||
+ | |||
+ | ... | ||
+ | </ | ||
+ | |||
+ | Anschließend führen wir einen Reload des AMaViS-Daemon durch. | ||
+ | # systemctl reload amavisd | ||
+ | |||
+ | Schicken wir nun eine Test-eMail so findet der Empfänger im Mailheader die entsprechende DKIM-Signatur. | ||
+ | < | ||
+ | content-transfer-encoding: | ||
+ | : | ||
+ | 140224; t=1394130616; | ||
+ | RT2RSN/ | ||
+ | izj2W0G8zJe+a5RVAKj9nFlPgPB1KtQ3rCPXmYsn59zJ/ | ||
+ | Hf3z8QmFmPWvvBx/ | ||
+ | ipOZa2FrXNeHJpAhMpAFZ9ynhxV8ekg9v000f6ZLKlzTj5MNuXzohhfdH7I1hy/ | ||
+ | b9r+/ | ||
+ | o+LB2i8zLWNe56hrKDzEoOS872xQQvErezZ4+X7UPpMeswspcaLdnSkbeWMNGElw | ||
+ | pTpL/ | ||
+ | S4Gnk0yXgrx6B9wVwytAhEguDe3dhm6stQgkzvSi0sl1I9WV85OS3+5sFfOpuvju | ||
+ | icOrI2DGNZnuFWFmbiaTLmMlw4y2QENxP/ | ||
+ | mqH8mwZRdaTcQD2M3mtGNqDYIlnCsir/ | ||
+ | XkEEoELtW7aIWIKM2xWagUtmVVW/ | ||
+ | dk= | ||
+ | </ | ||
+ | Der empfangende Mailserver ist mit Hilfe des **Headers:// | ||
+ | < | ||
+ | dkim=pass (4096-bit key) header.d=nausch.org | ||
+ | </ | ||
+ | |||
+ | Wurde die Nachricht jedoch hingegen verändert, so schlägt die Überprüfung fehl und wird entsprechend quittiert: | ||
+ | < | ||
+ | dkim=fail (1024-bit key) reason=" | ||
+ | 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. | ||
+ | |||
+ | <WRAP center round info> \\ | ||
+ | Wie man das Brechen der DKIM-Signaturen durch den Mailinglisten-Manager **mailman** unterbindet, | ||
+ | </ | ||
+ | |||
+ | ==== signing (WEB-online) ==== | ||
+ | Eine sehr gute und einfache Möglichkeit die DKIM-Konfiguration zu testen, stellt die [[http:// | ||
+ | Die angegebene temporäre eMailadresse kopieren wir uns und schicken an diese eine Testnachricht. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Wir schicken also nun eine Testnachricht an die angegebene Addresse, im einfachsten FAll nutzen wir dazu einfach das Schweizer Taschenmesser für SMTP, kurz **[http:// | ||
+ | # swaks --to Dj4n90-i5-a-G33k@www.brandonchecketts.com --from n3rd@sec-mail.guru --header-X-Test "test eMail" --server 10.0.0.87 --port 587 --tls --header " | ||
+ | |||
+ | Über die Schaltfläche **//[View Results]// | ||
+ | === Original Message: === | ||
+ | < | ||
+ | X-Original-To: | ||
+ | Delivered-To: | ||
+ | Received: from mx01.nausch.org (mx01.nausch.org [217.91.103.190]) | ||
+ | by yen.roundsphere.com (Postfix) with ESMTP id 292D1533009D | ||
+ | for < | ||
+ | DKIM-Signature: | ||
+ | message-id: | ||
+ | 140224; t=1417089522; | ||
+ | lqqvsQYKOpYUP8nk7I=; | ||
+ | V9eh4YN2lzh5vdsQrh3fB0wqcQwc46ypNiHrYAXdI/ | ||
+ | 8c808dQGgh5iEy01nkKAoJY3641CZrxp1gshtVyQUrM8x5cRhdk9KvdmHCPMkkCn | ||
+ | vVSC/ | ||
+ | z5pZZYSmw1CBYE644jTtiHcEpy6qonjwh53NL5FrI/ | ||
+ | mJJw+ayVBDuzIxJEta38QySxkdcvS4YejEMTFT7ACcJoZeu0ct3Z9gXYJo301ESr | ||
+ | ZTPoxhqNSRTs105dE26DDVlAUZjeTAtRgJlEge4zhSO4wem2qsRpFjXh7vbjKz7i | ||
+ | Jy/ | ||
+ | LJ440FpkY2EA0zQ1y9O2S62IDDS1ON+fyufJJ0W9oaelTYr45/ | ||
+ | +Irem5j0// | ||
+ | KpPuliFssSxCR4QHC08rVoQda+AtRvGWlNEBgN3RDR65iSm7Q1fJJt3Z6LTakv7/ | ||
+ | 38= | ||
+ | X-Virus-Scanned: | ||
+ | Received: from vml000087.dmz.nausch.org (vml000087.dmz.nausch.org [10.0.0.87]) | ||
+ | (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) | ||
+ | (No client certificate requested) | ||
+ | by mx01.nausch.org (Postfix) with ESMTPSA id E9A98C00088 | ||
+ | for < | ||
+ | Date: Thu, 27 Nov 2014 12:58:41 +0100 | ||
+ | To: Dj4n90-i5-a-G33k@www.brandonchecketts.com | ||
+ | From: n3rd@sec-mail.guru | ||
+ | Subject: DKIM-Signing-Test | ||
+ | X-Mailer: swaks v20130209.0 jetmore.org/ | ||
+ | X-Test: test eMail | ||
+ | Message-Id: < | ||
+ | |||
+ | This is a test mailing | ||
+ | </ | ||
+ | |||
+ | === DKIM Information: | ||
+ | < | ||
+ | |||
+ | Message contains this DKIM Signature: | ||
+ | DKIM-Signature: | ||
+ | message-id: | ||
+ | 140224; t=1417089522; | ||
+ | lqqvsQYKOpYUP8nk7I=; | ||
+ | V9eh4YN2lzh5vdsQrh3fB0wqcQwc46ypNiHrYAXdI/ | ||
+ | 8c808dQGgh5iEy01nkKAoJY3641CZrxp1gshtVyQUrM8x5cRhdk9KvdmHCPMkkCn | ||
+ | vVSC/ | ||
+ | z5pZZYSmw1CBYE644jTtiHcEpy6qonjwh53NL5FrI/ | ||
+ | mJJw+ayVBDuzIxJEta38QySxkdcvS4YejEMTFT7ACcJoZeu0ct3Z9gXYJo301ESr | ||
+ | ZTPoxhqNSRTs105dE26DDVlAUZjeTAtRgJlEge4zhSO4wem2qsRpFjXh7vbjKz7i | ||
+ | Jy/ | ||
+ | LJ440FpkY2EA0zQ1y9O2S62IDDS1ON+fyufJJ0W9oaelTYr45/ | ||
+ | +Irem5j0// | ||
+ | KpPuliFssSxCR4QHC08rVoQda+AtRvGWlNEBgN3RDR65iSm7Q1fJJt3Z6LTakv7/ | ||
+ | 38= | ||
+ | |||
+ | |||
+ | Signature Information: | ||
+ | v= Version: | ||
+ | a= Algorithm: | ||
+ | c= Method: | ||
+ | d= Domain: | ||
+ | s= Selector: | ||
+ | q= Protocol: | ||
+ | bh= | ||
+ | lqqvsQYKOpYUP8nk7I= | ||
+ | h= Signed Headers: | ||
+ | b= Data: dT0+XLEMpY7/ | ||
+ | V9eh4YN2lzh5vdsQrh3fB0wqcQwc46ypNiHrYAXdI/ | ||
+ | 8c808dQGgh5iEy01nkKAoJY3641CZrxp1gshtVyQUrM8x5cRhdk9KvdmHCPMkkCn | ||
+ | vVSC/ | ||
+ | z5pZZYSmw1CBYE644jTtiHcEpy6qonjwh53NL5FrI/ | ||
+ | mJJw+ayVBDuzIxJEta38QySxkdcvS4YejEMTFT7ACcJoZeu0ct3Z9gXYJo301ESr | ||
+ | ZTPoxhqNSRTs105dE26DDVlAUZjeTAtRgJlEge4zhSO4wem2qsRpFjXh7vbjKz7i | ||
+ | Jy/ | ||
+ | LJ440FpkY2EA0zQ1y9O2S62IDDS1ON+fyufJJ0W9oaelTYr45/ | ||
+ | +Irem5j0// | ||
+ | KpPuliFssSxCR4QHC08rVoQda+AtRvGWlNEBgN3RDR65iSm7Q1fJJt3Z6LTakv7/ | ||
+ | 38= | ||
+ | Public Key DNS Lookup | ||
+ | |||
+ | Building DNS Query for 140224._domainkey.sec-mail.guru | ||
+ | Retrieved this publickey from DNS: v=DKIM1; p=MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAuJ3/ | ||
+ | Validating Signature | ||
+ | |||
+ | result = pass | ||
+ | Details: | ||
+ | </ | ||
+ | |||
+ | === SPF Information: | ||
+ | < | ||
+ | |||
+ | Using this information that I obtained from the headers | ||
+ | |||
+ | Helo Address = mx01.nausch.org | ||
+ | From Address = n3rd@sec-mail.guru | ||
+ | From IP = 217.91.103.190 | ||
+ | SPF Record Lookup | ||
+ | |||
+ | Looking up TXT SPF record for sec-mail.guru | ||
+ | Found the following namesevers for sec-mail.guru: | ||
+ | Retrieved this SPF Record: v=spf1 mx ?all (TTL = 3600) | ||
+ | using authoritative server {ns.udagdns.net} directly for SPF Check | ||
+ | Result: pass (Mechanism ' | ||
+ | |||
+ | Result code: pass | ||
+ | Local Explanation: | ||
+ | spf_header = Received-SPF: | ||
+ | </ | ||
+ | === SPAM-Scoring: | ||
+ | < | ||
+ | Message is NOT marked as spam | ||
+ | Points breakdown: | ||
+ | -0.0 SPF_PASS | ||
+ | -1.9 BAYES_00 | ||
+ | [score: 0.0000] | ||
+ | -0.1 DKIM_VALID_AU | ||
+ | domain | ||
+ | 0.1 DKIM_SIGNED | ||
+ | -0.1 DKIM_VALID | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Besonderheit - Mailinglisten ===== | ||
+ | Wie am Anfang dieses Artikels beschrieben, | ||
+ | |||
+ | Der empfangende Mail-Server ist nun in der Lage, an Hand des öffentlichen Schlüssels, | ||
+ | |||
+ | Und genau bei diesem Punkt haben wir nun bei unserem [[centos: | ||
+ | [[https:// | ||
+ | < | ||
+ | _______________________________________________ | ||
+ | Postfixbuch-users -- http:// | ||
+ | Heinlein Professional Linux Support GmbH | ||
+ | |||
+ | Postfixbuch-users@listen.jpberlin.de | ||
+ | https:// | ||
+ | </ | ||
+ | Haben wir uns die Rahmenbedingungen zum **DKIM** verinnerlicht, | ||
+ | - **eMail nicht verändern**: | ||
+ | - **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. | ||
+ | |||
+ | <WRAP center round tip> \\ | ||
+ | Nachfolgend finden sich daher Hinweise, wie man (s)einen Mailinglistenserver **Mailman** **// | ||
+ | </ | ||
+ | |||
+ | ==== eMail nicht verändern ==== | ||
+ | Eine ungültige DKIM-Signatur bekommen wir immer dann, wenn der Mailheader und/oder der Mailbody, also der Nachrichtentext, | ||
+ | * **Mailheader**: | ||
+ | |||
+ | * **Mailbody**: | ||
+ | %(real_name)s mailing list | ||
+ | %(real_name)s@%(host_name)s | ||
+ | %(web_page_url)slistinfo%(cgiext)s/ | ||
+ | </ | ||
+ | |||
+ | * **Default-Einstellungen**: | ||
+ | |||
+ | # 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 | ||
+ | |||
+ | ... | ||
+ | </ | ||
+ | Starting mailman: | ||
+ | </ | ||
+ | |||
+ | 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. | ||
+ | # | ||
+ | <file bash vim / | ||
+ | |||
+ | # 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: | ||
+ | Starting mailman: | ||
+ | |||
+ | ===== Besonderheit - DMARC ===== | ||
+ | Möchten wir DMARC bei der Bewertung der anzunehmenden Nachrichten mit berücksichtigen, | ||
+ | |||
+ | Die Installation und Konfiguration von OpenDMARC ist im Kapitel [[centos: | ||
+ | |||
+ | ==== Installation von OpenDKIM ==== | ||
+ | Die Installation gestaltet sich sehr einfach, da wir das EPEL-Paket direkt mit **yum** installieren können. | ||
+ | # yum install opendkim | ||
+ | |||
+ | Was bei der Installation alles an Dateien und Verzeichnisse neu im System hinzugefügt worden sind, überprüfen wir mit Hilfe von **rpm -qil < | ||
+ | # rpm -qil opendkim | ||
+ | |||
+ | < | ||
+ | Version | ||
+ | Release | ||
+ | Architecture: | ||
+ | Install Date: Wed 17 Dec 2014 03:22:40 PM CET | ||
+ | Group : System Environment/ | ||
+ | Size : 591007 | ||
+ | License | ||
+ | Signature | ||
+ | Source RPM : opendkim-2.9.2-2.el7.src.rpm | ||
+ | Build Date : Mon 04 Aug 2014 10:55:31 PM CEST | ||
+ | Build Host : buildvm-14.phx2.fedoraproject.org | ||
+ | Relocations : (not relocatable) | ||
+ | Packager | ||
+ | Vendor | ||
+ | URL : http:// | ||
+ | Summary | ||
+ | Description : | ||
+ | OpenDKIM allows signing and/or verification of email through an open source | ||
+ | library that implements the DKIM service, plus a milter-based filter | ||
+ | application that can plug in to any milter-aware MTA, including sendmail, | ||
+ | Postfix, or any other MTA that supports the milter protocol. | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | |||
+ | ==== Konfiguration ==== | ||
+ | Die Konfiguration von OpenDKIM ist nicht sehr aufwändig, da wir lediglich das Modul **verify** benötigen. Das Signieren der eMails überlassen wir AMaViS. Die Konfiguration hierzu findet sich im Abschnitt [[centos: | ||
+ | # vim / | ||
+ | |||
+ | <file bash / | ||
+ | ## See opendkim.conf(5) or / | ||
+ | |||
+ | ## BEFORE running OpenDKIM you must: | ||
+ | |||
+ | ## - make your MTA (Postfix, Sendmail, etc.) aware of OpenDKIM | ||
+ | ## - generate keys for your domain (if signing) | ||
+ | ## - edit your DNS records to publish your public keys (if signing) | ||
+ | |||
+ | ## See / | ||
+ | |||
+ | ## CONFIGURATION OPTIONS | ||
+ | |||
+ | # Specifies the path to the process ID file. | ||
+ | PidFile / | ||
+ | |||
+ | # Selects operating modes. Valid modes are s (sign) and v (verify). Default is v. | ||
+ | # Must be changed to s (sign only) or sv (sign and verify) in order to sign outgoing | ||
+ | # messages. | ||
+ | Mode v | ||
+ | |||
+ | # Log activity to the system log. | ||
+ | Syslog | ||
+ | |||
+ | # Log additional entries indicating successful signing or verification of messages. | ||
+ | SyslogSuccess | ||
+ | |||
+ | # If logging is enabled, include detailed logging about why or why not a message was | ||
+ | # signed or verified. This causes an increase in the amount of log data generated | ||
+ | # for each message, so set this to No (or comment it out) if it gets too noisy. | ||
+ | LogWhy | ||
+ | |||
+ | # Attempt to become the specified user before starting operations. | ||
+ | UserID | ||
+ | |||
+ | # Create a socket through which your MTA can communicate. | ||
+ | Socket | ||
+ | |||
+ | # Required to use local socket with MTAs that access the socket as a non- | ||
+ | # privileged user (e.g. Postfix) | ||
+ | Umask 002 | ||
+ | |||
+ | # This specifies a text file in which to store DKIM transaction statistics. | ||
+ | # OpenDKIM must be manually compiled with --enable-stats to enable this feature. | ||
+ | # | ||
+ | |||
+ | ## SIGNING OPTIONS | ||
+ | |||
+ | # Selects the canonicalization method(s) to be used when signing messages. | ||
+ | # Django : 2014-12-17 | ||
+ | # default: Canonicalization | ||
+ | Canonicalization | ||
+ | |||
+ | # Domain(s) whose mail should be signed by this filter. Mail from other domains will | ||
+ | # be verified rather than being signed. Uncomment and use your domain name. | ||
+ | # This parameter is not required if a SigningTable is in use. | ||
+ | #Domain example.com | ||
+ | |||
+ | # Defines the name of the selector to be used when signing messages. | ||
+ | # Django : 2014-12-17 | ||
+ | # default: Selector | ||
+ | # Selector | ||
+ | |||
+ | # Specifies the minimum number of key bits for acceptable keys and signatures. | ||
+ | # Django : 2014-12-17 | ||
+ | # default: MinimumKeyBits 1024 | ||
+ | # MinimumKeyBits 1024 | ||
+ | |||
+ | # Gives the location of a private key to be used for signing ALL messages. This | ||
+ | # directive is ignored if KeyTable is enabled. | ||
+ | # Django : 2014-12-17 | ||
+ | # default: KeyFile / | ||
+ | # | ||
+ | |||
+ | # Gives the location of a file mapping key names to signing keys. In simple terms, | ||
+ | # this tells OpenDKIM where to find your keys. If present, overrides any KeyFile | ||
+ | # directive in the configuration file. Requires SigningTable be enabled. | ||
+ | # | ||
+ | |||
+ | # Defines a table used to select one or more signatures to apply to a message based | ||
+ | # on the address found in the From: header field. In simple terms, this tells | ||
+ | # OpenDKIM how to use your keys. Requires KeyTable be enabled. | ||
+ | # | ||
+ | |||
+ | # Identifies a set of " | ||
+ | # of the signing domains without credentials as such. | ||
+ | # | ||
+ | |||
+ | # Identifies a set " | ||
+ | # | ||
+ | # Django : 2014-12-17 | ||
+ | # default: unset | ||
+ | InternalHosts | ||
+ | </ | ||
+ | |||
+ | Unsere eigenen internen Hosts tragen wir in der Konfigurationsdatei // | ||
+ | # vim / | ||
+ | |||
+ | <file bash / | ||
+ | # To use this file, uncomment the # | ||
+ | # option in / | ||
+ | # may be added on separate lines (IP addresses, hostnames, or CIDR ranges). | ||
+ | # The localhost IP (127.0.0.1) should always be the first entry in this file. | ||
+ | 127.0.0.1 | ||
+ | # | ||
+ | # | ||
+ | |||
+ | # Django : 2014-12-17 - internes Netz eingetragen | ||
+ | # default: unset | ||
+ | 10.0.0.0/ | ||
+ | </ | ||
+ | |||
+ | Wie schon auch bei der **[[centos: | ||
+ | |||
+ | In der Konfigurationsdatei **main.cf** unseres Postfix-Mailserver tragen wir dazu in der Section **MILTER** nachfolgende Zeilen ein. | ||
+ | # vim / | ||
+ | |||
+ | <file bash / | ||
+ | |||
+ | ################################################################################ | ||
+ | ## MILTER | ||
+ | # Django : 2014-11-18 | ||
+ | # DMARC Test | ||
+ | # | ||
+ | opendkim_milter | ||
+ | # | ||
+ | amavisd_milter | ||
+ | ... | ||
+ | </ | ||
+ | |||
+ | In der Konfigurationsdatei // | ||
+ | # vim / | ||
+ | |||
+ | < | ||
+ | |||
+ | smtp inet n | ||
+ | smtpd | ||
+ | -o smtpd_sasl_auth_enable=no | ||
+ | -o smtpd_milters=${opendkim_milter}, | ||
+ | dnsblog | ||
+ | tlsproxy | ||
+ | </ | ||
+ | |||
+ | Bei unserem AMaViS-Host passen wir nun noch die Konfiguration an. Da wir die DKIM-Verifizierung mit Hilfe des **// | ||
+ | # vim / | ||
+ | |||
+ | <code bash> | ||
+ | |||
+ | ################################################################################ | ||
+ | ## DKIM - Domain Key Identified Mail | ||
+ | # | ||
+ | |||
+ | # DKIM-Signaturen verifizieren | ||
+ | # Django : 2014-12-17 | ||
+ | # DKIM-Verifizierung mit Hilfe des opendkim-Milters vornehmen | ||
+ | # old : $enable_dkim_verification = 1; | ||
+ | $enable_dkim_verification = 0; | ||
+ | |||
+ | # DKIM-Signaturen erstellen | ||
+ | $enable_dkim_signing = 0; | ||
+ | |||
+ | ... | ||
+ | </ | ||
+ | |||
+ | Anschließend aktivieren wir diese Änderung am AMaViS-Daemon. | ||
+ | # systemctl restart amavisd | ||
+ | |||
+ | ==== Programmstart ==== | ||
+ | Das Starten des Daemon erfolgt über folgenden Aufruf. | ||
+ | # systemctl start opendkim | ||
+ | |||
+ | Den erfolgreichen Start bzw. den Status des **smf-spf**-Daemon können wir bei Bedarf mit folgendem Aufruf abfragen. | ||
+ | # systemctl status opendkim | ||
+ | |||
+ | < | ||
+ | | ||
+ | | ||
+ | Docs: man: | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | Process: 19548 ExecStart=/ | ||
+ | Main PID: 19549 (opendkim) | ||
+ | | ||
+ | | ||
+ | |||
+ | Dec 17 16:00:28 vml000087.dmz.nausch.org opendkim[19549]: | ||
+ | Dec 17 16:00:28 vml000087.dmz.nausch.org systemd[1]: Started DomainKeys Identified Mail (DKIM) Milter. | ||
+ | </ | ||
+ | |||
+ | Im Syslog wird der Start des Daemon entsprechend dokumentiert | ||
+ | # less / | ||
+ | < | ||
+ | Dec 17 16:00:28 vml000087 systemd: Started DomainKeys Identified Mail (DKIM) Milter. | ||
+ | Dec 17 16:01:01 vml000087 systemd: Created slice user-0.slice. | ||
+ | Dec 17 16:01:01 vml000087 systemd: Starting Session 151 of user root. | ||
+ | Dec 17 16:01:01 vml000087 systemd: Started Session 151 of user root. | ||
+ | </ | ||
+ | |||
+ | |||
+ | Mit Hilfe von **netstat** können wir überprüfen, | ||
+ | # netstat -tulpen | ||
+ | |||
+ | < | ||
+ | Proto Recv-Q Send-Q Local Address | ||
+ | tcp 0 0 0.0.0.0: | ||
+ | tcp 0 0 127.0.0.1: | ||
+ | tcp 0 0 127.0.0.1: | ||
+ | </ | ||
+ | |||
+ | Gleiches können wir natürlich auch mit dem Befehl **lsof** erreichen | ||
+ | # lsof -i:8891 | ||
+ | |||
+ | | ||
+ | | ||
+ | |||
+ | Damit der Daemon automatisch beim Hochfahren des Servers gestartet wird, nutzen wir folgenden Aufruf. | ||
+ | # systemctl enable opendkim.service | ||
+ | |||
+ | ln -s '/ | ||
+ | |||
+ | Wollen wir überprüfen ob der Dienst automatisch startet, verwenden wir folgenden Aufruf. | ||
+ | |||
+ | # systemctl is-enabled opendkim.service | ||
+ | | ||
- | ==== signing ==== | + | Die Rückmeldung **enabled** zeigt an, dass der Dienst automatisch startet; ein **disabled** zeigt entsprechend an, dass der Dienst __nicht__ automatisch startet. |
+ | Nachdem wir nun unseren opendkim-Milter erfolgreich installiert und konfiguriert haben, können wir auch unseren Postfix Mailserver durchstarten, | ||
+ | ==== Tests und Logging ==== | ||
+ | Wurde die Nachricht unterwegs verändert, | ||
+ | Mar 26 12:52:15 vml000080 opendkim[10943]: | ||
+ | Hingegen wird bei positivem Ergebnis der DKIM-Validierung im maillog vermerkt. | ||
+ | Mar 26 18:02:48 vml000080 opendkim[7535]: | ||
+ | Mar 26 18:02:48 vml000080 opendkim[7535]: | ||
+ | Im Mailheader einer angenommenen eMail finden sich dann entsprechend auch Hinweise zur DKIM-Signaturüberprüfung. | ||
+ | Authentication-Results: | ||
+ | header.d=piratenpartei-bayern.de header.i=@piratenpartei-bayern.de | ||
+ | header.b=WFipEQPn; | ||
+ | Bei negativem Ergebnis wird entsprechend vermerkt. | ||
+ | Authentication-Results: | ||
+ | reason=" | ||
+ | header.d=kitterman.com header.i=@kitterman.com header.b=g01pGD3l; | ||
+ | dkim-adsp=none | ||
- | FIXME | + | ====== Links ====== |
+ | * **⇐ [[centos: | ||
+ | * **⇒ [[centos: | ||
+ | * **[[centos: | ||
+ | * **[[wiki: | ||
+ | * **[[http:// | ||