Domain Virtual dengan Postfix dan SSL

21

Saya punya pengaturan server surat Postfix untuk hosting beberapa domain virtual (katakan xxx.comdan yyy.com).

Pengguna mengkonfigurasi server surat keluar mereka sebagai mail.xxx.comdan mail.yyy.com. Semua server mail merujuk ke server Postfix fisik yang sama (IP yang sama, satu instance Postfix yang berjalan di server Linux ini).

Sertifikat SSL mana yang saya perlukan untuk smtpd_tls_cert_fileopsi konfigurasi Postfix ?

Atau apakah saya harus menggunakan satu sertifikat untuk mail.xxx.comdan memberi tahu pengguna yyy.comuntuk menggunakan mail.xxx.comsebagai server keluar mereka? Ini akan mematahkan ilusi server virtual yang terpisah.

[Catatan: domain sepenuhnya terpisah. Ini bukan beberapa subdomain yang berbagi root yang sama].

nimrodm
sumber

Jawaban:

10

Atau apakah saya harus menggunakan satu sertifikat untuk mail.xxx.com dan memberi tahu pengguna yyy.com untuk menggunakan mail.xxx.com sebagai server keluar mereka?

Ya, pada akhirnya Anda harus melakukan itu atau menggunakan sertifikat dengan banyak CommonNameatau SubjAltNameatribut.

Tidak mungkin Postfix tahu nama host mana yang diminta klien. Tidak ada yang namanya yaitu Hostheader HTTP / 1.1 yang menunjukkan domain yang diminta dan Postfix belum mendukung SNI .

Jika Anda benar-benar bergantung pada memiliki dua domain berbeda untuk server surat Anda, Anda harus menjalankan dua contoh smtpdpada dua antarmuka jaringan / alamat IP yang terpisah. Biasanya Anda hanya akan memilih domain "netral" dan memberi tahu pengguna Anda untuk menggunakannya.

Joseph
sumber
19

Sebenarnya ... Jika Anda ingin setiap domain menggunakan sertifikat SSL yang valid, Anda memiliki 2 solusi: gunakan sertifikat multi-domain, atau atur setiap domain pada IP unik. Solusi pertama mengerikan: sertifikat itu biasanya cukup mahal (meskipun Anda dapat menemukan yang murah), mereka akan mendaftar semua domain yang ingin Anda sertifikasi pada sertifikat yang sama, dan, yang paling penting, mereka hanya dikeluarkan sekali, jadi menambahkan hanya satu domain baru berarti mendapatkan sertifikat yang sama sekali baru.

Solusi yang lebih baik adalah menempatkan setiap domain pada IP-nya sendiri, dan kemudian mencocokkan setiap sertifikat dengan IP masing-masing.

Begini cara Anda melakukannya di postfix.

Anda pertama-tama akan menempatkan sertifikat Anda untuk setiap domain di direktori / etc / postfix / (Anda juga dapat membuat direktori / etc / postfix / ssl / ) Catatan: saya menggunakan Plesk, yang menggunakan file sertifikat .pem, tetapi Anda juga dapat menggunakan File .key dan .cer (file .pem hanya merupakan kumpulan dari file .key dan .cer, dalam urutan itu)

kemudian, Anda perlu memodifikasi file master.cf di / etc / postfix /

awalnya, milik saya terlihat seperti ini (mungkin karena saya menambahkan 3 IP terakhir setelah saya mengatur 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

Sekarang, untuk mengikat setiap sertifikat ke IP yang sesuai, Anda lakukan sebagai berikut:

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

Itu dia!! (jangan lupa mengomentari baris asli seperti yang terlihat di atas)

PS: untuk melakukan hal yang sama untuk POP / IMAP jika Anda menggunakan kurir-imap, Anda cukup menempatkan salinan file .pem itu di / usr / share / kurir-imap / (atau dalam kasus Plesk, Anda menempatkannya di / usr / bagikan / ) dan beri nama Anda sebagai berikut: imapd.pem.xx.xx.xx.xx pop3d.pem.xx.xx.xx.xx

di mana xx.xx.xx.xx adalah alamat IP masing-masing (2 sertifikat adalah salinan dari file yang sama)

Semoga ini membantu!

Peter
sumber
Terima kasih telah meluangkan waktu untuk menulis jawaban yang begitu mendetail! Saya yakin itu akan membantu seseorang di masa depan.
nimrodm
2
itulah harapannya! Butuh beberapa saat untuk menyatukan ini, dan jarang menemukan solusi yang benar - benar berhasil, daripada seseorang yang menduga ini atau itu mungkin bekerja ..
Peter
1
Sekarang Anda dapat menggunakan letsencrypt untuk melanjutkan dengan metode pertama. Anda dapat memiliki sertifikat multidomain gratis
balping