DKIM – Domain Keys
- Installation
- Konfiguration
- Testen
- Fehlermeldungen
- patsy._domainkey.domain1.com: key data is not secure: /etc/mail is writeable and owned by uid 118 which is not the executing uid (120) or the superuserpatsy opendkim[16018]: w5QE5QWt016241: error loading key 'patsy._domainkey.domain1.com'
- Sep 6 13:03:15 patsy opendkim[2198]: patsy._domainkey.domain1.com: key data is not secure: /etc/opendkim/conf is writeable and owned by uid 120 which is not the executing uid (0)
Ich habe das Setup bereits unter FreeBSD gemacht (hier beschrieben) – unter Ubuntu ändert es sich nur leicht. Daher verweise ich ab und zu auf das FreeBSD Tutorial um nicht alles doppelt schreiben zu müssen 😉
Setup unter Ubuntu:
Installation
sudo apt-get install opendkim opendkim-tools
Konfiguration
Für eine einzelne Domain können mehrere Server das Versenden der Emails übernehmen. So kann es mehrere unterschiedliche öffentliche Schlüssel pro Sender Domain geben. Um diese Funktion zu unterstützen, wird der DNS-Namespace durch „Selektoren“ unterteilt. Selektoren sind willkürliche Namen unterhalb des „_domainkey“ Namensraum. Zum Beispiel können Selektoren die Namen der Serverstandorte angeben (z. B. „mta1“, „mta2“ und „mta3“.
Das Wichtigste ist: Der Selektor zeigt den öffentlichen Schlüssel des DomainKeys / DKIM an. Beispiel: Wenn dein Domain-Selektor „patsy“ lautet, lautet dein öffentlicher Schlüsselsatz „patsy._domainkey.yourdomain“; Wenn dein Domain-Selektor „mta1“ lautet, lautet dein öffentlicher Schlüsselsatz „mta1._domainkey.yourdomain“.
Ich möchte die Keys in folgendem Verzeichnis speichern:
sudo mkdir /etc/opendkim/
cd /etc/opendkim
Und nun den Key mit dem Selector „patsy“ für die Domain domain1.com generieren:
sudo /usr/bin/opendkim-genkey -s patsy -d domain1.com -t
Dieses Script hat jetzt im aktuellen Verzeichnis zwei Files generiert:
patsy.private
patsy.txt
Der Inhalt von patsy.txt kommt in den DNS Record von domain1.com rein.
Die detailierten Infos dazu in meinem anderen Tutorial für die Konfiguration unter FreeBSD:
Hauptunterschiede zur FreeBSD Config:
FreeBSD | Ubuntu | |
Verzeichnis | /var/db/dkim/keys/ | /etc/opendkim/conf/keys |
User | mailnull | opendkim |
Config File Location | /usr/local/etc/mail/opendkim.conf | /etc/opendkim.conf |
Also Verzeichnisse erstellen & Dateien Verschieben
sudo mkdir -p /etc/opendkim/conf/keys
mv patsy.private /etc/opendkim/conf/keys/domain1.com.key
mv patsy.txt /etc/opendkim/conf/keys/domain1.com.public sudo chmod 600 /etc/opendkim/conf/keys/domain1.com.key sudo chown -R opendkim:opendkim /etc/opendkim/conf
Nun KeyFile & SigningTable erstellen:
sudo touch /etc/opendkim/conf/keyfile sudo touch /etc/opendkim/conf/signingtable
Dann die Konfiguration wie hier beschrieben abschliessen.
Locations:
- /etc/opendkim.conf
- /etc/default/opendkim
- /etc/opendkim/ (frei wählbar, die Keys sollten sich einfach nicht im /etc/mail Verzeichnis befinden -> siehe Fehlermeldungen)
StartupScript
sudo vi /etc/default/opendkim
Das File sollte so au aussehen:
# Command-line options specified here will override the contents of
# /etc/opendkim.conf. See opendkim(8) for a complete list of options.
DAEMON_OPTS="-b s -c relaxed/simple -D -S rsa-sha1"
#
# Uncomment to specify an alternate socket
# Note that setting this will override any Socket value in opendkim.conf
# default:
##SOCKET="local:/var/run/opendkim/opendkim.sock"
# listen on loopback on port 8892
SOCKET="inet:8892@localhost"
# listen on all interfaces on port 54321:
#SOCKET="inet:54321"
# listen on loopback on port 12345:
#SOCKET="inet:12345@localhost"
# listen on 192.0.2.1 on port 12345:
#SOCKET="inet:12345@192.0.2.1"
Und Service neu starten
sudo service opendkim stop
sudo service opendkim start
Mailer config
Einmal Sendmail und einmal Postfix als Beispiel.
Sendmail Config
Folgende Zeile noch ins sendmail.mc
INPUT_MAIL_FILTER(`opendkim', `S=inet:8892@localhost')dnl
Config File als root neu generieren
sudo -i
m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
exit
und sendmail neu starten
sudo service sendmail restart
Postfix Config
Config File bearbeiten
vi /etc/postfix/main.cf
und folgende Zeilen einfügen
# dkim
milter_default_action = accept
smtpd_milters = inet:localhost:8892
# bei mehreren Miltern, müssten diese zum Beispiel so ergänzt werden:
# smtpd_milters = unix:spamass/spamass.sock, inet:localhost:8892
non_smtpd_milters = inet:localhost:8892
Legende:
milter_default_action = accept
führt dazu, dass die Mails trotz defektem Milter akzeptiert werden sollensmtpd_milters
gelten für die Mails über das SMTP Protokollnon_smtpd_milters
gelten für lokale Mails (z.B. über sendmail)
und Postfix neu starten
service postfix restart
Testen
Fehlermeldungen
im mail.log
patsy._domainkey.domain1.com: key data is not secure: /etc/mail is writeable and owned by uid 118 which is not the executing uid (120) or the superuser
patsy opendkim[16018]: w5QE5QWt016241: error loading key ‚patsy._domainkey.domain1.com‘
Das ist anscheinend ein Bug, der bereits längst hätte gefixt werden müssen, wurde aber anscheinend noch nicht 😉
Problem war, dass ich als Key Verzeichnis:
/etc/mail/dkim/
wählte. Für /etc/mail/dkim/ habe ich ownership, etc korrekt eingestellt. Jedoch reklamiert er wegen den Einstellungen vom /etc/mail Verzeichnis.
Lösung:
Ein anderes Verzeichnis für die Keys anlegen. Ich arbeite jetzt mit
/etc/opendkim/conf/
Sep 6 13:03:15 patsy opendkim[2198]: patsy._domainkey.domain1.com: key data is not secure: /etc/opendkim/conf is writeable and owned by uid 120 which is not the executing uid (0)
so, selbes Problem wie oben. Hab jetzt den Besitzer vom Verzeichnis /etc/opendkim/conf/ geändert von bisher opendkim:opendkim auf root:root
cd /etc/opendkim
chown -R root:root conf/
Jetzt gehts ohne Errors durch