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.