Exim4 fügt keine DKIM-Signatur hinzu

7

Ich habe 2 Tage lang versucht, Exim anzuweisen, DKIM-Signaturen auf meinem Debian8-Server hinzuzufügen. Kein Erfolg. Habe viele Anleitungen, Foren gelesen, aber keine der möglichen Lösungen auf meinem Server.

Habe die Schlüssel generiert:

cd /etc/exim4/

openssl genrsa -out example.com-private.pem 1024 -outform PEM
openssl rsa -in example.com-private.pem -out example.com.pem -pubout -outform PEM

Datei gefickt

00_local_macros 

im

/etc/exim4/conf.d/main/ 

mit folgendem Inhalt:

DKIM_CANON = relaxed
DKIM_SELECTOR = 20160604
DKIM_DOMAIN = ${lc:${domain:$h_from:}}
DKIM_PRIVATE_KEY=${if exists{/etc/exim4/${dkim_domain}-private.pem} {/etc/exim4/${dkim_domain}-private.pem}}

Haben einen Text-DNS-Eintrag veröffentlicht:

20160604._domainkey.example.com

Inhalt mit öffentlichem Schlüssel:

k=rsa;p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDRpHpC2q1ycmaqdnYlf5WI5g7ZyiXybd6EFdOqk35Sl7ZNfSeZelbyxqgLN+BzHpbp4Z4JDtKLSgBwugCePhl2xVDtQvO9XfqwQLMO5PAOONCLTwoGYrViwf5ki2zIqS2uN5MpuRTKW/IiK3CtRId+w5gjdACAvkwZWBstKEDrQQIDAQAB

# update-exim4.conf
# service exim4 restart

sogar den Server neu gestartet.

Alle E-Mails kommen immer noch ohne DKIM-Signatur an.

Versucht, Zeilen hinzuzufügen:

dkim_domain = ${lc:${domain:$h_from:}}
DKIM_PRIVATE_KEY=${if exists{/etc/exim4/${dkim_domain}-private.pem} {/etc/exim4/${dkim_domain}-private.pem}}
DKIM_CANON = relaxed
DKIM_SELECTOR = 20160604
dkim_sign_headers = true

in die Datei /etc/exim4/conf.d./transport/30_exim4-config_remote_smtp, wie in einigen Foren vorgeschlagen. Kein Erfolg. Immer noch keine DKIM-Signatur.

exim4 -bV

Exim version 4.84_2 #2 built 13-Mar-2016 17:47:19
Copyright (c) University of Cambridge, 1995 - 2014
(c) The Exim Maintainers and contributors in ACKNOWLEDGMENTS file, 2007 - 2014
Berkeley DB: Berkeley DB 5.3.28: (September  9, 2013)
Support for: crypteq iconv() IPv6 GnuTLS move_frozen_messages DKIM PRDR OCSP
Lookups (built-in): lsearch wildlsearch nwildlsearch iplsearch cdb dbm dbmjz dbmnz dnsdb dsearch nis nis0 passwd
Authenticators: cram_md5 plaintext
Routers: accept dnslookup ipliteral manualroute queryprogram redirect
Transports: appendfile/maildir/mailstore autoreply lmtp pipe smtp
Fixed never_users: 0
Size of off_t: 8
Configuration file is /var/lib/exim4/config.autogenerated

Aktualisieren

Fast alle Tutorials sind falsch. Bei der Exim-Konfiguration mit einer einzelnen Datei müssen sich die DKIM-Einstellungen in der Datei exim4.conf.template befinden. Es klappt! Aber nur eine Domain dieser Konfiguration:

DKIM_CANON = relaxed
DKIM_DOMAIN = example.com
DKIM_PRIVATE_KEY = /etc/exim4/dkim/example.com-private.pem
DKIM_SELECTOR = 20160604
#DKIM_STRICT = true

Mehrere Domänen funktionieren immer noch nicht. Versuchte mehrere Konfigurationen, aber immer noch kein Erfolg. Alle drei unten funktionieren nicht:

DKIM_CANON = relaxed
DKIM_SELECTOR = 20160604
DKIM_DOMAIN = ${sender_address_domain}
DKIM_FILE = /etc/exim4/dkim/{DKIM_DOMAIN}-private.pem
DKIM_PRIVATE_KEY = ${if exists{DKIM_FILE}{DKIM_FILE}{0}}


