Tên miền ảo với Postfix và SSL


21

Tôi đã có một thiết lập máy chủ thư Postfix để lưu trữ nhiều tên miền ảo (nói xxx.comyyy.com).

Người dùng cấu hình máy chủ thư đi của họ là mail.xxx.commail.yyy.com. Tất cả các máy chủ thư đều đề cập đến cùng một máy chủ Postfix vật lý (cùng một IP, một phiên bản duy nhất của Postfix chạy trên máy chủ Linux này).

Tôi cần chứng chỉ SSL nào cho smtpd_tls_cert_filetùy chọn cấu hình Postfix ?

Hay tôi phải sử dụng một chứng chỉ duy nhất cho mail.xxx.comvà bảo người dùng yyy.comsử dụng mail.xxx.comlàm máy chủ gửi đi của họ? Điều này sẽ phá vỡ ảo tưởng của các máy chủ ảo riêng biệt.

[Lưu ý: các miền hoàn toàn riêng biệt. Đây không phải là nhiều tên miền phụ chia sẻ một gốc chung].

Câu trả lời:


10

Hoặc tôi phải sử dụng một chứng chỉ duy nhất cho mail.xxx.com và nói với người dùng của yyy.com sử dụng mail.xxx.com làm máy chủ gửi đi của họ?

Có, cuối cùng bạn sẽ phải làm điều đó hoặc sử dụng chứng chỉ có nhiều CommonNamehoặc SubjAltNamethuộc tính.

Không có cách nào Postfix có thể biết tên máy chủ mà khách hàng yêu cầu. Không có thứ nào như Hosttiêu đề HTTP / 1.1 cho biết miền được yêu cầu và Postfix chưa hỗ trợ SNI .

Nếu bạn thực sự phụ thuộc vào việc có hai tên miền khác nhau cho máy chủ thư của mình, bạn sẽ phải chạy hai trường hợp smtpdtrên hai giao diện mạng / địa chỉ IP riêng biệt. Thông thường, bạn chỉ cần chọn một tên miền "trung lập" và bảo người dùng của bạn sử dụng tên miền đó.


19

Trên thực tế ... Nếu bạn muốn mỗi tên miền sử dụng chứng chỉ SSL hợp lệ, bạn có 2 giải pháp: sử dụng chứng chỉ đa miền hoặc thiết lập mỗi tên miền trên một IP duy nhất. Giải pháp đầu tiên rất tệ: những chứng chỉ đó thường khá đắt (mặc dù bạn có thể tìm thấy những chứng chỉ rẻ tiền), họ sẽ liệt kê tất cả các tên miền bạn muốn chứng nhận trên cùng một chứng chỉ và quan trọng nhất là chúng chỉ được cấp một lần, vì vậy, thêm vào chỉ cần một tên miền mới có nghĩa là có được một chứng chỉ hoàn toàn mới.

Giải pháp tốt hơn là đặt từng tên miền trên IP của chính nó và sau đó khớp từng chứng chỉ với IP tương ứng.

Đây là cách bạn làm điều đó trong postfix.

Trước tiên, bạn sẽ đặt chứng chỉ của mình cho từng tên miền trong thư mục / etc / postfix / (bạn cũng có thể tạo thư mục / etc / postfix / ssl / ) Lưu ý: tôi sử dụng Plesk, sử dụng tệp chứng chỉ .pem, nhưng bạn cũng có thể sử dụng Các tệp .key và .cer (các tệp .pem chỉ là một tệp của .key và .cer, theo thứ tự đó)

sau đó, bạn cần sửa đổi tệp master.cf trong / etc / postfix /

ban đầu, tôi trông như thế này (có lẽ vì tôi đã thêm 3 IP cuối cùng sau khi tôi thiết lập máy chủ:

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

Bây giờ, để liên kết từng chứng chỉ với IP tương ứng của nó, bạn làm như sau:

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

Đó là nó!! (đừng quên bình luận các dòng gốc như đã thấy ở trên)

PS: để làm tương tự với POP / IMAP nếu bạn sử dụng chuyển phát nhanh, bạn chỉ cần đặt các bản sao của các tệp .pem đó trong / usr / share / chuyển phát nhanh-imap / (hoặc trong trường hợp của Plesk, bạn đặt chúng vào / usr / share / ) và bạn đặt tên cho chúng như sau: imapd.pem.xx.xx.xx.xx pop3d.pem.xx.xx.xx.xx

trong đó xx.xx.xx.xx là địa chỉ IP tương ứng (2 chứng chỉ là bản sao của cùng một tệp)

Hi vọng điêu nay co ich!


Cảm ơn đã dành thời gian để viết một câu trả lời chi tiết như vậy! Tôi chắc chắn rằng nó sẽ giúp được ai đó trong tương lai.
nimrodm

2
đó là hy vọng! Tôi phải mất một thời gian để ghép nó lại với nhau, và thật hiếm khi tìm ra giải pháp thực sự hiệu quả, thay vì ai đó phỏng đoán điều này hoặc nó có thể hoạt động ..
Peter

1
Bây giờ bạn có thể sử dụng letencrypt để đi với phương thức đầu tiên. Bạn có thể có chứng chỉ đa
miền
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.