分享

Dovecot配置笔记

 博雅小憩 2015-04-02
     Dovecot是一个开源的,为Linux/Unix-like系统提供IMAP,POP3服务的软件。主要是为了安全产生的,不管大小应用,Dovecot都是一个非常优秀的选择。它非常快,配置简单,不需要专业的管理员,而且它也非常节省内存。

以上是来自http://www./官方的介绍。

下面我们来纪录记录一下它的安装:
这里我使用了CentOS系统自带的yum进行安装,安装非常简单,只需要一个包:dovecot
# yum install dovecot
就一切都搞定了

它的主要配置文件也只有一个,位于 /etc/dovecot.conf

Conf代码  收藏代码
  1. base_dir = /var/run/dovecot/   # dovecot运行目录  
  2. protocols = pop3 pop3s    # 使用协议  
  3. listen = *   # 监听连接进来的ip地址,* => 所有的IPV4,[::] => 所有的IPV6  
  4. disable_plaintext_auth = no  
  5. log_path = /var/log/dovecot.log   #日志文件位置  
  6. info_log_path = /var/log/dovecot-info.log   # debug信息  
  7. log_timestamp = "%Y-%m-%d %H:%M:%S "   
  8. ssl_disable = yes  
  9. mail_location = maildir:/var/vmail/%u    #用户的邮件目录位置,这里使用maildir方式存储  
  10. mail_privileged_group = mail  
  11. protocol imap {  
  12. }  
  13.     
  14. protocol pop3 {  
  15.   pop3_uidl_format = %08Xu%08Xv  
  16. }  
  17. protocol lda {  
  18.   postmaster_address = postmaster@example.com  
  19. }  
  20. auth_verbose = yes  # 认证详细日志  
  21. auth_debug = yes     # 认证的debug信息打开,可以显示出SQL查询语句,正常后可关闭  
  22. auth_debug_passwords = yes   #可以显示密码失败的详细信息,正常后可关闭  
  23. auth default {  
  24.   mechanisms = plain login   #认证机制  
  25.   passdb pam {  
  26.   }  
  27.   passdb passwd-file {  
  28.     args = /etc/dovecot/passwd   #密码文件  
  29.   }  
  30.   userdb passwd {  
  31.   }  
  32.   userdb static {  
  33.     args = uid=vmail gid=vmail home=/var/vmail/%u    #这里的uid和gid需要可以访问/home/vmail邮箱目录  
  34.   }  
  35.   user = root  
  36.   socket listen {  
  37.     client {  
  38.       path = /var/spool/postfix/private/auth-client    #postfix需要连接到这个sock进行认证  
  39.       mode = 0660  
  40.       user = postfix  
  41.       group = postfix  
  42.     }  
  43.   }  
  44. }  
  45. dict {  
  46. }  
  47. plugin {  
  48. }  


/etc/dovecot/passwd,可以使用明码或者是编码后的密码:
Passwd代码  收藏代码
  1. user1@example.com:{PLAIN}user1's password  
  2. user2@example.com:{PLAIN}user2's password  

这里使用了明文密码,也可以使用加密后的密码:
Shell代码  收藏代码
  1. dovecotpw -s ssha  
  2. Enter new password: foo  
  3. Retype new password: foo  
  4. {SSHA}dZ9TYI7DTM+J558QUBRAIMd/WCOoFGeU  

在 /etc/dovecot/passwd
Passwd代码  收藏代码
  1. joe:{SSHA}dZ9TYI7DTM+J558QUBRAIMd/WCOoFGeU  


以上介绍了账号使用文件存储的方式,下面再介绍一下使用mysql数据库进行账号存储,只需要修改auth default区块:
Conf代码  收藏代码
  1. auth default {  
  2.   mechanisms = plain login  
  3.   passdb pam {  
  4.   }  
  5.   passdb sql {  
  6.     args = /etc/dovecot/dovecot-sql.conf  
  7.   }  
  8.   userdb passwd {  
  9.   }  
  10.   userdb sql {  
  11.     args = /etc/dovecot/dovecot-sql.conf  
  12.   }  
  13.   user = root  
  14.   socket listen {  
  15.     client {  
  16.       path = /var/spool/postfix/private/auth-client   
  17.       mode = 0660  
  18.       user = postfix  
  19.       group = postfix  
  20.     }  
  21.   }  
  22. }  

/etc/dovecot/dovecot-sql.conf
Dovecot代码  收藏代码
  1. driver = mysql  
  2. connect = host=/tmp/mysql.sock dbname=postfix user=postfix   
  3. password=mypassword  
  4. default_pass_scheme = MD5-CRYPT  # 如果使用postfixadmin管理,需要用这个加密方式  
  5. password_query = SELECT username as user, password from mailbox WHERE username = '%u'  
  6. user_query = SELECT maildir, 501 AS uid, 501 AS gid FROM mailbox WHERE username = '%u'  #这里uid和gid需要可以访问账号邮件存储目录  


就这么简单,配置完成了,下面我们来进行一下简单的测试:
telnet localhost 25
Telnet代码  收藏代码
  1. helo mail.xxx.net  
  2. 250 mail.xxx.net  
  3. >>> auth login  
  4. 334 VXNlcm5hbWU6  
  5. >>> dXNlcjFAZXhhbXBsZS5jb20=   (Base64后的用户名:user1@example.com)  
  6. 334 UGFzc3dvcmQ6  
  7. >>> Zm9vYmFy   (Base64后的密码:foobar)  
  8. 235 2.7.0 Authentication successful  

用plain的方式认证
telnet localhost 25
Telnet代码  收藏代码
  1. 220 mail.xxx.net ESMTP Postfix  
  2. >>> auth plain  
  3. 334   
  4. >>> AHVzZXIxQGV4YW1wbGUuY29tAGZvb2Jhcg==  (Base64后的用户名和密码:\0user1@example.com\0foobar)  
  5. 235 2.7.0 Authentication successful  

使用plain方式认证需要注意,用户名和密码需要一起进行编码,用\0作为分隔符。

Base64的方式有很多,最后我们再介绍一个使用Ruby进行编码的方法:
Shell代码  收藏代码
  1. inosin@mac:~ > ruby -rbase64 -e 'puts Base64.encode64("\0user1@example.com\0foobar")'  
  2. AHVzZXIxQGV4YW1wbGUuY29tAGZvb2Jhcg==  
  3.   
  4. inosin@mac:~ > ruby -rbase64 -e 'puts Base64.encode64("user1@example.com")'  
  5. dXNlcjFAZXhhbXBsZS5jb20=  
  6.   
  7. inosin@mac:~ > ruby -rbase64 -e 'puts Base64.encode64("foobar")'  
  8. Zm9vYmFy  

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多