This documentation is for Dovecot v2.x, see wiki1 for v1.x documentation.

This page is use UTF-8 encoding. If you cann't see the page contents, Please change the Character Encoding to UTF-8 .

在 Dovecot 下使用 SSL 來加密接收伺服器的連接

其實在講解一個以保安功能強勁的接收伺服器的時候,總不能不提它的 SSL 功能的。這也是確保伺服器和客戶端接收和資料傳送時的安全和不被盗聽的一個有效方法。

另外 Dovecot 在不同的 Unix 或 Linux 下預設地它的 ssl 連線也已經建立好了的。剩下只是你是否重新地建立過伺服器中的 cert 和 key 吧了。

Dovecot 下的 dovecot-mkcert.sh 檔案

Dovecot 為了方便管理者管理 dovecot 接收伺服器,所以在它的程式包中已經有 dovecot-mkcert.sh 程式了。這可以大大加快建立 Dovecot 下的 cert 和 Key 的速度,所以建議使用者使用這程式來建立 cert 和 key 。但是當然你也可以自行使用 OpenSSL 的指令來建立它們的。

檢視 dovecot-mkcert.sh 檔案

我會建議你指細地看一看這一個檔案的內容,因為其中會需要你設定一個 conf 檔案的。(這裡會以 OpenBSD 為 default 檔案路徑,但是 fedora 也可以透過 $ rpm -ql 來找到其路徑的。

在 OpenBSD 下, dovecot-mkcert.sh 檔案所在的路徑為︰

file:///usr/local/sbin/dovecot-mkcert.sh

dovecot-openssl.cnf 的檔案

如果你打開 dovecot-mkcert.sh 來一看的話,你會發覺這 shell script 會需要一個叫作 dovecot-openssl.cnf

OPENSSL=${OPENSSL-openssl}
SSLDIR=${SSLDIR-/etc/ssl}
OPENSSLCONFIG=${OPENSSLCONFIG-${SSLDIR}/dovecot-openssl.cnf}

如果你是使用 OpenBSD 的話,你要留意一件事;就是 OpenBSD 下的 dovecot 下的程式包也有 dovecot-openssl.cnf 檔案的。它是放在 file:///usr/local/share/examples/dovecot/dovecot-openssl.cnf 但是這 script 下要使用來建立 cert 和 key 的設定檔卻在 /etc/ssl/dovecot-openssl.cnf 下的,這可需要留意一下。

檢視 dovecot-openssl.cnf 檔案

以下是 dovecot-openssl.cnf 的檔案內容。

[ req ]
default_bits = 1024
encrypt_key = yes
distinguished_name = req_dn
x509_extensions = cert_type
prompt = no

[ req_dn ]
# country (2 letter code)
#C=FI

# State or Province Name (full name)
#ST=

# Locality Name (eg. city)
#L=Helsinki

# Organization (eg. company)
#O=Dovecot

# Organizational Unit Name (eg. section)
OU=IMAP server

# Common Name (*.example.com is also possible)
CN=imap.example.com

# E-mail contact
emailAddress=postmaster@example.com

[ cert_type ]
nsCertType = server

因為是 dovecot source core 下有的檔案,所以無論 Fedora 或者其 OpenBSD 等,它的 dovecot-openssl.cnf 都是一樣的。

我們用最省力的方法來設定它

其實你是可以使用建立一般 SSL Key 和 cert 的方式來建立它的。至於不同的欄位的意義也在之前協會的網頁有所交代。

http://www.samba.hk/?q=node/314

如果是最省力的方式來設定 dovecot 的話,你可以作這樣的設定︰

CN =

這裡填上你伺服器的 FQDN 名字。要留意的是你的 client 使用何名字來連接你的 imapd 伺服器,就填入什麼名字。

emailAddress =

這裡請填入你電郵伺服器的管理者名字。例如︰ 你電郵伺服器負責 swpearl.com 的話,你可能在這裡鍵入 postmaster@swpearl.com ,通常來說一個電郵伺服器管理者的名稱者是 postmaster 的。

例如︰在 samba.hk 的電郵伺服器,它這兩個欄位就被填入這樣的值。

CN=mail.samba.hk
emailAddres=postmaster@samba.hk

修改 default_bits 以致有更好的加密情況

另外你可以修改 default_bits ,以致有更好的加密效果。例如︰現在是使用 1024 bit 來加密,你可以把它增加致 2048 bit ,那相對 cracker 要解開你伺服器和客戶端連接時所交換的資料,就需要多一倍或以上的時間。

default_bits = 2048

== 使用 dovecot-mkcert.sh

你可能會想當設定好的時候,就可以使用 dovecot-mkcert.sh 來建立它的 cert 和 key 的。但是當然執行它的時候,還是會得到一個額外的信息,就是說 file:///etc/ssl/dovecotcert.pam 是存在的。

# dovecot-mkcert.sh
/etc/ssl/dovecotcert.pem already exists, won't overwrite
# 

其實 dovecot 來安裝的時候就會建立兩個檔案。(不同的系統,這兩個檔案所在的路徑各有不同。例如在 OpenBSD 下這兩個檔案在以下路徑。)

* file:///etc/ssl/dovecotcert.pam

這是放置 dovecot 的公眾匙的檔案。

* file:///etc/ssl/private/dovecot.pem

這是放置 dovecot 的私隱秘匙的檔案。

因為不同的系統有不同的路徑,所以你可以先刪除第一個報出來的檔案,例如︰這裡先刪除 file:///etc/ssl/dovecotcert.pam 後再執行 dovecot-mkcert.sh ,這樣程式就會報出你還要刪除的檔案。

# dovecot-mkcert.sh
/etc/ssl/private/dovecot.pem already exists, won't overwrite
#

把這兩個檔案都刪除掉,你就可以順利執行 dovecot-mkcert.sh ,及重新產生接收伺服器的 SSL 密匙和公眾匙。

# dovecot-mkcert.sh
Generating a 2048 bit RSA private key
.............+++
..................................................+++
writing new private key to '/etc/ssl/private/dovecot.pem'
-----

subject= /OU=IMAP server/CN=mail.samba.hk/emailAddress=postmaster@samba.hk
MD5 Fingerprint=BD:0C:0A:4A:AE:17:3B:E9:8A:D3:F7:9B:C3:5B:E9:0D
#

在 dovecot.conf 下一個影響 dovecot SSL 連線的設定

這裡你可以檢查一下你的 dovecot.conf ,其中有一個設定會影響連線的。

disable_plaintext_auth = no

在 OpenBSD 下,這參數被設定作 yes 的時候,表示著不接受非以 SSL 加密不能連接電郵伺服器。如果你希望你的 dovecot 也聆聽非 ssl 連線而來要求連接的請求時,請把這個參數設作 no 。

在 dovecot.conf 下的 SSL 匙的設定

另外你也可以看看 dovecot.conf 以何地方指作它的 ssl 匙。這些參數如果你不知道所指的意義為何,請不要修改它們。

...
#ssl_disable = no
...
ssl_cert_file = /etc/ssl/dovecotcert.pem
ssl_key_file = /etc/ssl/private/dovecot.pem
...

這時你已經設定好了 dovecot 的新加密匙了。你可以重新起動 dovecot ,讓它生效。

使用 Outlook express 來連接加密後的 dovecot 伺服器

首先你要留意的是 Outlook express 的 imap 伺服器的 login 上只支援 PLAIN 。所以你是不留把這一個選項設定作 yes 的。請檢查及修改這樣的設定作如下︰

disable_plaintext_auth = no

另外你也要留意一事,就是如果你希望 Outlook express 也可以使用 ssl 連線的話是可以的,你只需要修改這裡的設定。

http://www.openworkshop.org/wikiattach/Email(2f)DovecotSsl/attachments/imap-ssl-com.jpg


ChineseSupport

None: ChineseSupport/DovecotSsl (last edited 2009-03-15 22:35:11 by localhost)