Archiv für ‘Postfix’

Lemonade als IMAP-Erweiterung

23. August 2009 16:40 | Autor: Marc | Keine Kommentare | Kategorie(n): Messaging

Im frisch erschienenen RFC 5550 wird eine ganze Reihe von IMAP-Erweiterungen beschrieben, welche hauptsächlich für mobile Geräte sinnvoll erscheinen.

Für Geräte mit wenig Bandbreite oder limitiertem Übertragungsvolumen, was auf jene die per Mobilfunk angebunden sind in den allermeisten Fällen zutrifft, sind sicherlich die Kernfunktionen "Forward without download" und "Message size declaration" besonders interessant. Letztere legt fest, dass der sendende Server bereits im MAIL FROM-Kommando die Größe der Nachricht angibt und der empfangende SMTP-Server anhand der Angabe dann entscheiden kann, ob er die Mail überhaupt annehmen möchte. Für Mailboxen, auf die ausschließlich von unterwegs zugegriffen wird, eine hervorragende Sache. "Forward without download" erlaubt einem IMAP-Client, Nachrichten direkt auf dem Server an eine andere Adresse weiterzuleiten, ohne diese vorher herunterladen und "neu verpacken" zu müssen. Diese Funktion bieten bisher nur propritäre Mail-/Groupware-Lösungen, wie z.B. der Blackberry Enterprise Server von RIM.

An die Sicherheit der zu übertragenden Informationen wurde ebenfalls gedacht. So setzt Lemonade von vornherein den Einsatz von SMTP-TLS voraus.

 

DKIM mit Postfix und Spamassassin

20. August 2009 19:24 | Autor: Marc | 3 Kommentare | Kategorie(n): Sicherheit

DKIM als Authentifizierungsmechanismus für E-Mails ist ein Zusammenspiel von DNS, MTA und Spam-Filter. Der versendende Mailserver versieht den Header ausgehender Mails mit einer Signatur (Private Key), welche der empfangende MTA anhand eines speziellen DNS TXT-RR (Public Key) verifizieren kann.

Mag kompliziert klingen, ist aber eigentlich ganz einfach umzusetzen, wie das folgende Beispiel auf einem Debian Lenny-Server mit Postfix, BIND und Spamassassin belegen soll. Vorausgesetzt wird hierbei, dass die drei genannten Dienste bereits im Normalbetrieb funktionieren.

Als Erstes muss das Schlüsselpaar erstellt werden. Dies geschieht mit den folgenden Kommandos:
openssl genrsa -out <Schlüsselbez.>.private 1024
openssl rsa -in <Schlüsselbez.>.private -out \
<Schlüsselbez.>.public -pubout -outform PEM

Die Schlüsselstärke von 1024 Bit ist die Minimalanforderung von DKIM, ein längerer Private Key hätte aber naturgemäß auch einen längeren Public Key zu Folge, und hier spielt BIND dann aufgrund einer begrenzten Größe des TXT-RR nicht mehr mit.

Nun kann der Public Key per DNS bekannt gemacht werden. Da dies ohne Zeilenumbrüche geschehen muss, werden eben diese kurzerhand ignoriert:
cat <Schlüsselbez.>.public | tr -d "\n"

Der reine Schlüssel (ohne Header) kann jetzt in die Zonendatei der Domain kopiert werden, die mit DKIM ausgestattet werden soll. Hierfür wird die spezielle Subdomain <Schlüsselbez.>._domainkey verwendet. Ein kompletter TXT-RR für DKIM kann wie folgt aussehen:

mail2009._domainkey   IN TXT "v=DKIM1\; k=rsa\; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADC (gekürzt)"

Es macht Sinn, den Schlüssel regelmäßig auszutauschen und dies auch im DNS zu dokumentieren. Statt den alten Schlüssel einfach zu löschen, wird er widerrufen. Einer entsprechender Eintrag im TXT-RR sieht dann so aus: "v=DKIM1\; k=rsa\; p="

Auf dem System kann nun das Paket dkim-filter installiert werden. Dies ist in den Repositories von Debian vorhanden und kann somit per apt installiert werden. Die Konfigurationsdateien sollten in etwa folgendermaßen modifiziert werden (meine Konfiguration ist auch auf dem Gopher zu finden):

/etc/default/dkim-filter:
SOCKET="inet:8891@127.0.0.1"

/etc/dkim-keys.conf:
*domain.tld:domain.tld:/etc/mail/dkim/mail2009

(eine Zeile für jede Domain)

/etc/dkim-filter.conf:
Syslog   yes
UMask   002
Background   yes
SubDomains   yes
KeyList   /etc/dkim-keys.conf
RequiredHeaders   yes
OmitHeaders   Return-Path,Received,Comments,Keywords,Bcc,Resent-Bcc

Außerdem muss die Postfix-Konfiguration noch modifiziert werden:

/etc/postfix/main.cf
(...)
smtpd_milters = inet:localhost:8891

Nach dem Restart der Dienste dkim-filter und postfix kann das System bereits für ausgehende Mails genutzt werden. Ob alles funktioniert, kann mit einer Testmail an check-auth@verifier.port25.com überprüft werden. Nach kurzer Zeit erhält man eine Mail mit einem detaillierten Bericht.

Für die DKIM-Integration in Spamassassin wird nun noch das Paket libmail-dkim-perl benötigt und anschließend die Konfiguration angepasst.

/etc/spamassassin/v320.pre:
loadplugin   Mail::SpamAssassin::Plugin::DKIM

/etc/spamassassin/local.cf:
whitelist_from_dkim *@googlemail.com googlemail.com
score USER_IN_DKIM_WHITELIST -10.0
score DKIM_VERIFIED -5.0
score DKIM_POLICY_TESTING 0

Die Score-Werte in der local.cf können natürlich angepasst werden. Evtl. ist hier ein wenig Testen erforderlich.