Linux中國

OpenSSL 在 Apache 和 Dovecot 下的使用(二)

本篇中,Carla Schroder 會解釋如何使用 OpenSSL 保護你的 Postfix/Dovecot 郵件伺服器

上周,作為我們 OpenSSL 系列的一部分,我們學習了如何配置 Apache 以使用 OpenSSL 並強制所有會話使用 HTTPS。 今天,我們將使用 OpenSSL 保護我們的 Postfix/Dovecot 郵件伺服器。這些示例基於前面的教程; 請參閱最後的參考資料部分,了解本系列中以前的所有教程的鏈接。

你需要配置 Postfix 以及 Dovecot 都使用 OpenSSL,我們將使用我們在OpenSSL 在 Apache 和 Dovecot 下的使用(一)中創建的密鑰和證書。

Postfix 配置

你必須編輯 /etc/postfix/main.cf 以及 /etc/postfix/master.cf。實例的 main.cf 是完整的配置,基於我們先前的教程。替換成你自己的 OpenSSL 密鑰和證書名以及本地網路地址。

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 配置

在我們以前的教程中,我們為 Dovecot 創建了一個單一配置文件 /etc/dovecot/dovecot.conf,而不是使用多個默認配置文件。這是一個基於我們以前的教程的完整配置。再說一次,使用你自己的 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 測試

就像我們以前一樣,現在我們可以通過使用 telnet 發送消息來測試我們的設置。 但是等等,你說 telnet 不支持 TLS/SSL,那麼這樣怎麼辦呢?首先通過使用 openssl s_client 打開一個加密會話。openssl s_client 的輸出將顯示你的證書及其指紋和大量其它信息,以便你知道你的伺服器正在使用正確的證書。會話建立後輸入的命令都是不以數字開頭的:

$ 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

你應該可以在郵件客戶端中看到一條新郵件,並在打開時要求你驗證 SSL 證書。你也可以使用 openssl s_client 來測試 Dovecot 的 POP3 和 IMAP 服務。此示例測試加密的 POP3,第 5 號消息是我們在 telnet(如上)中創建的:

$ 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

現在做什麼?

現在你有一個功能良好的,具有合適的 TLS/SSL 保護的郵件伺服器了。我鼓勵你深入學習 Postfix 以及 Dovecot; 這些教程中的示例儘可能地簡單,不包括對安全性、防病毒掃描程序、垃圾郵件過濾器或任何其他高級功能的調整。我認為當你有一個基本工作系統時更容易學習高級功能。

下周回到 openSUSE 包管理備忘錄上。

資源

via: https://www.linux.com/learn/intro-to-linux/openssl-apache-and-dovecot-part-2

作者:CARLA SCHRODER 譯者:geekpi 校對:校對者ID

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國