Ich habe einen Postfix-Server mit mehreren Domänen und möchte für jede ein eigenes Zertifikat haben. Mein Server hat nur eine IP.
Ich habe eine Lösung mit mehreren IPs gefunden, aber ohne weiß ich nicht, wie das geht.
- Server: Debian 9
- Postfix: 3.1.8
Antwort1
Soweit ich weiß, gibt es in Postfix noch kein funktionierendes SNI. Docs (http://www.postfix.org/TLS_README.html) sagen, dass „es keine Pläne gibt, SNI im Postfix SMTP-Server zu implementieren.“, obwohl Victor im Januar erwähnte, dass er SNI-Unterstützung zu Postfix 3.4 hinzufügen möchte. Alternativen:
- mehrere IP
- Zertifikat, das alle Domänennamen enthält.
Es ist auch nichts falsch daran, für alle Domänen dasselbe MX zu verwenden. Der MX-Hostname ist Ihre Servicedomäne oder so etwas. Auch der Helo/Ehlo-Name ist auf denselben/ähnlichen Hostnamen konfiguriert. Wenn es für GoogleApps und andere große E-Mail-Anbieter gut ist, dann ist es auch für uns gut.
Antwort2
Wenn Sie Postfix >=3.4 verwenden, berücksichtigen Sie die folgenden Schritte als angepasstvon diesem Link:
Schritt 1: Kommentieren Sie die oberen beiden Zeilen aus und fügen Sie die folgenden Zeilen zu /etc/postfix/main.cf hinzu:
# smtpd_tls_cert_file = /etc/pki/dovecot/certs/dovecot.pem
# smtpd_tls_key_file = /etc/pki/dovecot/private/dovecot.pem
# provide the primary certificate for the server, to be used for outgoing connections (note the indentation)
smtpd_tls_chain_files =
/etc/letsencrypt/live/mail.yourprimarymailserverdomain.com/privkey.pem,
/etc/letsencrypt/live/mail.yourprimarymailserverdomain.com/fullchain.pem
# provide the map to be used when SNI support is enabled
tls_server_sni_maps = hash:/etc/postfix/vmail_ssl.map
Schritt 2: Erstellen Sie die Datei /etc/postfix/vmail_ssl.map mit Folgendem:
# Compile with postmap -F hash:/etc/postfix/vmail_ssl.map when updating
# One host per line
mail.yourprimarymailserverdomain.com /etc/letsencrypt/live/mail.yourprimarymailserverdomain.com/privkey.pem /etc/letsencrypt/live/mail.yourprimarymailserverdomain.com/fullchain.pem
mail.yoursecondarymailserverdomain.com /etc/letsencrypt/live/mail.yoursecondarymailserverdomain.com/privkey.pem /etc/letsencrypt/live/mail.yoursecondarymailserverdomain.com/fullchain.pem
# add more domains with keys and certs as needed
Schritt 3: Laufen postmap -F hash:/etc/postfix/vmail_ssl.map
.
Schritt 4: Laufen systemctl restart postfix
.
Schritt 5: Testen Sie jetzt die SSLs Ihrer Domänen! Führen Sie für jede Ihrer Domänen den folgenden Befehl aus:openssl s_client -connect localhost:25 -servername mail.mydomainname.com -starttls smtp
Antwort3
Für diejenigen, die es nicht wissen: Die SNI-Tabelle muss bei jeder Änderung eines Zertifikats neu erstellt werden, da die zugrunde liegende Tabelle generiert wird, mit postmap -F
der die Datei importiert wird.Inhalt(es speichert nicht nur Verweise auf die Dateinamen).
postmap -F hash:/etc/postfix/tls_server_sni_maps.map
Antwort4
Postfix Version 3.4 unterstützt jetzt SNI und ist daher beispielsweise in Ubuntu 19.10 verfügbar.
Außerdem gibt es einen guten Grund dafür: Clients wie Outlook versuchen, die automatische Konfiguration mit einem Servernamen durchzuführen, der mit dem E-Mail-Domänennamen übereinstimmt. Wenn Ihr E-Mail-Konto bei Gmail oder einer anderen gemeinsam genutzten Domäne liegt, ist dies kein Problem, aber eine persönliche Domäne, die auf einem Server (selbst einem VPS) mit mehreren Domänen gehostet wird, erfordert eine solche Lösung.