-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. 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 o-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.