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.

    • auth-results@verifier.port25.com
    • sa-test@sendmail.net
    • autorespond+dkim@dk.elandsys.com
    • dkim-test@testing.dkim.org

    _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

    Ein Kommentar

    1. Pingback: DKIM/DomainKey Schlüssel erstellen und veröffentlichen @ .: blog.cscholz.io :.

    Leave A Reply