Dovecot是一个开源的,为Linux/Unix-like系统提供IMAP,POP3服务的软件。主要是为了安全产生的,不管大小应用,Dovecot都是一个非常优秀的选择。它非常快,配置简单,不需要专业的管理员,而且它也非常节省内存。
以上是来自http://www./官方的介绍。
下面我们来纪录记录一下它的安装:
这里我使用了CentOS系统自带的yum进行安装,安装非常简单,只需要一个包:dovecot
# yum install dovecot
就一切都搞定了
它的主要配置文件也只有一个,位于 /etc/dovecot.conf
- base_dir = /var/run/dovecot/ # dovecot运行目录
- protocols = pop3 pop3s # 使用协议
- listen = * # 监听连接进来的ip地址,* => 所有的IPV4,[::] => 所有的IPV6
- disable_plaintext_auth = no
- log_path = /var/log/dovecot.log #日志文件位置
- info_log_path = /var/log/dovecot-info.log # debug信息
- log_timestamp = "%Y-%m-%d %H:%M:%S "
- ssl_disable = yes
- mail_location = maildir:/var/vmail/%u #用户的邮件目录位置,这里使用maildir方式存储
- mail_privileged_group = mail
- protocol 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 = root
- socket listen {
- client {
- path = /var/spool/postfix/private/auth-client #postfix需要连接到这个sock进行认证
- mode = 0660
- user = postfix
- group = postfix
- }
- }
- }
- dict {
- }
- plugin {
- }
/etc/dovecot/passwd,可以使用明码或者是编码后的密码:
- user1@example.com:{PLAIN}user1's password
- user2@example.com:{PLAIN}user2's password
这里使用了明文密码,也可以使用加密后的密码:
- dovecotpw -s ssha
- Enter new password: foo
- Retype new password: foo
- {SSHA}dZ9TYI7DTM+J558QUBRAIMd/WCOoFGeU
在 /etc/dovecot/passwd
- joe:{SSHA}dZ9TYI7DTM+J558QUBRAIMd/WCOoFGeU
以上介绍了账号使用文件存储的方式,下面再介绍一下使用mysql数据库进行账号存储,只需要修改auth default区块:
- auth default {
- mechanisms = plain login
- passdb pam {
- }
- passdb sql {
- args = /etc/dovecot/dovecot-sql.conf
- }
- userdb passwd {
- }
- userdb sql {
- args = /etc/dovecot/dovecot-sql.conf
- }
- user = root
- socket listen {
- client {
- path = /var/spool/postfix/private/auth-client
- mode = 0660
- user = postfix
- group = postfix
- }
- }
- }
/etc/dovecot/dovecot-sql.conf
- driver = mysql
- connect = host=/tmp/mysql.sock dbname=postfix user=postfix
- password=mypassword
- default_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需要可以访问账号邮件存储目录
就这么简单,配置完成了,下面我们来进行一下简单的测试:
telnet localhost 25
- helo mail.xxx.net
- 250 mail.xxx.net
- >>> auth login
- 334 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 plain
- 334
- >>> 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
|