Frage Virtuelle Domains mit Postfix und SSL


Ich habe einen Postfix-Mail-Server-Setup für das Hosting mehrerer virtueller Domänen (sagen wir xxx.com und yyy.com).

Benutzer konfigurieren ihren Postausgangsserver als mail.xxx.com und mail.yyy.com. Alle Mail-Server beziehen sich auf den gleichen physischen Postfix-Server (gleiche IP, einzelne Instanz von Postfix auf diesem Linux-Server).

Welches SSL-Zertifikat benötige ich für Postfix? smtpd_tls_cert_file Konfigurationsoption?

Oder muss ich ein einzelnes Zertifikat für verwenden mail.xxx.com und erzähle den Benutzern von yyy.com benutzen mail.xxx.com als ihr Ausgangsserver? Dies würde die Illusion separater virtueller Server zerstören.

[Anmerkung: Die Domains sind vollständig getrennt. Dies sind nicht mehrere Unterdomänen, die eine gemeinsame Wurzel teilen].


20
2017-12-25 12:26


Ursprung




Antworten:


Oder muss ich ein einzelnes Zertifikat für mail.xxx.com verwenden und erzählen   Benutzer von yyy.com verwenden mail.xxx.com als ihren Ausgangsserver?

Ja, letztendlich müssen Sie entweder das tun oder ein Zertifikat mit mehreren verwenden CommonName oder SubjAltName Attribute.

Es gibt keine Möglichkeit, dass Postfix wissen kann, welchen Hostnamen der Client angefordert hat. So etwas wie ich gibt es nicht. e. das HTTP / 1.1 Host Header, der die angeforderte Domain angibt und Postfix nicht unterstützt SNI noch.

Wenn Sie wirklich auf zwei verschiedene Domänen für Ihren Mailserver angewiesen sind, müssen Sie zwei Instanzen ausführen smtpd auf zwei separaten Netzwerkschnittstellen / IP-Adressen. Normalerweise würden Sie nur eine "neutrale" Domain wählen und Ihren Nutzern sagen, dass sie diese verwenden sollen.


10
2017-12-25 13:21





Tatsächlich... Wenn Sie möchten, dass jede Domäne ein gültiges SSL-Zertifikat verwendet, haben Sie zwei Lösungen: Verwenden Sie ein Multi-Domain-Zertifikat oder richten Sie jede Domain auf einer eindeutigen IP-Adresse ein. Die erste Lösung ist schrecklich: Diese Zertifikate sind in der Regel ziemlich teuer (obwohl Sie preiswerte finden können), sie werden alle Domänen auflisten, die Sie auf dem gleichen Zertifikat zertifizieren möchten, und, am wichtigsten, sie werden nur einmal ausgestellt, also hinzugefügt Nur eine neue Domain bedeutet, ein völlig neues Zertifikat zu bekommen.

Die bessere Lösung besteht darin, jede Domäne auf ihrer eigenen IP-Adresse zu platzieren und dann jedes Zertifikat der jeweiligen IP zuzuordnen.

Hier ist, wie Sie es in Postfix machen.

Sie werden zuerst Ihre Zertifikate für jede Domain in der / etc / postfix / Verzeichnis (Sie können auch ein / etc / postfix / ssl / Verzeichnis) Hinweis: Ich verwende Plesk, das .pem-Zertifikatsdateien verwendet, aber Sie können auch .key- und .cer-Dateien verwenden (.pem-Dateien sind nur eine Zusammenfassung von .key- und .cer-Dateien in dieser Reihenfolge).

dann müssen Sie die ändern master.cf Datei in / etc / postfix /

