-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. Dies ist eine alte Version des Dokuments!
opendkim
, zum Testen zusätzlich: opendkim-tools miltertest
mkdir /etc/opendkim cd /etc/opendkim opendkim-genkey -d linuxhotel.de
cat default.txt >> /var/cache/bind/master/linuxhotel.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.
vim /var/cache/bind/master/linuxhotel.de named-checkzone -D linuxhotel.de /var/cache/bind/master/linuxhotel.de | grep _domainkey
→${selector}._domainkey.${domain}
default._domainkey.linuxhotel.de. 86400 IN TXT "v=DKIM1; h=sha256; k=rsa; " "p=MIIB....
rndc reload linuxhotel.de journalctl -fu named.service
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 ?)
opendkim-testkey -d linuxhotel.de -s default -k default.private -vv
→ „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 DNSSEC. Aber natürlich ist es mit DNSSEC besser.
Verzeichnis für Unix-Socket anlegen:
mkdir /var/spool/postfix/opendkim chgrp opendkim /var/spool/postfix/opendkim chmod go-rwx /var/spool/postfix/opendkim
Domain linuxhotel.de # können auch mehrere Domains sein, kann auch ein Pfad zu einer Datei sein, die mehrere Domains enthält. # Selector 2022 # wenn man nichts einstellt, dann "default" 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, # 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.
Die 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.
Syntax testen:
opendkim -n
opendkim neu starten:
systemctl restart opendkim.service
To: test@example.com Subject: Testing DKIM Date: Wed, 29 Jan 2014 17:34:00 +0000 (UTC) From: nutzer@linuxhotel.de hello dkim
opendkim-testmsg -d linuxhotel.de -k /etc/opendkim/default.private -s default < test.eml
-- usage: -- 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 -- TODO: auth_type conn = mt.connect(socket) if conn == nil then error "mt.connect() failed" else msg = "connected to " .. socket print(msg) end conninfo = mt.conninfo(conn, host, ip) if conninfo ~= nil then error "mt.conninfo() failed" else msg = "send connection info - host: " .. host .. ", ip: " .. ip print(msg) end print("") print("send envelope macros and sender data") -- mt.helo() is called implicitly -- TODO: auth_type mt.macro(conn, SMFIC_MAIL, "i", "test-id") if mt.mailfrom(conn, from) ~= nil then error "mt.mailfrom() failed" else msg = "send mailfrom " .. from print(msg) end if mt.getreply(conn) ~= SMFIR_CONTINUE then error "mt.mailfrom() unexpected reply" end print("") print("send headers") if mt.header(conn, "From", from) ~= nil then error "mt.header(From) failed" else msg = "send From: " .. from print(msg) end -- send EOH if mt.eoh(conn) ~= nil then error "mt.eoh() failed" end if mt.getreply(conn) ~= SMFIR_CONTINUE then error "mt.eoh() unexpected reply" end if mt.eom(conn) ~= nil then error "mt.eom() failed" end if mt.getreply(conn) ~= SMFIR_ACCEPT then error "mt.eom() unexpected reply" end print("") -- verify that a test header field got added -- if mt.eom_check(conn, MT_HDRADD) then -- print("Header added") -- else -- error "no Header added" -- end if mt.eom_check(conn, MT_HDRINSERT, "DKIM-Signature") then print("DKIM-Signature added") else error "no DKIM-Signature added" end -- wrap it up! mt.disconnect(conn)
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 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:
https://www.mailhardener.com/kb/dkim https://datacadamia.com/marketing/email/postfix/opendkim
-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. 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.