Website-Icon .: blog cscholz.io :.

SysCP: DKIM mit SysCP 1.4.2

Mit SysCP 1.4.2 wurde DKIM integriert, was es dem Absender ermöglicht, seine eMails beim versenden mit einer Signatur zu versehen, die der Empfangende Server prüfen kann um festzustellen ob die eMail tatsächlich von diesem Server Versand wurde. Weitere Informationen siehe Post-ID 1212.

So wie es aussieht, ist aber in der SysCP Version 1.4.2 ein Bug bezüglich der dkim Veröffentlichung mittels DNS enthalten, der aber bereits gemeldet wurde.

Schlüssel erstellen

siehe Post 2487

dkim-milter Installation

Da das Paket dkim-filter erst mit Debian Lenny ein fester Bestandteil von Debian wird, muss das Paket aus den Backports installiert werden.

wget http://www.backports.org/debian/pool/main/d/dkim-milter/dkim-filter_2.6.0.dfsg-1~bpo40+2_i386.deb
apt-get install libmilter0
dpkg -i dkim-filter_2.6.0.dfsg-1~bpo40+2_i386.deb

Coorperation mit amavisd-new

Da ich als Content-Filter jede eMail durch amavisd-new laufen lasse, musste die Signierung der eMails am Ort der Rückgabe der eMails nach der amavis Prüfung erfolgen. Dazu habe ich die master.cf wie folgt angepasst.

/etc/postfix/master.cf
127.0.0.1:10025 inet    n       -       -       -       -       smtpd
   [...]
  -o milter_default_action=accept
  -o milter_macro_daemon_name=ORIGINATING
  -o smtpd_milters=inet:localhost:8891
  -o non_smtpd_milters=inet:localhost:8891
  -o content_filter=

anpassen der dkim-filter Konfiguration

Nun muss noch die Konfiguration angepasst werden. Dazu muss über die Datei /etc/default/dkim-filter der Port angegeben werden, über den der Filter erreichbar ist.

[...]
SOCKET="inet:8891@127.0.0.1"

Ebenso muss die Datei /etc/dkim-filter.conf an die SysCP Daten angepasst werden.

Syslog                  yes
UMask                   002

Canonicalization        relaxed/simple
Mode                    s
SubDomains              yes
X-Header                yes

KeyList         /etc/postfix/dkim/dkim-keys.conf
Domain          /etc/postfix/dkim/domains
LogWhy yes
# OmitHeaders Return-Path,Received,Comments,Keywords,Bcc,Resent-Bcc,To

Zur Erklärung der Einzelnen Parameter siehe man dkim-filter.conf

[…]

Mode (string)
Selects operating modes.  The string is a concatenation of characters which indicate which mode(s) of operation are desired.  Valid modes
are s (signer) and v (verifier).  The default is sv except in test mode (see the dkim-filter(8) man page) in which case the default is v.

[…]

Canonicalization (string)
Selects  the canonicalization method(s) to be used when signing messages.  When verifying, the message’s DKIM-Signature: header specifies
the canonicalization method.  The recognized values are relaxed and simple as defined by the DKIM specification.  The default is  simple.
The  value  may  include two different canonicalizations separated by a slash („/“) character, in which case the first will be applied to
the headers and the second to the body.

[…]

OmitHeaders (string)
Specifies a list of headers which should be omitted when generating signatures.  The string should be a comma-separated  list  of  header
names.   If an entry in the list names any header which is mandated by the DKIM specification, the entry is ignored.  A set of headers is
listed in the DKIM specification as „SHOULD NOT“ be signed; the default list for this  parameter  contains  those  headers  (Return-Path,
Received,  Comments,  Keywords,  Bcc, Resent-Bcc and DKIM-Signature).  To omit no headers, simply use the string „-“ (or any string which
will match no headers).  Note that specifying a list with this parameter replaces the default entirely.

Sollten Probleme bei der Signierung auftreten, kann man über OmitHeaders speizielle Headerzeilen von der Signierung ausschließen um zu testen, ob diese das Problem verursachen.

SysCP

Sobal für eine Domain DKIM aktiviert wurde, erstellt SysCP automatisch die notwendigen Dateien domains & dkim-keys.conf sowie die entsprechenden Keys für die jeweilige Domain und speicher diese in der SQL-DB.

mysql -u root -p<kennwort> mysql -e "use syscp; select domain, dkim, dkim_id, dkim_privkey, dkim_pubkey from panel_domains;

Um DKIM zu testen, kann man eine eMail an folgende Adressen schicken. I.d.R. bekommt man als Antwort eine Status der DKIM Überprüfung.

_adsp._domainkey Record

Über einen DNS-Record _adsp._domainkey.domain.tld kann das Verhalten für den Empfang von nicht signierten Nachrichten festgelegt werden. Unter sendmail.org gibt es dafür einen DKIM ADSP Wizard. (siehe auch _asp._domainkey)

_domainkey Record (policy)

Der DNS Record TXT-Record _domainkey ist eine weitere Möglichkeit, das Verhalten bei unsignierten/falsch signierten eMails festzulegen. Mehr dazu siehe: http://stephanmund.de/tech/mail.html/2008-07-16_dkim-domainkeys-policies

DNS Record Abfrage

Um den DKIM Key per DNS abzufragen, kann folgende nslookup Abfrage genutzt werden

nslookup -query=txt dkim_3._domainkey.mails4.me

Links

Debian backports Quellen hinzufügen

Die mobile Version verlassen