Domeny wirtualne z Postfix i SSL

21

Mam konfigurację serwera pocztowego Postfix do obsługi wielu domen wirtualnych (powiedz xxx.comi yyy.com).

Użytkownicy konfigurują swój serwer poczty wychodzącej jako mail.xxx.comi mail.yyy.com. Wszystkie serwery pocztowe odnoszą się do tego samego fizycznego serwera Postfix (to samo IP, pojedyncze wystąpienie Postfix działającego na tym serwerze Linux).

Jakiego certyfikatu SSL potrzebuję do smtpd_tls_cert_fileopcji konfiguracji Postfix ?

Czy też muszę używać jednego certyfikatu mail.xxx.comi informować użytkowników o yyy.comużywaniu go mail.xxx.comjako serwera poczty wychodzącej? To złamałoby iluzję oddzielnych wirtualnych serwerów.

[Uwaga: domeny są całkowicie oddzielne. To nie są liczne subdomeny mające wspólny katalog główny].

nimrodm
źródło

Odpowiedzi:

10

Czy też muszę używać jednego certyfikatu dla mail.xxx.com i informować użytkowników yyy.com, aby używali mail.xxx.com jako serwera poczty wychodzącej?

Tak, ostatecznie będziesz musiał to zrobić albo użyć certyfikatu z wieloma CommonNamelub SubjAltNameatrybutami.

W żaden sposób Postfix nie może wiedzieć, której nazwy hosta żądał klient. Nie ma czegoś takiego jak np. HostNagłówek HTTP / 1.1, który wskazuje żądaną domenę, a Postfix nie obsługuje jeszcze SNI .

Jeśli naprawdę zależy Ci na posiadaniu dwóch różnych domen dla swojego serwera poczty, będziesz musiał uruchomić dwie instancje smtpdna dwóch oddzielnych interfejsach sieciowych / adresach IP. Zwykle wystarczy wybrać „neutralną” domenę i powiedzieć użytkownikom, aby z niej korzystali.

joschi
źródło
19

Właściwie ... Jeśli chcesz, aby każda domena używała ważnego certyfikatu SSL, masz 2 rozwiązania: użyj certyfikatu wielodomenowego lub skonfiguruj każdą domenę pod unikalnym adresem IP. Pierwsze rozwiązanie jest okropne: te certyfikaty są zwykle dość drogie (choć można znaleźć niedrogie), będą zawierać listę wszystkich domen, które chcesz certyfikować na tym samym certyfikacie, a co najważniejsze, są wydawane tylko raz, więc dodając tylko jedna nowa domena oznacza uzyskanie zupełnie nowego certyfikatu.

Lepszym rozwiązaniem jest umieszczenie każdej domeny pod własnym adresem IP, a następnie dopasowanie każdego certyfikatu do odpowiedniego adresu IP.

Oto jak to zrobić w Postfiksie.

Najpierw umieścisz swoje certyfikaty dla każdej domeny w katalogu / etc / postfix / (możesz także utworzyć katalog / etc / postfix / ssl / ). Uwaga: używam Plesk, który używa plików certyfikatów .pem, ale możesz także użyć Pliki .key i .cer (pliki .pem to po prostu połączenie plików .key i .cer w tej kolejności)

następnie musisz zmodyfikować plik master.cf w / etc / postfix /

pierwotnie mój wyglądał tak (prawdopodobnie dlatego, że dodałem ostatnie 3 adresy IP po skonfigurowaniu serwera:

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

Teraz, aby powiązać każdy certyfikat z odpowiednim adresem IP, wykonaj następujące czynności:

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

To jest to!! (nie zapomnij skomentować oryginalnych wierszy, jak pokazano powyżej)

PS: aby zrobić to samo dla POP / IMAP, jeśli używasz kuriera-imap, po prostu umieszczasz kopie tych plików .pem w / usr / share / courier-imap / (lub w przypadku Plesk, umieszczasz je w / usr / share / ) i nazwij je w następujący sposób: imapd.pem.xx.xx.xx.xx pop3d.pem.xx.xx.xx.xx

gdzie xx.xx.xx.xx to odpowiedni adres IP (2 certyfikaty są kopiami tego samego pliku)

Mam nadzieję że to pomoże!

Piotr
źródło
Dziękujemy za poświęcenie czasu na napisanie tak szczegółowej odpowiedzi! Jestem pewien, że to pomoże komuś w przyszłości.
nimrodm
2
to jest nadzieja! Zajęło mi to trochę czasu i rzadko znajdowałem rozwiązania, które faktycznie działały, a nie ktoś, kto to podejrzewa lub może zadziałać.
Peter
1
Teraz możesz użyć letsencrypt, aby przejść do pierwszej metody. Możesz mieć certyfikaty wielu domen za darmo
łysienie