2014年12月7日 星期日

Postfix SMTP + Dovecot 加密 SSL / TLS

引用之前發表的 Postfix 建立文章裡,此篇將再把所有通訊端口都進行加密來保證信件通訊安全。

 

目標將 Mail service 中都加上 SSL 連線,並將協定改為以下

SMTP + TLS

IMAPS

POP3S

 

Postfix smtp + dovecot 的建立可以參考小弟之前的文章

 

在之前都是採用未加密的形式,但 SSL 漸漸已經被重視而且列為標準需求,在此紀錄將既有的 Mail Server 升級為 SSL 加密郵件伺服器



 

 

 

Postfix SMTP + TLS

setp.1 產生 SMTP 憑證,再產生 key 之前你必須擁有 crypto-utils
shell# genkey --day 3650 shazimail.twbbs.org 



建立的憑證位置

/etc/pki/tls/certs/shazimail.twbbs.org.cert # 公鑰
/etc/pki/tls/private/shazimail.twbbs.org.key # 私鑰

 

 

setp.2 設定 main.cf,將 SASL 驗證工作階段加密
shell# vim /etc/postfix/main.cf 

smtpd_use_tls = yes
smtpd_tls_auth_only = yes
smtpd_tls_key_file = /etc/pki/tls/private/shazimail.twbbs.org.key
smtpd_tls_cert_file = /etc/pki/tls/certs/shazimail.twbbs.org.crt
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_CAfile = $smtpd_tls_cert_file
smtpd_tls_session_cache_timeout = 3600s

\\ loglevel = 1 會紀錄 tls log , 設定 2 以上可以看到更詳細的 debug log

\\ CAfile 為要提供 CA Server 的憑證,這邊引用 cert file 的路徑

\\ smtpd_tls_auth_only 強制 SASL 走 TLS 協定將所有資訊加密

 

setp.3 reload postfix config
shell# postfix reload

 

測試 & 檢測 smtp tls
$ telnet localhost 25 
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 shazimail.twbbs.org ESMTP Postfix
ehlo localhost
250-shazi.twbbs.org
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
quit
221 2.0.0 Bye
Connection closed by foreign host.

 

可以看到 mail server 提供 STARTTLS 服務,而且因為強制 SASL TLS 的關係

所以 AUTH PLAIN LOGIN 及 AUTH=PLAIN LOGIN 已經不見囉!!

 

 

Dovecot 設定 TLS

setp.1 設定 dovecot.conf,將協定都改為 SSL 加密

shell# /etc/dovecot/dovecot.conf

protocols = imaps pop3s

 

setp.2 設定 10-ssl.conf,設定 SSL 以及憑證
vim /etc/dovecot/conf.d/10-ssl.conf 

ssl = yes
ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
ssl_key = </etc/pki/dovecot/private/dovecot.pem

※ pem 的部分一樣自行建立憑證,若是測試用 dovecot 已經有預設提供 pem。

 

setp.3 restart dovecot
shell# service dovecot restart

 

測試 & 檢查
shell# netstat -tunpl | grep dovecot 

tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN 19154/dovecot
tcp 0 0 0.0.0.0:995 0.0.0.0:* LISTEN 19154/dovecot
tcp 0 0 :::993 :::* LISTEN 19154/dovecot
tcp 0 0 :::995 :::* LISTEN 19154/dovecot

可以看到已經 Listen 995 & 993 port

 

用 MUA 軟體來登入檢查 maillog,第一行最尾端應該要是 TLS 唷!!
Dec  7 06:03:14 localhost dovecot: pop3-login: Login: user=<eric>, method=PLAIN, rip=114.11.12.11, lip=192.168.121.10, mpid=19169, TLS 
Dec 7 06:03:14 localhost dovecot: pop3(eric): Disconnected: Logged out top=0/0, retr=0/0, del=0/8, size=8027

 

 

 

MUA 端的設定 ( Outlook、Thunderbird )

 

Thunderbird:

「編輯」 > 「帳戶設定」,然後在左邊面版選取郵件帳戶的「伺服器設定」。在「伺服器設定」部份,選取「使用 SSL 安全連線」。請留意連接埠現在應該變為 993 或 995,分別對應 IMAPS 或 POP3S。

 

MS Outlook 2010 :

內寄伺服器走 POP3 就必須將 port 改為 995,並且勾選「此伺服器需要加密連線 (SSL)」 ( IMAPS 就為 993 )

外寄伺服器 25 port 不變,但必須將加密類型改為 TLS

2014-12-07_055228

 

 

 

 

 

參考資料:

HowTos Postfix/dovecot 的 SASL 與 SSL/TLS 指南

Orignal From: Postfix SMTP + Dovecot 加密 SSL / TLS

沒有留言:

張貼留言