OpenSSL在Apache和Dovecot 下的使用(二)
本篇中,Carla Schroder 會(huì)解釋如何使用 OpenSSL 保護(hù)你的 Postfix/Dovecot 郵件服務(wù)器
在上周,作為我們 OpenSSL 系列的一部分,我們學(xué)習(xí)了如何配置 Apache 以使用 OpenSSL 并強(qiáng)制所有會(huì)話使用 HTTPS。 今天,我們將使用 OpenSSL 保護(hù)我們的 Postfix/Dovecot 郵件服務(wù)器。這些示例基于前面的教程; 請(qǐng)參閱***的參考資料部分,了解本系列中以前的所有教程的鏈接。
你需要配置 Postfix 以及 Dovecot 都使用 OpenSSL,我們將使用我們?cè)贠penSSL 在 Apache 和 Dovecot 下的使用(一)中創(chuàng)建的密鑰和證書。
Postfix 配置
你必須編輯 /etc/postfix/main.cf 以及 /etc/postfix/master.cf。實(shí)例的 main.cf 是完整的配置,基于我們先前的教程。替換成你自己的 OpenSSL 密鑰和證書名以及本地網(wǎng)絡(luò)地址。
- compatibility_level=2
- smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu/GNU)
- biff = no
- append_dot_mydomain = no
- myhostname = localhost
- alias_maps = hash:/etc/aliases
- alias_database = hash:/etc/aliases
- myorigin = $myhostname
- mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.0.0/24
- mailbox_size_limit = 0
- recipient_delimiter = +
- inet_interfaces = all
- virtual_mailbox_domains = /etc/postfix/vhosts.txt
- virtual_mailbox_base = /home/vmail
- virtual_mailbox_maps = hash:/etc/postfix/vmaps.txt
- virtual_minimum_uid = 1000
- virtual_uid_maps = static:5000
- virtual_gid_maps = static:5000
- virtual_transport = lmtp:unix:private/dovecot-lmtp
- smtpd_tls_cert_file=/etc/ssl/certs/test-com.pem
- smtpd_tls_key_file=/etc/ssl/private/test-com.key
- smtpd_use_tls=yes
- smtpd_sasl_auth_enable = yes
- smtpd_sasl_type = dovecot
- smtpd_sasl_path = private/auth
- smtpd_sasl_authenticated_header = yes
在 master.cf 取消 submission inet 部分的注釋,并編輯 smtpd_recipient_restrictions:
- #submission inet n - y - - smtpd
- -o syslog_name=postfix/submission
- -o smtpd_tls_security_level=encrypt
- -o smtpd_sasl_auth_enable=yes
- -o milter_macro_daemon_name=ORIGINATING
- -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
- -o smtpd_tls_wrappermode=no
完成后重新加載 Postfix:
- $ sudo service postfix reload
Dovecot 配置
在我們以前的教程中,我們?yōu)?Dovecot 創(chuàng)建了一個(gè)單一配置文件 /etc/dovecot/dovecot.conf,而不是使用多個(gè)默認(rèn)配置文件。這是一個(gè)基于我們以前的教程的完整配置。再說一次,使用你自己的 OpenSSL 密鑰和證書,以及你自己的 userdb 的 home 文件:
- protocols = imap pop3 lmtp
- log_path = /var/log/dovecot.log
- info_log_path = /var/log/dovecot-info.log
- disable_plaintext_auth = no
- mail_location = maildir:~/.Mail
- pop3_uidl_format = %g
- auth_mechanisms = plain
- passdb {
- driver = passwd-file
- args = /etc/dovecot/passwd
- }
- userdb {
- driver = static
- args = uid=vmail gid=vmail home=/home/vmail/studio/%u
- }
- service lmtp {
- unix_listener /var/spool/postfix/private/dovecot-lmtp {
- group = postfix
- mode = 0600
- user = postfix
- }
- }
- protocol lmtp {
- postmaster_address = postmaster@studio
- }
- service lmtp {
- user = vmail
- }
- service auth {
- unix_listener /var/spool/postfix/private/auth {
- mode = 0660
- user=postfix
- group=postfix
- }
- }
- ssl=required
- ssl_cert = </etc/ssl/certs/test-com.pem
- ssl_key = </etc/ssl/private/test-com.key
重啟 Dovecot:
- $ sudo service postfix reload
用 telnet 測(cè)試
就像我們以前一樣,現(xiàn)在我們可以通過使用 telnet 發(fā)送消息來測(cè)試我們的設(shè)置。 但是等等,你說 telnet 不支持 TLS/SSL,那么這樣怎么辦呢?首先通過使用 openssl s_client 打開一個(gè)加密會(huì)話。openssl s_client 的輸出將顯示你的證書及其指紋和大量其它信息,以便你知道你的服務(wù)器正在使用正確的證書。會(huì)話建立后輸入的命令都是不以數(shù)字開頭的:
- $ openssl s_client -starttls smtp -connect studio:25
- CONNECTED(00000003)
- [masses of output snipped]
- Verify return code: 0 (ok)
- ---
- 250 SMTPUTF8
- EHLO studio
- 250-localhost
- 250-PIPELINING
- 250-SIZE 10240000
- 250-VRFY
- 250-ETRN
- 250-AUTH PLAIN
- 250-ENHANCEDSTATUSCODES
- 250-8BITMIME
- 250-DSN
- 250 SMTPUTF8
- mail from: <carla@domain.com>
- 250 2.1.0 Ok
- rcpt to: <alrac@studio>
- 250 2.1.5 Ok
- data
- 354 End data with .subject: TLS/SSL test
- Hello, we are testing TLS/SSL. Looking good so far.
- .
- 250 2.0.0 Ok: queued as B9B529FE59
- quit
- 221 2.0.0 Bye
你應(yīng)該可以在郵件客戶端中看到一條新郵件,并在打開時(shí)要求你驗(yàn)證 SSL 證書。你也可以使用 openssl s_client 來測(cè)試 Dovecot 的 POP3 和 IMAP 服務(wù)。此示例測(cè)試加密的 POP3,第 5 號(hào)消息是我們?cè)?telnet(如上)中創(chuàng)建的:
- $ openssl s_client -connect studio:995
- CONNECTED(00000003)
- [masses of output snipped]
- Verify return code: 0 (ok)
- ---
- +OK Dovecot ready
- user alrac@studio
- +OK
- pass password
- +OK Logged in.
- list
- +OK 5 messages:
- 1 499
- 2 504
- 3 514
- 4 513
- 5 565
- .
- retr 5
- +OK 565 octets
- Return-Path: <carla@domain.com>
- Delivered-To: alrac@studio
- Received: from localhost
- by studio.alrac.net (Dovecot) with LMTP id y8G5C8aablgKIQAAYelYQA
- for <alrac@studio>; Thu, 05 Jan 2017 11:13:10 -0800
- Received: from studio (localhost [127.0.0.1])
- by localhost (Postfix) with ESMTPS id B9B529FE59
- for <alrac@studio>; Thu, 5 Jan 2017 11:12:13 -0800 (PST)
- subject: TLS/SSL test
- Message-Id: <20170105191240.B9B529FE59@localhost>
- Date: Thu, 5 Jan 2017 11:12:13 -0800 (PST)
- From: carla@domain.com
- Hello, we are testing TLS/SSL. Looking good so far.
- .
- quit
- +OK Logging out.
- closed
現(xiàn)在做什么?
現(xiàn)在你有一個(gè)功能良好的,具有合適的 TLS/SSL 保護(hù)的郵件服務(wù)器了。我鼓勵(lì)你深入學(xué)習(xí) Postfix 以及 Dovecot; 這些教程中的示例盡可能地簡(jiǎn)單,不包括對(duì)安全性、防病毒掃描程序、垃圾郵件過濾器或任何其他高級(jí)功能的調(diào)整。我認(rèn)為當(dāng)你有一個(gè)基本工作系統(tǒng)時(shí)更容易學(xué)習(xí)高級(jí)功能。
下周回到 openSUSE 包管理備忘錄上。
資源