Linuxhotel Wiki

Wie ging das nochmal?

Benutzer-Werkzeuge

Webseiten-Werkzeuge


fortgeschrittene:postfix-opendkim

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
fortgeschrittene:postfix-opendkim [2022/09/18 21:47]
ingo_wichmann
fortgeschrittene:postfix-opendkim [2022/12/24 11:30] (aktuell)
ingo_wichmann [opendkim konfigurieren]
Zeile 1: Zeile 1:
-TODOnoch nicht fertig+====== OpenDKIM ====== 
 +===== Pakete ===== 
 +  * Debian (11)''​opendkim'',​ zum Testen zusätzlich:​ ''​opendkim-tools miltertest''​
  
 +===== dkim Schlüsselpaar erzeugen =====
 +  mkdir /​etc/​opendkim
 +  cd /​etc/​opendkim
 +  opendkim-genkey -d linuxhotel.de
 +(( Alternativ kann man den Selector z.B. mit ''​-s 2022''​ auf einen selbst gewählten Wert setzen. ​ Übliche Werte sind der hostname (nicht der fqdn) oder das Jahr. Läßt man das wie hier weg, dann wird "​default"​ genommen. ))
  
-Pakete: +===== öffentlichen Schlüssel der DNS-Zone hinzufügen ​===== 
-  opendkim +  cat default.txt >> /​var/​cache/​bind/​master/​linuxhotel.de
-zum Testen zusätzlich:​ +
-  opendkim-tools miltertest  +
- +
-Key erzeugen: +
-  cd /​etc/​dkimkeys +
-  sudo -u opendkim opendkim-genkey -s brahma20220917 -d taikonet.de +
-(( man kann den Selector (-s brahma20220917) auch weglassen, dann wird "​default"​ genommen. Übliche Werte sind der hostname (nicht der fqdn) oder das Jahr )) +
- +
-Der Zonendatei ​hinzufügen: +
-  cat brahma20220917.txt >> /​var/​cache/​bind/​master/​ingo-wichmann.de+
  
 DKIM Keys werden selten ausgetauscht. TTL kann in der Regel länger sein als andere, z.B. auf 1D (1 Tag) anpassen. Auf der anderen Seite: zum Testen mit "​t=y;"​ kann auch eine kürzere TTL praktisch sein.  DKIM Keys werden selten ausgetauscht. TTL kann in der Regel länger sein als andere, z.B. auf 1D (1 Tag) anpassen. Auf der anderen Seite: zum Testen mit "​t=y;"​ kann auch eine kürzere TTL praktisch sein. 
  
-  vim /​var/​cache/​bind/​master/​ingo-wichmann.de +  vim /​var/​cache/​bind/​master/​linuxhotel.de 
-  named-checkzone -D ingo-wichmann.de /​var/​cache/​bind/​master/​ingo-wichmann.de | grep _domainkey+  named-checkzone -D linuxhotel.de /​var/​cache/​bind/​master/​linuxhotel.de | grep _domainkey
 ->​${selector}._domainkey.${domain} ->​${selector}._domainkey.${domain}
 <​file>​ <​file>​
-brahma20220917._domainkey.ingo-wichmann.de.   86400 IN TXT      "​v=DKIM1;​ h=sha256; k=rsa; " "​p=MIIB....+default._domainkey.linuxhotel.de.   86400 IN TXT      "​v=DKIM1;​ h=sha256; k=rsa; " "​p=MIIB....
 </​file>​ </​file>​
-  rndc reload ​ingo-wichmann.de+  rndc reload ​linuxhotel.de
   journalctl -fu named.service   journalctl -fu named.service
  
