Dovecot是一個開源的,為Linux/Unix-like系統提供IMAP,POP3服務的軟件。Dovecot 是一個比較新的軟件,由 Timo Sirainen 開發,最初發布于 2002年7月。作者將安全性考慮在第一,所以 Dovecot 在安全性方面比較出眾。另外,Dovecot 支持多種認證方式,所以在功能方面也比較符合一般的應用。
下面我們來紀錄記錄一下它的安裝:
這里我使用了CentOS系統自帶的yum進行安裝,安裝非常簡單,只需要一個包:dovecot
# yum install dovecot
就一切都搞定了
它的主要配置文件也只有一個,位于 /etc/dovecot.conf
base_dir = /var/run/dovecot/ # dovecot運行目錄protocols = pop3 pop3s # 使用協議listen = * # 監聽連接進來的ip地址,* => 所有的IPV4,[::] => 所有的IPV6disable_plaintext_auth = nolog_path = /var/log/dovecot.log #日志文件位置info_log_path = /var/log/dovecot-info.log # debug信息log_timestamp = “%Y-%m-%d %H:%M:%S ” ssl_disable = yesmail_location = maildir:/var/vmail/%u #用戶的郵件目錄位置,這里使用maildir方式存儲mail_privileged_group = mailprotocol imap {}protocol pop3 {pop3_uidl_format = %08Xu%08Xv}protocol lda {postmaster_address = postmaster@example.com}auth_verbose = yes # 認證詳細日志auth_debug = yes # 認證的debug信息打開,可以顯示出SQL查詢語句,正常后可關閉auth_debug_passwords = yes #可以顯示密碼失敗的詳細信息,正常后可關閉auth default {mechanisms = plain login #認證機制passdb pam {}passdb passwd-file {args = /etc/dovecot/passwd #密碼文件}userdb passwd {}userdb static {args = uid=vmail gid=vmail home=/var/vmail/%u #這里的uid和gid需要可以訪問/home/vmail郵箱目錄}user = rootsocket listen {client {path = /var/spool/postfix/private/auth-client #postfix需要連接到這個sock進行認證mode = 0660user = postfixgroup = postfix}}}dict {}plugin {}/etc/dovecot/passwd,可以使用明碼或者是編碼后的密碼:
user1@example.com:{PLAIN}user1’s passworduser2@example.com:{PLAIN}user2’s password這里使用了明文密碼,也可以使用加密后的密碼:
dovecotpw -s sshaEnter new password: fooRetype new password: foo{SSHA}dZ9TYI7DTM+J558QUBRAIMd/WCOoFGeU在 /etc/dovecot/passwd
joe:{SSHA}dZ9TYI7DTM+J558QUBRAIMd/WCOoFGeU以上介紹了帳號使用文件存儲的方式,下面再介紹一下使用mysql數據庫進行帳號存儲,只需要修改auth default區塊:
auth default {mechanisms = plain loginpassdb pam {}passdb sql {args = /etc/dovecot/dovecot-sql.conf}userdb passwd {}userdb sql {args = /etc/dovecot/dovecot-sql.conf}user = rootsocket listen {client {path = /var/spool/postfix/private/auth-client mode = 0660user = postfixgroup = postfix}}}/etc/dovecot/dovecot-sql.conf
driver = mysqlconnect = host=/tmp/mysql.sock dbname=postfix user=postfix password=mypassworddefault_pass_scheme = MD5-CRYPT # 如果使用postfixadmin管理,需要用這個加密方式password_query = SELECT username as user, password from mailbox WHERE username = ‘%u’user_query = SELECT maildir, 501 AS uid, 501 AS gid FROM mailbox WHERE username = ‘%u’ #這里uid和gid需要可以訪問帳號郵件存儲目錄
就這么簡單,配置完成了,下面我們來進行一下簡單的測試:
helo mail.xxx.net250 mail.xxx.net>>> auth login334 VXNlcm5hbWU6>>> dXNlcjFAZXhhbXBsZS5jb20= (Base64后的用戶名:user1@example.com)334 UGFzc3dvcmQ6>>> Zm9vYmFy (Base64后的密碼:foobar)235 2.7.0 Authentication successful
用plain的方式認證
telnet localhost 25
220 mail.xxx.net ESMTP Postfix>>> auth plain334 >>> AHVzZXIxQGV4YW1wbGUuY29tAGZvb2Jhcg== (Base64后的用戶名和密碼:/0user1@example.com/0foobar)235 2.7.0 Authentication successful
使用plain方式認證需要注意,用戶名和密碼需要一起進行編碼,用/0作為分隔符。
Base64的方式有很多,最后我們再介紹一個使用Ruby進行編碼的方法:
inosin@mac:~ > ruby -rbase64 -e ‘puts Base64.encode64(“/0user1@example.com/0foobar”)’AHVzZXIxQGV4YW1wbGUuY29tAGZvb2Jhcg==inosin@mac:~ > ruby -rbase64 -e ‘puts Base64.encode64(“user1@example.com”)’dXNlcjFAZXhhbXBsZS5jb20=inosin@mac:~ > ruby -rbase64 -e ‘puts Base64.encode64(“foobar”)’Zm9vYmFy
新聞熱點
疑難解答