DKIM_CANON = relaxed
DKIM_SELECTOR = 20160604
DKIM_DOMAIN = ${lc:${domain:$h_from:}}
DKIM_PRIVATE_KEY=${if exists{/etc/exim4/dkim/${DKIM_DOMAIN}-private.pem} {/etc/exim4/dkim/${DKIM_DOMAIN}-private.pem}}

DKIM_CANON = relaxed
DKIM_SELECTOR = 20160604
dkim_domain = ${lc:${domain:$h_from:}}
DKIM_PRIVATE_KEY=${if exists{/etc/exim4/${dkim_domain}-private.pem} {/etc/exim4/${dkim_domain}-private.pem}}
aigffmss
quelle

Antworten:

5

Stellen Sie sicher, dass Sie den remote_smtpTransport verwenden. Dies sollte nach T=in /var/log/exim4/mainlogden Zeilen mit aufgeführt werden =>. Das Überprüfen von DKIM in lokal zugestellten E-Mails funktioniert nicht, da dieser Transport nicht verwendet wird. Verwenden Sie einen Überprüfungsdienst, um zu überprüfen, ob Ihre E-Mail signiert ist, z. B. http://dkimvalidator.com

Wenn Sie den remote_smtp_smarthostTransport verwenden, müssen Sie ihn so ändern, dass er die DKIM-Signatur enthält. Fügen Sie auf einem Debian / Ubuntu-Computer mit geteilter Konfiguration Folgendes an die 30_exim4-config_remote_smtp_smarthostDatei an:

# DKIM setup copied from `30_exim4-config_remove_smtp`
# see: https://serverfault.com/a/782069/117087
.ifdef DKIM_DOMAIN
dkim_domain = DKIM_DOMAIN
.endif
.ifdef DKIM_SELECTOR
dkim_selector = DKIM_SELECTOR
.endif
.ifdef DKIM_PRIVATE_KEY
dkim_private_key = DKIM_PRIVATE_KEY
.endif
.ifdef DKIM_CANON
dkim_canon = DKIM_CANON
.endif
.ifdef DKIM_STRICT
dkim_strict = DKIM_STRICT
.endif
.ifdef DKIM_SIGN_HEADERS
dkim_sign_headers = DKIM_SIGN_HEADERS
.endif

Überprüfen Sie die Berechtigungen für Ihren privaten Schlüssel. Es muss durch die Verwendung von Exim lesbar sein, unter der Debian-exim für Debian- und Ubuntu-Installationen ausgeführt wird. Wenn Ihr Transport zu soll dkim_strict, werden Nachrichten angefordert, wenn die Nachricht nicht signiert werden kann. Die Fehlerursachen werden im mainlogund protokolliert paniclog. Es ist möglicherweise einfacher, die Nachricht in der zu finden paniclog.

Dies sind die Einstellungen, die erforderlich sind, damit DKIM funktioniert. Sie scheinen einige zu vermissen. (Ich signiere für mehrere Domänen mit demselben Schlüssel. Versuchen Sie, die Signatur mit einem einzigen Schlüssel zu aktivieren, bevor Sie versuchen, ausgefallene Schlüssel für verschiedene Domänen zu verwenden.) Diese Konfiguration sollte verhindern, dass nicht signierte E-Mails vom remote_smtpTransport gesendet werden .

DKIM_CANON = relaxed
DKIM_DOMAIN = ${sender_address_domain}
DKIM_PRIVATE_KEY = CONFDIR/dkim.private.20160604
DKIM_SELECTOR = ${extract{-1}{.}{DKIM_PRIVATE_KEY}}
DKIM_STRICT = true # optional - causes signing failures to defer (requeue)
#DKIM_SIGN_HEADERS = # Use default

Sobald Sie mit einem statischen Schlüssel signiert haben, funktioniert. Sie können diese Änderungen ausprobieren

DKIM_PRIVATE_KEY = CONFDIR/${sender_address_domain}.private.201604
DKIM_SELECTOR = 20160604
DKIM_STRICT = false # optional - pass if no key available