Ursprünglich sah meins so aus (wahrscheinlich weil ich die letzten 3 IPs nach der Einrichtung des Servers hinzugefügt habe:

1.1.1.1- unix - n n - - smtp -o smtp_bind_address=1.1.1.1 -o smtp_bind_address6= -o smtp_address_preference=ipv4

2.2.2.2- unix - n n - - smtp -o smtp_bind_address=2.2.2.2 -o smtp_bind_address6= -o smtp_address_preference=ipv4

smtp inet n - n - - smtpd
smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes
submission inet n - n - - smtpd -o smtpd_enforce_tls=yes -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticate d,reject -o smtpd_sender_restrictions=

3.3.3.3- unix - n n - - smtp -o smtp_bind_address=3.3.3.3 -o smtp_bind_address6= -o smtp_address_preference=ipv4

4.4.4.4- unix - n n - - smtp -o smtp_bind_address=4.4.4.4 -o smtp_bind_address6= -o smtp_address_preference=ipv4

5.5.5.5- unix - n n - - smtp -o smtp_bind_address=5.5.5.5 -o smtp_bind_address6= -o smtp_address_preference=ipv4

Um nun jedes Zertifikat an die entsprechende IP zu binden, gehen Sie wie folgt vor:

1.1.1.1- unix - n n - - smtp -o smtp_bind_address=1.1.1.1 -o smtp_bind_address6= -o smtp_address_preference=ipv4

2.2.2.2- unix - n n - - smtp -o smtp_bind_address=2.2.2.2 -o smtp_bind_address6= -o smtp_address_preference=ipv4

3.3.3.3- unix - n n - - smtp -o smtp_bind_address=3.3.3.3 -o smtp_bind_address6= -o smtp_address_preference=ipv4

4.4.4.4- unix - n n - - smtp -o smtp_bind_address=4.4.4.4 -o smtp_bind_address6= -o smtp_address_preference=ipv4

5.5.5.5- unix - n n - - smtp -o smtp_bind_address=5.5.5.5 -o smtp_bind_address6= -o smtp_address_preference=ipv4

#smtp inet n - n - - smtpd
#smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes
#submission inet n - n - - smtpd -o smtpd_enforce_tls=yes -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o smtpd_sender_restrictions=

1.1.1.1:smtp inet n - n - - smtpd -o smtpd_tls_cert_file=/etc/postfix/cert1.pem -o smtpd_tls_key_file=/etc/postfix/cert1.pem
1.1.1.1:smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_tls_cert_file=/etc/postfix/cert1.pem -o smtpd_tls_key_file=/etc/postfix/cert1.pem
1.1.1.1:submission inet n - n - - smtpd -o smtpd_enforce_tls=yes -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o smtpd_sender_restrictions= -o smtpd_tls_cert_file=/etc/postfix/cert1.pem -o smtpd_tls_key_file=/etc/postfix/cert1.pem

2.2.2.2:smtp inet n - n - - smtpd -o smtpd_tls_cert_file=/etc/postfix/cert2.pem -o smtpd_tls_key_file=/etc/postfix/cert2.pem
2.2.2.2:smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_tls_cert_file=/etc/postfix/cert2.pem -o smtpd_tls_key_file=/etc/postfix/cert2.pem
2.2.2.2:submission inet n - n - - smtpd -o smtpd_enforce_tls=yes -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o smtpd_sender_restrictions= -o smtpd_tls_cert_file=/etc/postfix/cert2.pem -o smtpd_tls_key_file=/etc/postfix/cert2.pem

3.3.3.3:smtp inet n - n - - smtpd -o smtpd_tls_cert_file=/etc/postfix/cert3.pem -o smtpd_tls_key_file=/etc/postfix/cert3.pem
3.3.3.3:smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_tls_cert_file=/etc/postfix/cert3.pem -o smtpd_tls_key_file=/etc/postfix/cert3.pem
3.3.3.3:submission inet n - n - - smtpd -o smtpd_enforce_tls=yes -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o smtpd_sender_restrictions= -o smtpd_tls_cert_file=/etc/postfix/cert3.pem -o smtpd_tls_key_file=/etc/postfix/cert3.pem

4.4.4.4:smtp inet n - n - - smtpd -o smtpd_tls_cert_file=/etc/postfix/cert4.pem -o smtpd_tls_key_file=/etc/postfix/cert4.pem
4.4.4.4:smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_tls_cert_file=/etc/postfix/cert4.pem -o smtpd_tls_key_file=/etc/postfix/cert4.pem
4.4.4.4:submission inet n - n - - smtpd -o smtpd_enforce_tls=yes -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o smtpd_sender_restrictions= -o smtpd_tls_cert_file=/etc/postfix/cert4.pem -o smtpd_tls_key_file=/etc/postfix/cert4.pem

5.5.5.5:smtp inet n - n - - smtpd -o smtpd_tls_cert_file=/etc/postfix/cert5.pem -o smtpd_tls_key_file=/etc/postfix/cert5.pem
5.5.5.5:smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_tls_cert_file=/etc/postfix/cert5.pem -o smtpd_tls_key_file=/etc/postfix/cert5.pem
5.5.5.5:submission inet n - n - - smtpd -o smtpd_enforce_tls=yes -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o smtpd_sender_restrictions= -o smtpd_tls_cert_file=/etc/postfix/cert5.pem -o smtpd_tls_key_file=/etc/postfix/cert5.pem

Das ist es!! (Vergessen Sie nicht, die ursprünglichen Zeilen wie oben zu kommentieren)

PS: Um das gleiche für POP / IMAP zu tun, wenn Sie courier-imap verwenden, legen Sie einfach Kopien dieser .pem-Dateien in / usr / teilen / kurier-imap / (oder im Falle von Plesk legen Sie sie in / usr / teilen / ) und Sie benennen sie wie folgt: imapd.pem.xx.xx.xx.xx pop3d.pem.xx.xx.xx.xx

wobei xx.xx.xx.xx die jeweilige IP-Adresse ist (die 2 Zertifikate sind Kopien derselben Datei)

Hoffe das hilft!


18
2018-05-08 13:53



Danke, dass Sie sich die Zeit genommen haben, eine so detaillierte Antwort zu schreiben! Ich bin sicher, dass es jemandem in der Zukunft helfen wird. - nimrodm
das ist die Hoffnung! Es hat eine Weile gedauert, das zusammen zu geben, und es war selten, Lösungen zu finden tatsächlich gearbeitet, anstatt jemand zu vermuten, dass dies oder das funktionieren könnte .. - Peter
Jetzt können Sie Letsencrypt verwenden, um mit der ersten Methode zu gehen. Sie können Multidomänenzertifikate kostenlos haben - balping