Domini virtuali con Postfix e SSL


21

Ho una configurazione del server di posta Postfix per l'hosting di più domini virtuali (diciamo xxx.come yyy.com).

Gli utenti configurano il loro server di posta in uscita come mail.xxx.come mail.yyy.com. Tutti i server di posta si riferiscono allo stesso server Postfix fisico (stesso IP, singola istanza di Postfix in esecuzione su questo server Linux).

Quale certificato SSL è necessario per l' smtpd_tls_cert_fileopzione di configurazione Postfix ?

O devo usare un singolo certificato per mail.xxx.come dire agli utenti di yyy.comusare mail.xxx.comcome server in uscita? Ciò spezzerebbe l'illusione di server virtuali separati.

[Nota: i domini sono completamente separati. Questi non sono più sottodomini che condividono una radice comune].

Risposte:


10

O devo usare un unico certificato per mail.xxx.com e dire agli utenti di yyy.com di usare mail.xxx.com come server in uscita?

Sì, alla fine dovrai farlo o utilizzare un certificato con più CommonNameo SubjAltNameattributi.

In nessun modo Postfix può sapere quale nome host richiesto dal client. Non esiste l' Hostintestazione HTTP / 1.1 che indica il dominio richiesto e Postfix non supporta ancora SNI .

Se dipendi davvero dall'avere due domini diversi per il tuo server di posta, dovrai eseguire due istanze smtpdsu due interfacce di rete / indirizzi IP separati. Di solito sceglieresti un dominio "neutro" e diresti ai tuoi utenti di usarlo.


19

In realtà ... Se vuoi che ciascun dominio utilizzi un certificato SSL valido, hai 2 soluzioni: usa un certificato multi-dominio o imposta ogni dominio su un IP univoco. La prima soluzione è terribile: quei certificati di solito sono piuttosto costosi (anche se puoi trovarne di economici), elencheranno tutti i domini che desideri certificare nello stesso certificato e, cosa più importante, vengono emessi una sola volta, quindi aggiungendo solo un nuovo dominio significa ottenere un certificato completamente nuovo.

La soluzione migliore è posizionare ciascun dominio sul proprio IP e quindi abbinare ciascun certificato al rispettivo IP.

Ecco come lo fai in postfix.

Per prima cosa posizionerai i tuoi certificati per ciascun dominio nella directory / etc / postfix / (puoi anche creare una directory / etc / postfix / ssl / ) Nota: io uso Plesk, che utilizza i file di certificato .pem, ma puoi anche usare File .key e .cer (i file .pem sono solo una combinazione di file .key e .cer, in quell'ordine)

quindi, è necessario modificare il file master.cf in / etc / postfix /

originariamente, il mio sembrava così (probabilmente perché ho aggiunto gli ultimi 3 IP dopo aver configurato il server:

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

Ora, per associare ogni certificato al suo IP corrispondente, fai come segue:

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

Questo è tutto!! (non dimenticare di commentare le righe originali come visto sopra)

PS: per fare lo stesso con POP / IMAP se usi corriere-imap, devi semplicemente mettere copie di quei file .pem in / usr / share / courier-imap / (o, nel caso di Plesk, inserirli in / usr / share / ) e li assegni come segue: imapd.pem.xx.xx.xx.xx pop3d.pem.xx.xx.xx.xx

dove xx.xx.xx.xx è il rispettivo indirizzo IP (i 2 certificati sono copie dello stesso file)

Spero che sia di aiuto!


Grazie per aver dedicato del tempo a scrivere una risposta così dettagliata! Sono sicuro che aiuterà qualcuno in futuro.
nimrodm,

2
questa è la speranza! Mi ci è voluto un po 'per mettere insieme questo, ed era raro trovare soluzioni che funzionassero effettivamente , piuttosto che qualcuno che supponesse questo o che potesse funzionare ..
Peter,

1
Ora puoi usare letsencrypt per andare con il primo metodo. Puoi avere certificati multidominio gratis
balping
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.