August 9th, 2006 by a-wei
在 email 的使用上 .. 普遍都還是使用未經加密傳輸的 smtp 以及 pop3.
smtp 是寄信的通訊協定,而 pop3 是收信的通訊協定, smtp 的 port number 是 25,pop3 是 110。
在郵件的傳送以及接收的過程中,這兩者都是未經過加密的,也就是說 .. 如果在你所屬的網路環境中,有人使用 sniffer 之類的封包擷取軟體,可以將你傳輸以及接收的郵件資料,copy 一份。
要避免這樣的情形發生 .. 這時可以使用經過加密的通訊協定來避免此情形,就像是 … 網頁的 https .. 走的 SSL 通訊協定.
smtps 與 pop3s.
在 postfix 的早期版本 2.0.x 系列中 . pop3 與 imap 是由一個叫做 dovecot 的軟體負責… 因此,要開啟 pop3s 與 imaps.
就得從它開刀 .
1. 編輯 /etc/dovecot.conf
a.在 protocols 的地方,原本可能有 pop3 imap, 這時再把 pop3s imaps 加上去。
protocols = imap imaps pop3 pop3s
b. 把 SSL/TLS 的功能打開
ssl_disable = no
c. 指定簽章的路徑
ssl_cert_file = /usr/share/ssl/certs/dovecot.pem
ssl_key_file = /usr/share/ssl/private/dovecot.pem
ssl_parameters_file = /var/run/dovecot/ssl-parameters.dat
路徑可能跟上面所寫的不一樣,搜尋一下看你的 ssl 目錄在哪裡 .
# whereis ssl
之後重新啟動 dovecot
# service dovecot restart
用 nmap localhost
這時應該可以看見 pop3s 跟 imaps 出現,這個步驟就算完成。
993/tcp open imaps
995/tcp open pop3s
2. 開啟 smtps
postfix 2.0.x 預設沒有開啟 SSL/TLS . 因此我們首先建立 smtps 的簽章.
就選在跟 dovecot 相同目錄內製作…
# openssl req -new -x509 -nodes -out smtpd.pem -keyout smtpd.pem -days 3650
這時會問一些資料 .. 把它都輸入進去.
之後 for smtps 的簽章 smtpd.pem 就建立完成了。
a. 開啟 /etc/postfix/main.cf
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /usr/share/ssl/certs/smtpd.pem
smtpd_tls_cert_file = /usr/share/ssl/certs/smtpd.pem
smtpd_tls_CAfile = /usr/share/ssl/certs/smtpd.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
b. 開啟 /etc/postfix/master.cf
smtps inet n - n - - smtpd
smtps inet n - n - - smtpd -v -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes
確認有以上兩行。
然後把 postfix 重新啟動.
# service postfix restart
緊接著用 nmap 再確認一次.
# nmap localhost
這時候應該可以看見 465/tcp open smtps
恭喜大功完成
然而 .. 因為我們的簽章沒有經過正式的授權單位認可,因此當你初次用 outlook 或 outlook express 做 smtps 跟 pop3s 設定之後,的傳送接收信件,會出現警告訊息,這是沒有關係的。
I. 勾選加密,並確認埠號的數字跟下圖一樣。