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:03. ] – [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 ==== | ||
| 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 366: | 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 377: | 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 396: | Zeile 394: | ||
| 141126._domainkey.nausch.org descriptive text " | 141126._domainkey.nausch.org descriptive text " | ||
| + | ==== 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/24 | ||
| + | </ | ||
| + | |||
| + | 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 | ||
| + | | ||
| + | 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:// | ||