menü

status

online seit 6942 tagen
letztes update am
28. November, 14:45

kalender

August 2006
Mo
Di
Mi
Do
Fr
Sa
So
 
 1 
 3 
 4 
 7 
 8 
 9 
11
12
16
21
22
23
25
26
28
30
31
 
 
 
 

aktuelles

Ich lebe noch!
nighthawk - 28.11. 14:45
Nach langer Zeit ...
nighthawk - 04.10. 23:09
Lösungen vom draufgucken
nighthawk - 27.02. 22:30
Mal 'was neues
nighthawk - 26.01. 22:29
Ganz Münster auf dem Aasee
nighthawk - 11.01. 20:17

historisches

suche

 

buttonmania

xml version of this page

paRSS - Feews! for the rest of us

startseite > Samstag, 19.08.2006


Samstag, 19. August 2006

DomainKeys in Postfix per milter


das thema domainkeys war fuer mich bislang ein frustrierendes.. vernuenftige implementationen gab es praktisch fuer alle MTAs, nur postfix nicht. seit postfix 2.3 hat dieser aber nun ein milter interface, das mit dem von sendmail weitestgehend kompatibel ist. schick, dachte ich mir, das probierste doch mal aus. in der MILTER_README von postfix wurde auch explizit das thema domainkeys als beispielanwendung fuer milter genannt - wie passend. die datei also durchgelesen und nur ein klein wenig schlauer geworden - naemlich welches domainkeys milter programm mit postfix garantiert zusammen arbeitet: dk-milter. findet sich praktischerweise auch in den freebsd ports.. also mal eben installiert. da wurde mir z.b. klar, warum es praktisch sein kann, dass freebsd ein sendmail im base-system hat - naemlich um die libmilter.a griffbereit zu haben, ohne sendmail aus den ports installieren zu muessen. nachdem diese huerde also erfolgreich genommen war, stand ich erstmal wie der ochs' vor'm berge. nirgends (im web) war das kleinste bissl dokumentation zu finden, wie es nun weiter geht. nach einigem suchen habe ich erstmal eine anleitung (fuer qmail, buaargh) ausmachen koennen, in der beschrieben wird, wie ich das spaeter notwendige keypair anlege ...
$ openssl genrsa -out dkPrivate.pem 768
$ openssl rsa -in dkPrivate.pem -out dkPublic.pem -pubout -outform PEM
... und das man den inhalt der dkPublic.pem mit folgendem befehl in den string umwandelt, den man spaeter einfach in seine dns zonen-dateien kopieren kann:
$ grep -v ^- dkPublic.pem | perl -e 'while(<>){chop;$l.=$_;}print "t=y; g=; k=rsa; p=$l;\n";'
viel weiter war ich nun aber noch immer nicht.. also habe ich erstmal an einer meiner domains die zonendatei bearbeitet:

_domainkey TXT "t=y; o=-;"
default._domainkey TXT "t=n; g=; k=rsa; p=[...privater key...];"

nach diesem schritt war die entscheidende idee dann mal einen blick in die von dk-milter mitgelieferte dokumentation (bei freebsd unter /usr/local/share/doc/dk-milter residierend) zu werfen. dort wurde die installation zwar anhand von sendmail erklaert, die adaption zu postfix war aber nicht besonders schwierig. der kurze part, in dem die aktivierung in sendmail erklaert wird, ist in postfix nicht wirklich laenger.. naemlich folgende zwei zeilen in die main.cf eintragen:

smtpd_milters = unix:/tmp/domainkeys.sock
non_smtpd_milters = unix:/tmp/domainkeys.sock

ansonsten wird erklaert, dass man in der kommandozeile beim dk-filter aufruf das socket, die domain(s), das private-keyfile und den selector angeben sollte - sehr wertvolle hinweise. ein weiterer sinnvoller hinweis waere noch gewesen, dass man nicht nur mehrere domains angeben kann, sondern auch wie man das tun soll - naemlich kommagetrennt. letztgenanntes durfte ich mangels dokumentation erraten.
der aufruf von dk-filter hatte sich so mittlerweile auf folgendes stattliches konstrukt verlaengert..
/usr/local/libexec/dk-filter -u domainkey -d [viele-domains-hier] -c nofws -H -m MSA -s /var/db/domainkeys/default.key.pem -S default -l -p local:/tmp/domainkeys.sock -P /var/run/dk-filter.pid
.. und ich war fertig zum testen.
als versuchskaninchen musste googles emaildienst herhalten, denn von denen weiss ich, dass sie domainkeys pruefen und entsprechende meldungen in den header schreiben. und sie da:
DomainKey-Status: good
in der mail ebenfalls ersichtlich durch ein Signed-By: winter.cd neben dem (bei meinen domains) ueblichen Mailed-By: ....
bei weiterem testen habe ich dann noch festgestellt, dass mails von meinen jails (192.168.0.x) im log nur folgenden hinweis produzierten:
Aug 19 02:13:07 server dk-filter[96507]: (unknown-jobid) external host intern.example.org attempted to send as example.org
und die mails unberuehrt blieben. dies lies sich dadurch korrigieren, dass ich meine internen einlieferer in einer datei untereinander weg aufgeschrieben habe und diese dk-filter mit -i mitteile:
/usr/local/libexec/dk-filter [...] -i /usr/local/etc/dk-milter-ilist
nun werden also ausgehende mails signiert... und eingehende mails pruefen macht der milter von ganz alleine - sehr praktisch. ziel erreicht. und es war in etwa so kompliziert, wie ich es erwartet hatte ;)
ältere beiträge