Seit geraumer Zeit bekomme ich wiederholt Meldungen, dass E-Mails von Konten bei Suchmaschine oder anderen IT Anbietern nicht mehr angenommen werden. Stattdessen kommen Meldungen wie diese zurück:
Remote-MTA: dns; suchmaschine-smtp-in.l.suchmaschine.com Diagnostic-Code: smtp; 550-5.7.26 This mail is unauthenticated, which poses a security risk to the 550-5.7.26 sender and xyz users, and has been blocked. The sender must 550-5.7.26 authenticate with at least one of SPF or DKIM.
Über Sinn oder Unsinn solcher Maßnahmen, die angeblich Spam verhindern sollen, lässt sich streiten, denn auch Spammer werden wissen, wie man einen „Sender Policy Framework Record“, also „SPF Eintrag“, vornimmt. Das hat mir zwar schon den einen oder anderen Auftrag beschert, aber als Trittbrettfahrer großer Konzerne sein Geld zu verdienen, fühlt sich unlauter an.
Damit die Mails wieder ausgeliefert werden, muss bei dem Provider, dem die Homepage und der Mail Account obliegt, der erwähnte SPF Record eingetragen werden. Die Vorgehensweise ist bei den Anbietern von Mail- oder Homepage Konten unterschiedlich. Lösungen lassen sich recht schnell über die problemverursachende Suchmaschine oder den anbietenden Provider selbst finden. Sind am Ende alle Einträge richtig gemacht worden, sollte der „dig domain.de txt“ Befehl folgend Ausgabe bringen, wobei die Zeile mit „v=spf1 mx […]“ entscheidend ist:
dig xyz.de txt
; <<>> DiG 9.16.42 <<>> xyz.de txt
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49311
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;pcmacb.de. IN TXT
;; ANSWER SECTION:
xyz.de. 39312 IN TXT "v=spf1 mx a ip4:abc.def.ghi.jkl ip6:abcd:efgh:ijkl:unds:0wei:ter0:0000:0001 mx:xyz.de ~all"
;; Query time: 31 msec
;; SERVER: abc.def.x.y#53(abc.def.x.y)
;; WHEN: an einem Sonntag CEST 2023
;; MSG SIZE rcvd: 142
Create dkim keys and register at abcde.de
v=spf1 mx a ip4:245.159.200.167 ip6:2a82:c209:3915:2925:0000:0000:0000:0001 mx:abcde.de ~all
apt install opendkim opendkim-tools
nano /etc/opendkim.conf
Syslog yes
SyslogSuccess yes
#LogWhy no
Canonicalization relaxed/simple
#Mode sv
#SubDomains no
OversignHeaders From
# user (for example, Postfix). You may need to add user "postfix" to group
# "opendkim" in that case.
UserID opendkim
UMask 007
# Socket for the MTA connection (required). If the MTA is inside a chroot jail,
# it must be ensured that the socket is accessible. In Debian, Postfix runs in
# a chroot in /var/spool/postfix, therefore a Unix socket would have to be
# configured as shown on the last line below.
Socket local:/run/opendkim/opendkim.sock
#Socket inet:8891@localhost
#Socket inet:8891
#Socket local:/var/spool/postfix/opendkim/opendkim.sock
PidFile /run/opendkim/opendkim.pid
# Hosts for which to sign rather than verify, default is 127.0.0.1. See the
# OPERATION section of opendkim(8) for more information.
#InternalHosts 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12
# The trust anchor enables DNSSEC. In Debian, the trust anchor file is provided
# by the package dns-root-data.
TrustAnchorFile /usr/share/dns/root.key
#Nameservers 127.0.0.1
## added by myself
# Required for signing
KeyTable /etc/opendkim/key.table
SigningTable /etc/opendkim/signing.table
InternalHosts /etc/opendkim/trusted.hosts
# Optional but recommended:
Canonicalization relaxed/simple
Mode sv
nano /etc/postfix/main.cf
# DKIM socket for local Unix socket
smtpd_milters = unix:/run/opendkim/opendkim.sock
non_smtpd_milters = unix:/run/opendkim/opendkim.sock
milter_default_action = accept
milter_protocol = 6
mkdir -p /etc/opendkim/keys/abcde.de
chown -R opendkim:opendkim /etc/opendkim
usermod -aG opendkim postfix
nano /lib/systemd/system/opendkim.service
[Unit]
Description=OpenDKIM Milter
Documentation=man:opendkim(8) man:opendkim.conf(5) man:opendkim-lua(3) man:opendkim-genkey(8) man:opendkim-genzone(8) man:opendkim-testkey(8) http://www.opendkim.org/docs.html
After=network-online.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/run/opendkim/opendkim.pid
ExecStart=/usr/sbin/opendkim
ExecReload=/bin/kill -USR1 $127.0.0.1
localhost
mail.abcde.de
MAINPID
Restart=on-failure
UMask=007
[Install]
WantedBy=multi-user.target
nano /etc/opendkim/trusted.hosts
127.0.0.1
localhost
mail.abcde.de
nano /etc/opendkim/signing.table
*@abcde.de default._domainkey.abcde.de
nano /etc/opendkim/key.table
default._domainkey.abcde.de abcde.de:default:/etc/opendkim/keys/abcde.de/default.private
Generate the keys
cd /etc/opendkim/keys/abcde.de
opendkim-genkey -s default -d abcde.de
Make sure files are owned by opendkim
chown -R opendkim:opendkim /etc/opendkim
chmod go-r /etc/opendkim/keys/abcde.de/default.private
Entries in DNS TXT Record:
default._domainkey.abcde.de 86400 TXT 0
this is one line in “data”:
v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy8fiSlKdHX0U3b2EM4SWjU1aTAjcshJhyZt8iv5XtLv/Bf00ZJ11PqzSTtlCmsKCYYuO9BEAKVf3/nX+zmUH9KJWWnF1yU4+MYwnIpxACbrMh0BX1PlITGdDSdLnmhObiDlWqEeABBmnaUfrv+e4GKhxwPf2NjaeTObceiofz13hIOeHPFc7/5xaIkPOEjL/6ftCTRQSg2P/GqL1ePqbdzii8Cwn9EQ61g0xWFaqBug9vCFRWX+/Es1LtmIenjvSmMAn0j184o5yLzEv71uR7l0bwuRn85t6tMvocxGdeNcHuacHHZG4GZFrE/qdJCbYPBrYbMTcX0kIK5lNKNjucQIDAQAB
systemctl daemon-reexec
systemctl restart opendkim postfix
If there’s more domains:
/etc/opendkim/keys/
├── example.com/
│ ├── default.private
│ └── default.txt
├── example.org/
│ ├── default.private
│ └── default.txt
mkdir -p /etc/opendkim/keys/abc.de
mkdir -p /etc/opendkim/keys/xyz.de
mkdir -p /etc/opendkim/keys/cde-berlin.com
cd /etc/opendkim/keys/abc.de
opendkim-genkey -s default -d abc.de
chown opendkim:opendkim default.private
chmod 600 default.private
cd /etc/opendkim/keys/xyz.de
opendkim-genkey -s default -d xyz.de
chown opendkim:opendkim default.private
chmod 600 default.private
cd /etc/opendkim/keys/cde-berlin.com
opendkim-genkey -s default -d cde-berlin.com
chown opendkim:opendkim default.private
chmod 600 default.private
nano /etc/opendkim/key.table
default._domainkey.abc.de abc.de:default:/etc/opendkim/keys/abc.de/default.private
default._domainkey.xyz.de xyz.de:default:/etc/opendkim/keys/xyz.de/default.private
default._domainkey.cde-berlin.com cde-berlin.com:default:/etc/opendkim/keys/cde-berlin.com/default.private
nano /etc/opendkim/signing.table
*@abc.de default._domainkey.abc.de
*@xyz.de default._domainkey.xyz.de
*@cde-berlin.com default._domainkey.cde-berlin.com
nano /etc/opendkim/trusted.hosts
127.0.0.1
localhost
*.abc.de
*.xyz.de
*.cde-berlin.com
Generate the keys
cd /etc/opendkim/keys/abc.de
opendkim-genkey -s default -d abc.de
usw…….
chown -R opendkim:opendkim /etc/opendkim
chmod -R go-rwx /etc/opendkim/keys
systemctl daemon-reexec
systemctl restart opendkim postfix
/