-DNS-Eintrag prüfen: +==== DNS-Eintrag prüfen ​==== 
-  dig @127.0.0.1 ​brahma20220917._domainkey.ingo-wichmann.de txt+  dig @127.0.0.1 ​default._domainkey.linuxhotel.de txt
 -> DKIM Record Check (gibt es eine Alternative zu https://​www.dmarcanalyzer.com/​dkim/​dkim-checker ?) -> DKIM Record Check (gibt es eine Alternative zu https://​www.dmarcanalyzer.com/​dkim/​dkim-checker ?)
-  ​sudo -u opendkim -g opendkim ​opendkim-testkey -d ingo-wichmann.de -s brahma20220917 ​-k brahma20220917.private -vv +  opendkim-testkey -d linuxhotel.de -s default ​-k default.private -vv 
-((-> "brahma20220917.private:​ WARNING: unsafe permissions" ​ist meiner Meinung nach hier irreführend. Das kann man mit chown opendkim brahma20220917.private && chmod 600 brahma20220917.private fixen, ​aber dadurch gibt man dem opendkim-Prozess Owner- und Schreibrechte an der DateiNicht besser. ​))+-> "key not secure" ​bedeutet, dass die DNS Antwortwort nicht mit DNSSEC validiert werden konnte (fehlendes AD flag in der Ausgabe von ''​dig''​) - DKIM funktioniert ​aber auch ohne DNSSECAber natürlich ist es mit DNSSEC ​besser. ​
  
--> "key not secure"​ bedeutet, dass die DNS Antwortwort nicht mit DNSSEC validiert werden konnte (fehlendes AD flag) DKIM funktioniert aber auch ohne DNSSEC. Aber natürlich ist es mit DNSSEC besser. ​+===== opendkim konfigurieren ===== 
 +Verzeichnis für Unix-Socket anlegen: 
 +  mkdir /​var/​spool/​postfix/​opendkim 
 +  chgrp opendkim /​var/​spool/​postfix/​opendkim 
 +  chmod o-rwx /​var/​spool/​postfix/​opendkim
  
-opendkim konfigurieren:​ 
 <file txt /​etc/​opendkim.conf>​ <file txt /​etc/​opendkim.conf>​
-Domain ​                       ​ingo-wichmann.de +Domain ​                       ​linuxhotel.de 
-# können auch mehrere Domains sein, kann auch eine Dateiname ​einer Datei sein, die mehere ​Domains enthält.+# können auch mehrere Domains sein, kann auch ein Pfad zu einer Datei sein, die mehrere ​Domains enthält.
  
-Selector ​             ​brahma20220917+Selector ​             ​2022
 # wenn man nichts einstellt, dann "​default"​ # wenn man nichts einstellt, dann "​default"​
  
-KeyFile ​                  /etc/dkimkeys/brahma20220917.private+KeyFile ​                  /etc/opendkim/default.private 
 + 
 +Socket local:/​var/​spool/​postfix/​opendkim/​opendkim.sock 
 +# Postfix smtpd läuft im chroot, daher muss der Socket da hin
  
 InternalHosts ​        ​127.0.0.0/​8, ​ InternalHosts ​        ​127.0.0.0/​8, ​
-# hier alle IP-Adressen von SMTP-Clients,​ die über diesen MTA versenden. ​+# hier alle IP-Adressen von unauthentifizierten ​SMTP-Clients,​ die über diesen MTA versenden. ​SASL-authentifizierte SMTP-Clients werden unabhängig von Ihrer IP-Adresse signiert.  
 +</​file>​
  
 +Die [[https://​wiki.debian.org/​opendkim#​DNS_resolution|opendkim-Version in Debian macht DNS-Anfragen selbst]], und nutzt nicht die Einstellungen aus ''/​etc/​nsswitch.conf''​ und ''/​etc/​resolv.conf''​. Wenn opendkim die selben Nameserver nutzen soll, dann muss man die mit ''​Nameservers ...''​ angeben. ​
  
-#KeyTable refile:/​etc/​opendkim/​KeyTable +Syntax testen
-#​SigningTable refile:/​etc/​opendkim/​SigningTable +  opendkim ​-n
-</​file>​+
  
-Verzeichnis für Unix-Socket anlegen+opendkim neu starten
-  ​mkdir /​var/​spool/​postfix/​opendkim +  ​systemctl restart ​opendkim.service
-  chgrp opendkim /​var/​spool/​postfix/​opendkim +
-  chmod go-rwx /​var/​spool/​postfix/​opendkim+
  
-Testen: ​+==== opendkim testen ==== 
 <file txt test.eml>​ <file txt test.eml>​
-To: iw@example.com+To: test@example.com
 Subject: Testing DKIM Subject: Testing DKIM
 Date: Wed, 29 Jan 2014 17:34:00 +0000 (UTC) Date: Wed, 29 Jan 2014 17:34:00 +0000 (UTC)
-From: iw@ingo-wichmann.de+From: nutzer@linuxhotel.de
  
 hello dkim hello dkim
 </​file>​ </​file>​
-  ​sudo -u opendkim ​opendkim-testmsg -d ingo-wichmann.de -k /etc/dkimkeys/brahma20220917.private -s brahma20220917 ​< test.eml+  opendkim-testmsg -d linuxhotel.de -k /etc/opendkim/default.private -s default ​< test.eml
  
 <code lua opendkim-testmilter.lua>​ <code lua opendkim-testmilter.lua>​
--- socket ​ "local:/​var/​spool/​postfix/​opendkim/​opendkim.sock+-- usage: 
--- host    "localhost+-- miltertest -s opendkim-testmilter.lua -D socket=local:/​var/​spool/​postfix/​opendkim/​opendkim.sock -host=localhost -ip=127.0.0.1 -from=test@linuxhotel.de 
--- ip      "127.0.0.1+
--- from    "test@ingo-wichmann.de"+
 -- TODO: auth_type -- TODO: auth_type
  
Zeile 92: Zeile 93:
 print("​send envelope macros and sender data") print("​send envelope macros and sender data")
 -- mt.helo() is called implicitly -- mt.helo() is called implicitly
 +-- TODO: auth_type
 mt.macro(conn,​ SMFIC_MAIL, "​i",​ "​test-id"​) mt.macro(conn,​ SMFIC_MAIL, "​i",​ "​test-id"​)
 if mt.mailfrom(conn,​ from) ~= nil then if mt.mailfrom(conn,​ from) ~= nil then
Zeile 138: Zeile 140:
 -- wrap it up! -- wrap it up!
 mt.disconnect(conn)</​code>​ mt.disconnect(conn)</​code>​
-  miltertest -s opendkim-testmilter.lua -D socket=local:/​var/​spool/​postfix/​opendkim/​opendkim.sock -D host=localhost -D ip=127.0.0.1 -D from=test@ingo-wichmann.de+  miltertest -s opendkim-testmilter.lua -D socket=local:/​var/​spool/​postfix/​opendkim/​opendkim.sock -D host=localhost -D ip=127.0.0.1 -D from=test@linuxhotel.de 
 + 
 +====== Postfix ====== 
 +(( 
 +Wenn wir opendkim bzw. unserer obigen Konfiguration nicht vertrauen:​ 
 +  postconf -e '​milter_default_action = accept'​ 
 +  postconf -e '​soft_bounce = yes' 
 +Ich würde das nur einschalten,​ wenn es tatsächlich Ärger mit dem opendkim-Milter gibt. 
 +Im Regelbetrieb sollten beide Einstellungen wieder auf ihren Default zurückgesetzt werden.  
 +)) 
 + 
 +Postfix Zugriffsrechte auf den opendkim-Socket geben: 
 +  gpasswd -a postfix opendkim
  
 +Postfix soll den opendkim-Milter nutzen:
 +  postconf -e '​smtpd_milters ​    = unix:​opendkim/​opendkim.sock'​
 +  postconf -e '​non_smtpd_milters = unix:​opendkim/​opendkim.sock'​
  
 Doku: Doku:
     https://​www.mailhardener.com/​kb/​dkim     https://​www.mailhardener.com/​kb/​dkim
     https://​datacadamia.com/​marketing/​email/​postfix/​opendkim     https://​datacadamia.com/​marketing/​email/​postfix/​opendkim
fortgeschrittene/postfix-opendkim.1663537642.txt.gz · Zuletzt geändert: 2022/09/18 21:47 von ingo_wichmann