โดเมนเสมือนกับ Postfix และ SSL


21

ฉันมีการตั้งค่าเซิร์ฟเวอร์อีเมล Postfix สำหรับโฮสต์หลายโดเมนเสมือน (พูดxxx.comและyyy.com)

ผู้ใช้กำหนดค่าเซิร์ฟเวอร์อีเมลของพวกเขาออกเป็นและmail.xxx.com mail.yyy.comเมลเซิร์ฟเวอร์ทั้งหมดอ้างถึงเซิร์ฟเวอร์ Postfix แบบฟิสิคัลเดียวกัน (IP เดียวกันอินสแตนซ์เดียวของ Postfix ที่ทำงานบนเซิร์ฟเวอร์ Linux นี้)

ฉันต้องใช้ใบรับรอง SSL ใดสำหรับsmtpd_tls_cert_fileตัวเลือกการกำหนดค่าPostfix

หรือฉันต้องใช้ใบรับรองเดียวmail.xxx.comและบอกให้ผู้yyy.comใช้ใช้mail.xxx.comเป็นเซิร์ฟเวอร์ขาออกของพวกเขาหรือไม่ สิ่งนี้จะทำให้ภาพลวงตาของเซิร์ฟเวอร์เสมือนแยกออกจากกัน

[หมายเหตุ: โดเมนแยกจากกันโดยสิ้นเชิง โดเมนเหล่านี้ไม่ใช่หลายโดเมนย่อยที่แชร์รูททั่วไป]

คำตอบ:


10

หรือฉันต้องใช้ใบรับรองเดียวสำหรับ mail.xxx.com และบอกผู้ใช้ของ yyy.com ให้ใช้ mail.xxx.com เป็นเซิร์ฟเวอร์ขาออก

ใช่ในที่สุดคุณจะต้องทำอย่างนั้นหรือใช้ใบรับรองที่มีหลายCommonNameหรือSubjAltNameคุณลักษณะ

ไม่มีวิธี Postfix สามารถทราบว่าชื่อโฮสต์ที่ลูกค้าร้องขอ ไม่มีสิ่งเช่น IE เป็น HTTP / 1.1 Hostส่วนหัวซึ่งบ่งชี้ว่าโดเมนที่ต้องการและ Postfix ไม่สนับสนุนSNIเลย

หากคุณขึ้นอยู่กับการมีสองโดเมนที่แตกต่างกันสำหรับเซิร์ฟเวอร์อีเมลของคุณคุณจะต้องเรียกใช้สองอินสแตนซ์ของsmtpdสองเครือข่าย / ที่อยู่ IP ที่แยกจากกัน โดยปกติคุณเพียงแค่เลือกโดเมน "เป็นกลาง" และบอกให้ผู้ใช้ของคุณใช้


19

จริง ๆ แล้ว ... หากคุณต้องการให้แต่ละโดเมนใช้ใบรับรอง SSL ที่ถูกต้องคุณมี 2 วิธีแก้ไข: ใช้ใบรับรองหลายโดเมนหรือตั้งค่าแต่ละโดเมนใน IP ที่ไม่ซ้ำกัน วิธีแก้ปัญหาแรกนั้นแย่มาก: ใบรับรองเหล่านั้นมักจะค่อนข้างแพง (แม้ว่าคุณจะพบว่ามีราคาไม่แพง) พวกเขาจะทำรายการโดเมนทั้งหมดที่คุณต้องการให้การรับรองในใบรับรองเดียวกันและที่สำคัญที่สุดพวกเขาจะออกเพียงครั้งเดียว แค่หนึ่งโดเมนใหม่หมายถึงการได้รับใบรับรองใหม่ทั้งหมด

ทางออกที่ดีกว่าคือการวางแต่ละโดเมนใน IP ของตัวเองแล้วจับคู่ใบรับรองแต่ละรายการกับ IP ที่เกี่ยวข้อง

นี่คือวิธีที่คุณทำใน postfix

คุณจะวางใบรับรองของคุณสำหรับแต่ละโดเมนในไดเรกทอรี/ etc / postfix / (คุณยังสามารถสร้างไดเรกทอรี/ etc / postfix / ssl / ) หมายเหตุ: ฉันใช้ Plesk ซึ่งใช้ไฟล์ใบรับรอง. pem แต่คุณยังสามารถใช้ ไฟล์. key และ. cer (ไฟล์. pem เป็นเพียงไฟล์ concat ของ. key และ. cer ตามลำดับนั้น)

จากนั้นคุณต้องแก้ไขไฟล์master.cfใน/ etc / postfix /

เดิมของฉันดูเหมือนว่านี้ (อาจเป็นเพราะฉันเพิ่ม 3 IP ล่าสุดหลังจากที่ฉันติดตั้งเซิร์ฟเวอร์:

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

ตอนนี้เมื่อต้องการผูกใบรับรองแต่ละรายการกับ IP ที่เกี่ยวข้องคุณต้องปฏิบัติดังนี้:

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

แค่นั้นแหละ!! (อย่าลืมแสดงความคิดเห็นในบรรทัดเดิมตามที่เห็นด้านบน)

PS: หากต้องการทำเช่นเดียวกันสำหรับ POP / IMAP หากคุณใช้ courier-imap คุณเพียงวางสำเนาของไฟล์. pem เหล่านั้นใน/ usr / share / courier-imap / (หรือในกรณีของ Plesk คุณวางไว้ใน/ usr / share / ) และคุณตั้งชื่อดังต่อไปนี้: imapd.pem.xx.xx.xx.xx pop3d.pem.xx.xx.xx.xx.xx

โดยที่ xx.xx.xx.xx เป็นที่อยู่ IP ที่เกี่ยวข้อง (ใบรับรอง 2 รายการคือสำเนาของไฟล์เดียวกัน)

หวังว่านี่จะช่วยได้!


ขอบคุณที่สละเวลาเขียนคำตอบแบบละเอียด! ฉันแน่ใจว่ามันจะช่วยให้ใครบางคนในอนาคต
nimrodm

2
นั่นคือความหวัง! ฉันใช้เวลาสักครู่ในการรวมมันเข้าด้วยกันและหายากที่จะหาวิธีแก้ปัญหาที่ใช้งานได้จริงแทนที่จะมีคนคาดเดาสิ่งนี้หรืออาจใช้การได้ ..
Peter

1
ตอนนี้คุณสามารถใช้ letsencrypt เพื่อไปกับวิธีแรก คุณสามารถมีใบรับรองหลายโดเมนฟรี
balping
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.