Postfix 3.4, Let’s Encrypt und Server Name Indication (SNI)

Ich werde hier nicht weiter auf das grundsätzliche Setup von Postfix, Let’s Encrypt oder einen Webserver eingehen. Ich setze einfach voraus, dass ihr eine funktionierende Konfiguration habt.

Seit der Postfix-Version 3.4 ist es endlich möglich, mit nur einer IP-Adresse, für jede Domain ein eigenes Zertifikat auszuliefern.

Zuerst legen wir in /etc/postfix/main.cf die Zertifikate und Key-file für die Default-Domain (bei mir mail.cyber-anlage.de) fest. Dafür wird bei Postfix 3.4 das neue smtpd_tls_chain_files benutzt. Mehr dazu hier: http://www.postfix.org/TLS_README.html#server_cert_key

# Postfix ≥ 3.4.  Preferred configuration interface.  Each file
# starts with the private key, followed by the corresponding
# certificate, and any intermediate issuer certificates. The root CA
# cert may also be needed when published as a DANE trust anchor.

smtpd_tls_chain_files =
     /etc/ssl/LE/mail.cyber-anlage.de.key
     /etc/ssl/LE/mail.cyber-anlage.de_fullchain.pem

Mit tls_server_sni_maps haben wir jetzt die Möglichkeit eine Tabelle mit Server-Namen, welche via SNI erreichbar sind, und den entsprechenden Schlüssel und Zertifikatsketten zu erstellen. Dafür müssen wir wieder /etc/postfix/main.cf bearbeiten. Mehr dazu hier: http://www.postfix.org/postconf.5.html#tls_server_sni_maps

Die Syntax ist: tls_server_sni_maps = map_type:/Datei/pfad/sni

# Indexed table macro:
# postconf -m shows all available map types
# The indexed SNI table must be created with "postmap -F"

tls_server_sni_maps = hash:/etc/postfix/sni

Nun können wir die Domain, Zertifikate und keyfiles für SNI konfigurieren. Wichtig ist, dass wird hier auch noch mal unsere Default-Domain angeben. Da das Zertifikat in der /etc/postfix/main.cf nur benutzt wird, wenn der kein SNI schickt.

Dafür bearbeiten wir /etc/postfix/sni

Die Syntax lautet: domain private-key Zertifikat rootCA

 mail.cyber-anlage.de /etc/ssl/LE/mail.cyber-anlage.de.key /etc/ssl/LE/mail.cyber-anlage.de_fullchain.pem
 mail.technikfreak.net /etc/ssl/LE/mail.technikfreak.net.key /etc/ssl/LE/mail.technikfreak.net_fullchain.pem

Jetzt müssen wir mit postmap nur noch die SNI-Tabelle generieren

Die Syntax ist: postmap -F map_type:/Datei/pfad/sni

postmap -F hash:/etc/postfix/sni

Alles was wir jetzt machen müssen, ist postfix neu starten und voilà wir bekommen für jede Domain das entsprechende Zertifikat.

Ein Kommentar

  1. Ich habe meinen Mailserver nach dieser Anleitung eingerichtet, alles lief problemlos bis zur ersten Erneuerung der Zertifikate. Es stellte sich heraus, dass es nicht genügte, postfix neu zu starten, sondern auch das Kommando postmap -F hash:/etc/postfix/sni musste wiederholt werden. Erst dann lieferte Postfix das neue Zertifikat aus. Der Hinweis sollte vielleicht in den Text aufgenommen werden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.