Smarthost signiert Mails mit DKIM

Die Produktionsserver relayen alle Mails an einen zentralen Mailserver, der dann den Versand übernimmt. Zusätzlich soll der Smarthost nun alle Mails mit DKIM signieren. Ich habe mich für den dkim-milter entschieden und die Umsetzung ging dank seiner Helferlein wie dkim-genkey recht schnell und einfach.

Damit der dkim-filter für mehrere Domains signierend tätig werden kann, muss man die Schlüsselinformationen in einer Datei hinterlegen und deren Pfad mit KeyList übergeben. Die Paramater Domain, KeyFile und Selector können ausschliesslich für Ein-Domain-Lösungen verwendet werden.

Die an KeyList übergebene Datei könnte beispielsweise wie folgt aussehen. Durch Doppelpunkte getrennt werden die für die Signierung zugelassenen E-Mail-Adressen, der Domainname (die Redundanz an dieser Stelle ist auffällig häßlich und historisch bedingt) sowie der Pfad zum keyfile angebenen. Die Angabe der Endungen .private und .pem ist optional.

relay:~# cat /etc/dkim-keys.conf
*@example.de:example.de:/etc/dkim/example.de/2009
*@example.com:example.com:/etc/dkim/example.com/2009
*@example.es:example.es:/etc/dkim/example.es/2009
*@example.fr:example.fr:/etc/dkim/example.fr/2009
*@example.nl:example.nl:/etc/dkim/example.nl/2009
*@example.pl:example.pl:/etc/dkim/example.pl/2009
*@example.se:example.se:/etc/dkim/example.se/2009

Nach den notwendigen DNS-Änderungen (TXT für z.B. 2009._domainkey.example.com) funktionierte der lokale Versand wie gewünscht und mit gültiger Signatur. Allein die (wichtigen) externen Hosts wurden ignoriert. Im Logfile sieht das dann so aus:

(unknown-jobid) external host www.example.com attempted to send as example.de

Ein Blick in die man-Page konnte auch dieses Problem lösen: Die Grundeinstellung sieht nur eine Signierung von Mails von 127.0.0.1 vor. Mit dem Aufrufparameter -i kann man den Pfad einer Datei übergeben, die pro Zeile eine IP-Adresse weiterer zustellender Systeme enthält.

relay:~# cat /etc/default/dkim-filter
# Command-line options specified here will override the contents of
# /etc/dkim-filter.conf. See dkim-filter(8) for a complete list of options.
DAEMON_OPTS="-i /etc/dkim-peers.conf"
[...]

relay:~# cat /etc/dkim-peers.conf
127.0.0.1
10.17.133.217

NFS: Permission denied wegen Group

RPC, das von NFS für die Identifikation von Benutzern verwendet wird, kann nicht mehr als 16 Gruppen, deren Mitglied ein Benutzer ist, übermitteln. Hier hatten wir den Fall, dass eine Benutzerin plötzlich nicht mehr auf Verzeichnisse zugreifen konnte, für die sie aufgrund der Gruppenrechte Zugriff haben sollte (Permission denied). Selbstverständlich waren die GID auf NFS-Server und Client-System identisch. Sie war kürzlich einer 17. Gruppe zugeordnet worden und die für den Zugriff relevante Gruppe (sie hatte die höchste Group-ID) wurde nicht mehr an den NFS-Server übertragen.

Das war extrem schwer zu debuggen. Die Ursache wurde erst nach Stunden gefunden. Der Sachverhalt wird hier ausführlich erläutert. Die Lösung war einfach: Es wurde die Option –manage-gids beim Start von rpc.mountd hinzugefügt.