Vielleicht möchten Sie Folgendes überprüfen:

BillThor
quelle
Ja, ich verwende remote_smtp. Einzelne Domain funktioniert nicht. Gestern habe ich bereits eine einzelne Domain ausprobiert. Kein Erfolg. DKIM_STRICT hilft nicht. Mail kommt ohne Unterschrift an. Ich habe gerade versucht, eine E-Mail an Yahoo zu senden: dkim = neutral (kein Sig). Soweit ich weiß, haben viele Menschen dieses Problem und ich frage mich, warum Exim es nicht behebt. Einige Leute wechseln einfach zu Postfix usw.
aigffmss
Ich habe überprüft, dass dkim_strict das Senden von E-Mails verhindert, wenn die Nachricht nicht signiert werden kann. Bitte fügen Sie die Ausgabe von grep DKIM /var/lib/exim/config.autogeneratedzu Ihrem Beitrag hinzu. Dies sollte Ihre DKIM-Einstellungen enthalten, wenn Sie sie an der richtigen Stelle vorgenommen haben. Dies ist anders für geteilte Dateien und Konfigurationen mit einzelnen Dateien. Es hilft, die Domain, mit der Sie arbeiten, nicht auszublenden.
BillThor
@aigffmss von Konfigurationsänderungen scheint es , Sie sollten mit dc_use_split_config='true'in update-exim4.conf.conf. Wenn nicht, sollten Ihre Änderungen in sein exim4.conf.template. In beiden Fällen müssen Sie Exim neu laden oder neu starten, damit Ihre Änderungen wirksam werden.
BillThor
Ich habe 1 Domain bearbeitet, als ich meine Konfiguration in die Datei exim4.conf.template gestellt habe. Aber nur 1 Domain. Mehrere Domänen funktionieren immer noch nicht. Ich habe gerade meine Frage aktualisiert.
Aigffmss
Versuchen Sie es DKIM_STRICT = truemit DKIM_PRIVATE_KEY = CONFDIR/${sender_address_domain}.private. Dies sollte die Fehler protokollieren. Sie können auch für alle Domänen denselben Schlüssel verwenden. Es ist nicht erforderlich, dass jede Domain einen eigenen Signaturschlüssel hat.
BillThor
3

Das funktioniert bei mir:

DKIM_CANON = relaxed
DKIM_SELECTOR = 20160604
DKIM_DOMAIN = ${lc:${domain:$h_from:}}
DKIM_PRIVATE_KEY=${if exists{/etc/exim4/dkim/${dkim_domain}-private.pem} {/etc/exim4/dkim/${dkim_domain}-private.pem}}

Diese Einstellungen müssen in der Datei exim4.conf.template abgelegt werden, wenn Sie die Exim-Konfiguration für eine einzelne Datei verwenden, und nicht in 00_local_macros oder anderen Dateien, wie in vielen Howtos angegeben.

Das Festlegen von DKIM-Signaturen in Exim ist ein Problem (ich habe 3 Tage verbracht), und Exim-Entwickler sollten es beheben.

aigffmss
quelle
1

Exim version 4.84_2 #2 built 25-Jul-2016 18:59:44

Folgendes hat bei mir funktioniert: Ich war in der genauen Situation, exim4 hat die dkim-Signatur nicht hinzugefügt.

Ich habe die Datei bearbeitet /etc/exim4/update-exim4.conf.confund festgestellt, dass die Konfigurationsdatei selbst bei Verwendung der geteilten Konfiguration falsch war. Daher musste ich diese Zeile ändern:

dc_use_split_config='true'

Und dann habe ich die 10_exim4-config_transport-macrosDatei bearbeitet und am Ende die folgenden Zeilen hinzugefügt:

DKIM_DOMAIN = ${lc:${domain:$h_from:}}
DKIM_FILE = /etc/exim4/dkim/${lc:${domain:$h_from:}}.private.key
DKIM_PRIVATE_KEY = ${if exists{DKIM_FILE}{DKIM_FILE}{0}}
DKIM_SELECTOR = exim

Die vorherige Arbeit bestand darin, die private Schlüsseldatei zu generieren und den TXT-DNS-Eintrag usw. hinzuzufügen.

jllodra
quelle