Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
centos:mail_c6:mta_9 [04.03.2014 18:41. ] – [öffentlichen Schlüssel] django | centos:mail_c6:mta_9 [22.07.2019 15:06. ] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== DKIM - Domain Key Identified Mail ====== | ====== DKIM - Domain Key Identified Mail ====== | ||
- | {{:centos:mailserver:email_key.png?96 |DKIM Logo}} 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. | + | {{:centos:mail_c6:dkim-logo.png?nolink |
- | Ursprünglich wurde DomainKeys unter dem Titel // | + | Ursprünglich wurde DomainKeys unter dem Titel // |
- | [[http:// | + | [[http:// |
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 MTA((**M**ail **T**ransfer **A**gent)) die Möglichkeit, | 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 MTA((**M**ail **T**ransfer **A**gent)) die Möglichkeit, | ||
+ | Der Domaininhaber (Sender) kann mit Hilfe von **ADSP**((**A**uthor **D**omain **S**igning **P**ractices)) 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 [[http:// | ||
===== Installation von AMaVIS ===== | ===== Installation von AMaVIS ===== | ||
Zeile 16: | Zeile 17: | ||
==== Überprüfung der DKIM-Signaturen ==== | ==== Überprüfung der DKIM-Signaturen ==== | ||
+ | |||
+ | <WRAP round tip> \\ **WICHTIG: | ||
+ | |||
+ | 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, | ||
+ | |||
+ | 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 [[centos: | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
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 / | ||
Zeile 240: | Zeile 251: | ||
} | } | ||
close(filehandle) or die " | close(filehandle) or die " | ||
+ | |||
+ | # Django : 2014-02-07 | ||
+ | # | ||
+ | @local_domains_maps = ( read_hash("/ | ||
</ | </ | ||
+ | |||
+ | Damit **AMaViS** ausgehende eMail auch signieren kann, muss der Deamon natürlich wissen, welche Domains "// | ||
+ | |||
+ | Wir tragen also in unserer Konfigurationsdatei // | ||
+ | # vim / | ||
+ | |||
+ | <file perl / | ||
+ | |||
+ | # Django : 2012-05-21 | ||
+ | # @mynetworks = qw( 127.0.0.0/8 [::1] [FE80::]/10 [FEC0::]/10 | ||
+ | # | ||
+ | @mynetworks = qw( 127.0.0.0/8 10.0.0.0/24 10.0.10.0/ | ||
+ | |||
+ | ... | ||
+ | </ | ||
+ | |||
+ | Somit haben wir alle internen Sender hinreichend qualifiziert, | ||
+ | |||
+ | Für diese Nutzer haben wir auf unserem Postfix-Mailserver den Submission-Port **587** eingerichtet. Das besondere an diesem Port ist die zwingende Notwendigkeit, | ||
+ | |||
+ | Haben wir die Einrichtung des Submission-Ports auf Seiten unseres Postfix-Servers noch nicht vorgenommen, | ||
+ | # vim / | ||
+ | <file bash / | ||
+ | |||
+ | # Django : 2013-02-15 | ||
+ | # # Submission auf Port 587 geöffnet | ||
+ | submission inet n | ||
+ | -o smtpd_tls_security_level=encrypt | ||
+ | -o smtpd_sasl_auth_enable=yes | ||
+ | -o mydestination=lists.nausch.org, | ||
+ | -o smtpd_client_restrictions=permit_mynetworks, | ||
+ | -o smtpd_etrn_restrictions=reject | ||
+ | -o smtpd_proxy_filter=amavis.dmz.nausch.org: | ||
+ | -o milter_macro_daemon_name=ORIGINATING | ||
+ | |||
+ | # Django : 2013-02-15 | ||
+ | # HTPPS auf Port 465 geöffnet | ||
+ | smtps | ||
+ | -o smtpd_tls_security_level=encrypt | ||
+ | -o smtpd_tls_wrappermode=yes | ||
+ | -o smtpd_sasl_auth_enable=yes | ||
+ | -o smtpd_client_restrictions=permit_mynetworks, | ||
+ | -o smtpd_etrn_restrictions=reject | ||
+ | -o smtpd_proxy_filter=amavis.dmz.nausch.org: | ||
+ | -o milter_macro_daemon_name=ORIGINATING | ||
+ | ... | ||
+ | </ | ||
+ | |||
+ | Anschließend starten wir unseren Postfix-Mailserver einmal durch. | ||
+ | # service postfix condrestart | ||
+ | |||
+ | Shutting down postfix: | ||
+ | Starting postfix: | ||
+ | |||
+ | Nun müssen wir unserem **AMaViS**-Daemon noch so konfigurieren, | ||
+ | # vim / | ||
+ | |||
+ | <file perl / | ||
+ | |||
+ | # Django : 2014-02-10 | ||
+ | # default: $inet_socket_port = 10024; | ||
+ | # | ||
+ | $inet_socket_port = [10024, | ||
+ | |||
+ | ... | ||
+ | |||
+ | # 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{' | ||
+ | |||
+ | $policy_bank{' | ||
+ | originating => 1, # declare that mail was submitted by our smtp client | ||
+ | allow_disclaimers => 1, # enables disclaimer insertion if available | ||
+ | # notify administrator of locally originating malware | ||
+ | virus_admin_maps => [" | ||
+ | spam_admin_maps | ||
+ | warnbadhsender | ||
+ | # forward to a smtpd service providing DKIM signing service | ||
+ | # | ||
+ | # force MTA conversion to 7-bit (e.g. before DKIM signing) | ||
+ | smtpd_discard_ehlo_keywords => [' | ||
+ | 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. | Damit AMaVis nun Kenntnis von unseren Änderungen erfährt, starten wir diesen einmal durch. | ||
Zeile 249: | Zeile 351: | ||
==== öffentlichen Schlüssel ==== | ==== ö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** | + | 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** |
# amavisd showkey nausch.org | # amavisd showkey nausch.org | ||
+ | |||
< | < | ||
140224._domainkey.nausch.org. 3600 TXT ( | 140224._domainkey.nausch.org. 3600 TXT ( | ||
Zeile 295: | Zeile 398: | ||
</ | </ | ||
- | FIXME | + | <WRAP round important> |
+ | </ | ||
+ | |||
+ | 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 | ||
+ | < | ||
+ | 140224._domainkey.omni128.de. 3600 TXT ( | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | "/ | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | |||
+ | ... | ||
+ | |||
+ | ... | ||
+ | |||
+ | ; key#16, domain c3n705.guru, | ||
+ | 140224._domainkey.c3n705.guru. 3600 TXT ( | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | "/ | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | </ | ||
+ | ===== 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 **< | ||
+ | **140224._domainkey.nausch.org** | ||
- | Diesen Schlüssel stellen wir nun als TXT über die Subdomain | + | 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 "// | ||
+ | * **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 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, | ||
+ | _adsp._domainkey.sec-mail.guru. | ||
+ | Diesen Record veröffentlichen wir nun über unseren DNS. | ||
===== Tests ===== | ===== Tests ===== | ||
Zeile 306: | Zeile 464: | ||
# amavisd testkeys | # amavisd testkeys | ||
- | TESTING# | + | TESTING# |
... | ... | ||
... | ... | ||
... | ... | ||
- | TESTING# | + | TESTING# |
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 testkey domain omni128.de | ||
- | TESTING# | + | TESTING# |
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 testkey domain ebersberger-liedersammlung.de | ||
- | TESTING# | + | TESTING# |
Die Fehlermeldung **bad base64 decode** weißt direkt auf einem Typo-Fehler im Schlüsseldaten hin! | Die Fehlermeldung **bad base64 decode** weißt direkt auf einem Typo-Fehler im Schlüsseldaten hin! | ||
Zeile 326: | Zeile 484: | ||
# amavisd testkey domain ebersberger-liedersammlung.de | # amavisd testkey domain ebersberger-liedersammlung.de | ||
- | TESTING# | + | TESTING# |
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, | 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, | ||
Wurde der public DKIM-Schlüssel **revoked**, | Wurde der public DKIM-Schlüssel **revoked**, | ||
- | TESTING# | + | TESTING# |
Möchte man einen DKIM-Schlüssel zurückziehen (**revoke**), | Möchte man einen DKIM-Schlüssel zurückziehen (**revoke**), | ||
main._domainkey.piraten-it.guru | main._domainkey.piraten-it.guru | ||
- | Wir können natürlich auch direkt den TXT-Record eines Hosts abfragen: | + | Wir können natürlich auch direkt den TXT-Record eines Hosts abfragen |
- | # host -t TXT main._domainkey.nausch.org | + | # host -t TXT 140224._domainkey.nausch.org |
- | main._domainkey.nausch.org descriptive text " | + | < |
+ | 140224._domainkey.nausch.org descriptive text " | ||
- | ==== local ==== | + | |
+ | ==== lokaler Test beim Empfänger/ | ||
Für die abschließenden Test aktivieren wir nun in der AMaViS-Konfigurationsdatei // | Für die abschließenden Test aktivieren wir nun in der AMaViS-Konfigurationsdatei // | ||
# vim / | # vim / | ||
Zeile 347: | Zeile 507: | ||
Zur Aktivierung der DKIM-Signaturfunktion starten wir den AMaViS-Dämon 1x durch. | Zur Aktivierung der DKIM-Signaturfunktion starten wir den AMaViS-Dämon 1x durch. | ||
- | # service amavisd | + | # service amavisd |
- | | + | Shutting |
- | | + | Starting Mail Virus Scanner (amavisd): |
Schicken wir nun eine Test-eMail so findet der Empfänger im Mailheader die entsprechende DKIM-Signatur: | Schicken wir nun eine Test-eMail so findet der Empfänger im Mailheader die entsprechende DKIM-Signatur: | ||
< | < | ||
- | content-transfer-encoding: | + | content-transfer-encoding: |
- | :subject: | + | : |
- | : | + | 140224; t=1394130616; x=1395945017; bh=frcCV1k9oG9oKj3dpUqdJg1Px |
- | HSbA6sPw6t20KKJq4BJloWj/gx+FxejGNDKe4s=; b=SY5VgOrZ96JkrXrte9SJQ | + | RT2RSN/XKdLCPjaYaY=; b=JTAoETI+ZtTJ0xFDk4DcZqDxPAq+fOuQ+BbjyYmMx |
- | 5FvtveuL9D64c0snDhqNNH/QeaYUGQRKPeNvkkLRMoC+pZpSUL4jcsNm3R3cIrKb | + | izj2W0G8zJe+a5RVAKj9nFlPgPB1KtQ3rCPXmYsn59zJ/ |
- | vPxz94JSm2cSh8cMXjDLcqxfbTd0CEv3lh2VrCSZVVwyoknH/+Z6BHYcJuaMJIrj | + | Hf3z8QmFmPWvvBx/bLKWrs9+RwsckDsJ7OSh1u3pOvqaTzdMjOcxt3CFNFXhSBj0 |
- | DRI//gty7R70y6q4IJvskA= | + | ipOZa2FrXNeHJpAhMpAFZ9ynhxV8ekg9v000f6ZLKlzTj5MNuXzohhfdH7I1hy/R |
+ | b9r+/ | ||
+ | o+LB2i8zLWNe56hrKDzEoOS872xQQvErezZ4+X7UPpMeswspcaLdnSkbeWMNGElw | ||
+ | pTpL/h/WN3lJiVYB7+ZrC0k/ | ||
+ | S4Gnk0yXgrx6B9wVwytAhEguDe3dhm6stQgkzvSi0sl1I9WV85OS3+5sFfOpuvju | ||
+ | icOrI2DGNZnuFWFmbiaTLmMlw4y2QENxP/ | ||
+ | mqH8mwZRdaTcQD2M3mtGNqDYIlnCsir/ | ||
+ | XkEEoELtW7aIWIKM2xWagUtmVVW/ | ||
+ | dk= | ||
</ | </ | ||
Der empfangende Mailserver ist mit Hilfe des **Authentication-Results:// | Der empfangende Mailserver ist mit Hilfe des **Authentication-Results:// | ||
- | < | + | < |
- | dkim=pass (1024-bit key) header.d=nausch.org | + | 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: | Wurde die Nachricht hingegen verändert, so schlägt die Überprüfung fehl und wird entsprechend quittiert: | ||
< | < | ||
Zeile 371: | Zeile 540: | ||
header.d=controlc.de | header.d=controlc.de | ||
</ | </ | ||
- | Die Veränderung der Nachricht passierte in dem obigen Beispiel dadurch, dass die Nachricht aus einer Mailingliste vom Mailinglisten verändert wurde, da am ende ein Listenspezifischer | + | Die Veränderung der Nachricht passierte in dem obigen Beispiel dadurch, dass die Nachricht aus einer Mailingliste vom Mailinglisten-Server |
==== WEB-online ==== | ==== WEB-online ==== | ||
Eine sehr gute und einfache Möglichkeit die DKIM-Konfiguration zu testen, stellt die [[http:// | 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. | Die angegebene temporäre eMailadresse kopieren wir uns und schicken an diese eine Testnachricht. | ||
- | {{ :centos:mailserver: | + | {{ :centos:mail_c6: |
Über die Schaltfläche **//[View Results]// | Über die Schaltfläche **//[View Results]// | ||
=== Original Message: === | === Original Message: === | ||
- | < | + | < |
- | X-Original-To: | + | X-Original-To: |
- | Delivered-To: | + | Delivered-To: |
- | Received: from mx1.nausch.org (mx1.nausch.org [88.217.187.21]) | + | Received: from mx01.nausch.org (mx01.nausch.org [217.91.103.190]) |
- | by www.brandonchecketts.com (Postfix) with ESMTP id 2AB933091E | + | by yen.roundsphere.com (Postfix) with ESMTP id 7297B53300D2 |
- | for <zSQ3lX8C5X@www.brandonchecketts.com>; | + | for <Dj4n90-i5-a-G33k@www.brandonchecketts.com>; |
- | Received: from localhost | + | Received: from viruswall.dmz.nausch.org |
- | by mx1.nausch.org (Postfix) with ESMTP id 392E71158615 | + | by mx01.nausch.org (Postfix) with ESMTP id 691224A |
- | for <zSQ3lX8C5X@www.brandonchecketts.com>; | + | for <Dj4n90-i5-a-G33k@www.brandonchecketts.com>; |
DKIM-Signature: | DKIM-Signature: | ||
- | x-mailer: | + | content-transfer-encoding: |
- | :content-transfer-encoding: | + | : |
- | : | + | : |
- | t=1247914197; x=1249728597; bh=E1isxuEic/ | + | mKE3eWNgYb30A42NNvzmrD4zdGQYblGKdqriyyJM=; b=FM7au9fI7gUwznGnpZd |
- | HS/Xwkrnr3I=; b=EEIoq4COIkREvU+Oil+f0Qg0yrwdYX0mZFEtnlqRR06ck6HV | + | m2iCsFB0ufNhWGcGNadPZC82G6XhJ+9TRrXIhqgBLHWvVMZ4XvcWfoX0QEwjwU8Q |
- | Oap6CURctdOqHqlFhkG4TXJtgDKNNhaAbDqG8wXlYFxhbQ+s1dY+TIBQDhVy445z | + | SuLItU4J/+HuGFhrgEkbDO3TzYvRg1LzgTVX4CeYSfQ7rwcoOrcCmDge1li9W+kB |
- | D4NWWQ1UtbHocHrCHl0j1yPHVCSgWNIlRR7w4By1LsuNhTbY/sqnULNldJk= | + | kfmk3ZSdwHJIjAU+qvb9fY706FGZpv8vMm6k5jH4fIptrNsncyT131P4bp9Kj4eF |
+ | kIYCz1jErtbsxicWmUMv4Jvb02+hfYfecmoT318xsq6J8IojIVNVLEeBDewkhI0s | ||
+ | ae5tjbgF8HUM8v3STvbd9q78+wVHerSV/L3KyUJQjMlQr+dWXn2W/ | ||
+ | xNlNdKlekrl1GdqGgIFxWAzQncl0qLWzvla3QZpoA/ | ||
+ | 1TDWALr1TqHP5Hlw9uuBKxe24JEqBf+R+Srpy1rJFXVjNhE6bskYC+mk4czfjPZL | ||
+ | LmJPRUNiVwI50scsxq6p5uYFqab0ls+kv7pBYITbxuHtZdtEFuS/ | ||
+ | l1Npp173MIWTT/ | ||
+ | ivaFQpBFqNna91f2/ | ||
+ | BiywAPRwJeqcAn2WemOdRrQA= | ||
X-Virus-Scanned: | X-Virus-Scanned: | ||
- | Received: from mx1.nausch.org ([127.0.0.1]) | + | Received: from mx01.nausch.org ([10.0.0.80]) |
- | by localhost | + | by viruswall.dmz.nausch.org |
- | with ESMTP id zUoWGqr6KT3G | + | with ESMTP id cQavTPLwa_If |
- | Sat, 18 Jul 2009 12:49:57 +0200 (CEST) | + | Thu, 6 Mar 2014 19:42:00 +0100 (CET) |
- | Received: from buero.nausch.org (office.nausch.org [192.168.10.20]) | + | Received: from pml010045.intra.nausch.org (vml000020.dmz.nausch.org [10.0.0.20]) |
- | by mx1.nausch.org (Postfix) with ESMTP | + | (using SSLv3 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) |
- | for <zSQ3lX8C5X@www.brandonchecketts.com>; | + | (No client certificate requested) |
- | Received: by buero.nausch.org | + | by mx01.nausch.org (Postfix) with ESMTPSA |
- | id 5F1722DC040E; | + | for <Dj4n90-i5-a-G33k@www.brandonchecketts.com>; |
- | Subject: Testmessage | + | Message-ID: < |
- | From: Michael Nausch | + | Date: Thu, 06 Mar 2014 19:42:09 +0100 |
- | Reply-To: michael@nausch.org | + | From: " |
- | To: zSQ3lX8C5X@www.brandonchecketts.com | + | User-Agent: Mozilla/5.0 (X11; Linux i686; rv:17.0) Gecko/ |
- | Content-Type: | + | MIME-Version: |
- | Content-Transfer-Encoding: | + | To: Dj4n90-i5-a-G33k@www.brandonchecketts.com |
- | Organization: | + | Subject: DKIM-Test |
- | Date: Sat, 18 Jul 2009 12:49:57 +0200 | + | X-Enigmail-Version: |
- | Message-Id: < | + | Content-Type: |
- | Mime-Version: | + | Content-Transfer-Encoding: |
- | X-Mailer: Evolution 2.12.3 (2.12.3-8.el5_2.3) | + | |
- | HI, | + | -----BEGIN PGP SIGNED MESSAGE----- |
+ | Hash: SHA1 | ||
- | ist nur ein Test f=C3=BCr' | + | Na, dann wollen wir mal sehen,ob das Ganze auch so funktioniert, |
+ | wir uns das vorstellen! | ||
+ | -----BEGIN PGP SIGNATURE----- | ||
+ | Version: GnuPG v1.4.13 (GNU/ | ||
+ | Comment: Using GnuPG with Thunderbird - http:// | ||
- | ttyl, | + | iQIcBAEBAgAGBQJTGMGAAAoJEAdOz2FQpr/ |
- | Django | + | 4uSwsIfcYu4iMnpjDtDk2+z3EqW/ |
+ | On4tnNlE5BgS5l6Dz4VnteBmt71NCOjSiWe2FipDsWxohjT+F+jPgeoPdk8S+OJM | ||
+ | Jtzchq8VxiMh7n1evD14/ | ||
+ | z0+GTv98SYkVADVkru7a24A8GRklWnP1D9KpOQhMsFa4ip4YjW7khfsPd5oSrNOC | ||
+ | VxI70za89AeN/ | ||
+ | fzX9FKIq6Xqkvrq0T07ZWvOU33hY/ | ||
+ | CaQEhKbgkVK2YJvXlpmsgc10FwNcpXHilLlUDsb+fC0ZQgZNBlu0hXs+56CbWM8l | ||
+ | 81r9w3nPQ7jyo4FRQmFtzKPcOffs3+272bLoPTTjAPZCNogJhIfn60zQm6JEnTYS | ||
+ | VjwACvx2JEKI7sZ26CWk4V0fVMZU8lZUCbIqK+fNpOtJ9dA8O2t9/ | ||
+ | vQMB1bRXgMyxItR+L+PA9FW0xdInFlNvcetHRNBXaAYkht+zq5anpUjn9FrFypTQ | ||
+ | EowtsmxX9pfKCPqBEvdT | ||
+ | =Jb01 | ||
+ | -----END PGP SIGNATURE----- | ||
</ | </ | ||
=== DKIM Information: | === DKIM Information: | ||
Zeile 432: | Zeile 625: | ||
Message contains this DKIM Signature: | Message contains this DKIM Signature: | ||
DKIM-Signature: | DKIM-Signature: | ||
- | x-mailer: | + | content-transfer-encoding: |
- | :content-transfer-encoding: | + | : |
- | : | + | : |
- | t=1247914197; x=1249728597; bh=E1isxuEic/ | + | mKE3eWNgYb30A42NNvzmrD4zdGQYblGKdqriyyJM=; b=FM7au9fI7gUwznGnpZd |
- | HS/Xwkrnr3I=; b=EEIoq4COIkREvU+Oil+f0Qg0yrwdYX0mZFEtnlqRR06ck6HV | + | m2iCsFB0ufNhWGcGNadPZC82G6XhJ+9TRrXIhqgBLHWvVMZ4XvcWfoX0QEwjwU8Q |
- | Oap6CURctdOqHqlFhkG4TXJtgDKNNhaAbDqG8wXlYFxhbQ+s1dY+TIBQDhVy445z | + | SuLItU4J/+HuGFhrgEkbDO3TzYvRg1LzgTVX4CeYSfQ7rwcoOrcCmDge1li9W+kB |
- | D4NWWQ1UtbHocHrCHl0j1yPHVCSgWNIlRR7w4By1LsuNhTbY/sqnULNldJk= | + | kfmk3ZSdwHJIjAU+qvb9fY706FGZpv8vMm6k5jH4fIptrNsncyT131P4bp9Kj4eF |
+ | kIYCz1jErtbsxicWmUMv4Jvb02+hfYfecmoT318xsq6J8IojIVNVLEeBDewkhI0s | ||
+ | ae5tjbgF8HUM8v3STvbd9q78+wVHerSV/L3KyUJQjMlQr+dWXn2W/ | ||
+ | xNlNdKlekrl1GdqGgIFxWAzQncl0qLWzvla3QZpoA/ | ||
+ | 1TDWALr1TqHP5Hlw9uuBKxe24JEqBf+R+Srpy1rJFXVjNhE6bskYC+mk4czfjPZL | ||
+ | LmJPRUNiVwI50scsxq6p5uYFqab0ls+kv7pBYITbxuHtZdtEFuS/ | ||
+ | l1Npp173MIWTT/ | ||
+ | ivaFQpBFqNna91f2/ | ||
+ | BiywAPRwJeqcAn2WemOdRrQA= | ||
Zeile 446: | Zeile 647: | ||
c= Method: | c= Method: | ||
d= Domain: | d= Domain: | ||
- | s= Selector: | + | s= Selector: |
q= Protocol: | q= Protocol: | ||
- | bh= E1isxuEic/ | + | bh= c0z |
- | HS/Xwkrnr3I= | + | mKE3eWNgYb30A42NNvzmrD4zdGQYblGKdqriyyJM= |
- | h= Signed Headers: | + | h= Signed Headers: |
- | :content-transfer-encoding: | + | : |
- | : | + | : |
- | b= Data: | + | b= Data: |
- | Oap6CURctdOqHqlFhkG4TXJtgDKNNhaAbDqG8wXlYFxhbQ+s1dY+TIBQDhVy445z | + | m2iCsFB0ufNhWGcGNadPZC82G6XhJ+9TRrXIhqgBLHWvVMZ4XvcWfoX0QEwjwU8Q |
- | D4NWWQ1UtbHocHrCHl0j1yPHVCSgWNIlRR7w4By1LsuNhTbY/sqnULNldJk= | + | SuLItU4J/+HuGFhrgEkbDO3TzYvRg1LzgTVX4CeYSfQ7rwcoOrcCmDge1li9W+kB |
+ | kfmk3ZSdwHJIjAU+qvb9fY706FGZpv8vMm6k5jH4fIptrNsncyT131P4bp9Kj4eF | ||
+ | kIYCz1jErtbsxicWmUMv4Jvb02+hfYfecmoT318xsq6J8IojIVNVLEeBDewkhI0s | ||
+ | ae5tjbgF8HUM8v3STvbd9q78+wVHerSV/L3KyUJQjMlQr+dWXn2W/ | ||
+ | xNlNdKlekrl1GdqGgIFxWAzQncl0qLWzvla3QZpoA/ | ||
+ | 1TDWALr1TqHP5Hlw9uuBKxe24JEqBf+R+Srpy1rJFXVjNhE6bskYC+mk4czfjPZL | ||
+ | LmJPRUNiVwI50scsxq6p5uYFqab0ls+kv7pBYITbxuHtZdtEFuS/ | ||
+ | l1Npp173MIWTT/ | ||
+ | ivaFQpBFqNna91f2/ | ||
+ | BiywAPRwJeqcAn2WemOdRrQA= | ||
Public Key DNS Lookup | Public Key DNS Lookup | ||
- | Building DNS Query for main._domainkey.nausch.org | + | Building DNS Query for 140224._domainkey.nausch.org |
- | Retrieved this publickey from DNS: v=DKIM1; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDWypzomx/COZmYML/9j/MRNH9Chw652qzbHjM4RdzpeWzainKC+kyYP+VuoJWMtUX2KSo+kTuWaH4AUgwWSxKq4IBq34MgWsDi3h/mFekOqtnIHTZM16CLtouQDlkUYdatXLcMTlhIO/AH9eNB2F9qbRFRB4WWJyuCF6GNQLX9jQIDAQAB | + | Retrieved this publickey from DNS: v=DKIM1; p=MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAuJ3/CruOs3fCU0ujOStcNN85TJh+5HvMa9m99C5XuRBlxOr+fp5BeIEtiPO0szKvvPojwrueCq0oOuEzjR/i2ObpRkzKRUXmAa0qVezUZwQIbKeiuKII0PnpQclDrmQrzSXcQWPT57tkPg17Q9WamFUUaHeN3+pVGtMyjYekRaAoRlV+a1gD111kXMPhiaFTMIncoRBS/gYN8FjfekH+ezqbLHLB8DLJQBZEGUILvJjAHX0722XyqYtkn1qfv63nPRGw/ |
Validating Signature | Validating Signature | ||
result = pass | result = pass | ||
- | Details: </ | + | Details: |
+ | </ | ||
=== SPF Information: | === SPF Information: | ||
< | < | ||
- | Helo Address = mx1.nausch.org | + | Helo Address = mx01.nausch.org |
- | From Address = michael@nausch.org | + | From Address = django@nausch.org |
- | From IP = 88.217.187.21 | + | From IP = 217.91.103.190 |
SPF Record Lookup | SPF Record Lookup | ||
Looking up TXT SPF record for nausch.org | Looking up TXT SPF record for nausch.org | ||
- | Found the following namesevers for nausch.org: | + | Found the following namesevers for nausch.org: |
- | Retrieved this SPF Record: v=spf1 ip4:88.217.187.21/32 a mx include: | + | Retrieved this SPF Record: v=spf1 ip4:217.91.103.190/32 a mx include: |
- | Result: | + | using authoritative server {ns.udagdns.de} directly for SPF Check |
+ | Result: | ||
Result code: pass | Result code: pass | ||
- | Local Explanation: | + | Local Explanation: |
- | spf_header = Received-SPF: | + | spf_header = Received-SPF: |
</ | </ | ||
+ | === SPAM-Scoring: | ||
+ | < | ||
+ | Message is NOT marked as spam | ||
+ | Points breakdown: | ||
+ | -0.0 T_RP_MATCHES_RCVD | ||
+ | domain | ||
+ | -0.0 SPF_PASS | ||
+ | 0.9 FRT_TODAY2 | ||
+ | -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. | ||
+ | |||
+ | ==== 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 | ||
+ | Install Date: Tue 25 Mar 2014 06:04:24 PM CET Build Host: lisse.hasselt.wieers.com | ||
+ | Group : System Environment/ | ||
+ | Size : 593359 | ||
+ | Signature | ||
+ | Packager | ||
+ | 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 (signer) and v (verifier). Default is v. | ||
+ | Mode v | ||
+ | |||
+ | # Log activity to the system log. | ||
+ | Syslog yes | ||
+ | |||
+ | # Log additional entries indicating successful signing or verification of messages. | ||
+ | SyslogSuccess yes | ||
+ | |||
+ | # 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 yes | ||
+ | |||
+ | # Attempt to become the specified user before starting operations. | ||
+ | UserID opendkim: | ||
+ | |||
+ | # Create a socket through which your MTA can communicate. | ||
+ | # Django: 2014-03-25 | ||
+ | # default: Socket inet: | ||
+ | Socket inet: | ||
+ | |||
+ | # 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. | ||
+ | # | ||
+ | |||
+ | ## SIGNING OPTIONS | ||
+ | |||
+ | # Selects the canonicalization method(s) to be used when signing messages. | ||
+ | Canonicalization relaxed/ | ||
+ | |||
+ | # 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. | ||
+ | # | ||
+ | |||
+ | # Defines the name of the selector to be used when signing messages. | ||
+ | # | ||
+ | |||
+ | # Gives the location of a private key to be used for signing ALL messages. | ||
+ | # | ||
+ | |||
+ | # 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 | ||
+ | # setting in the configuration file. | ||
+ | # | ||
+ | |||
+ | # 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. | ||
+ | # | ||
+ | |||
+ | # Identifies a set of " | ||
+ | # of the signing domains without credentials as such. | ||
+ | # | ||
+ | # Django : 2014-03-25 | ||
+ | ExternalIgnoreList | ||
+ | |||
+ | # Identifies a set internal hosts whose mail should be signed rather than verified. | ||
+ | # | ||
+ | </ | ||
+ | # vim / | ||
+ | Wie schon auch bei der [[centos: | ||
+ | |||
+ | In der Konfigurationsdatei **main.cf** unseres Postfix-Mailserver tragen wir nun noch am Ende nachfolgende Zeilen ein. | ||
+ | # vim / | ||
+ | <file bash / | ||
+ | |||
+ | # Django : 2014-03-16 | ||
+ | # SPF-Check und DKIM-Signaturüberprüfung via SMF-SPF- und DKIM-Milter einbinden. | ||
+ | smtpd_milters = | ||
+ | # SMF-SPF-Milter: | ||
+ | | ||
+ | # DKIM-Milter | ||
+ | | ||
+ | ... | ||
+ | </ | ||
+ | ==== Programmstart ==== | ||
+ | === erster manueller Start === | ||
+ | Nun können wir das erste mal den Daemon anstarten. | ||
+ | # service opendkim start | ||
+ | |||
+ | Starting OpenDKIM Milter: | ||
+ | |||
+ | In der Prozessliste finden wir nun unseren Prozess opendkim, der mit den Rechten des Users opendkim läuft: | ||
+ | # ps auxw | grep opendkim | ||
+ | |||
+ | opendkim | ||
+ | |||
+ | Mittels lsof können wir nun noch überprüfen, | ||
+ | # lsof -i :10011 | ||
+ | |||
+ | COMMAND | ||
+ | opendkim 7535 opendkim | ||
+ | |||
+ | === automatisches Starten des Dienste beim Systemstart | ||
+ | Damit der OpenDKIM-Milter-Daemon automatisch bei jedem Systemstart startet, denn ohne laufenden **opendkim-daemon** verweigert nun unser **postfix** die Annahme der Nachrichten, | ||
+ | # chkconfig opendkim on | ||
+ | |||
+ | Die Überprüfungung ob der Dienst (Daemon) smf-spfwirklich bei jedem Systemstart automatisch mit gestartet wird, kann durch folgenden Befehle erreicht werden: | ||
+ | # chkconfig --list | grep opendkim | ||
+ | |||
+ | opendkim | ||
+ | |||
+ | Wichtig sind jeweils die Schalter **on** bei den Runleveln - **2 3 4 5**. | ||
+ | |||
+ | Anschließend starten wir unseren Postfix-Mailserver einmal durch, damit unsere zuvor eingetragene Konfigurationsänderung aktiv werden kann. | ||
+ | # service postfix condrestart | ||
+ | |||
+ | Shutting down postfix: | ||
+ | Starting postfix: | ||
+ | |||
+ | ==== 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 | ||
====== Links ====== | ====== Links ====== | ||
* **[[centos: | * **[[centos: | ||
* **[[wiki: | * **[[wiki: | ||
* **[[http:// | * **[[http:// | ||
- | |||
- | ~~DISCUSSION~~ | ||
- | |||