首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

Dovecot配备笔记

2012-07-02 
Dovecot配置笔记Dovecot是一个开源的,为Linux/Unix-like系统提供IMAP,POP3服务的软件。主要是为了安全产生

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

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

下面我们来纪录记录一下它的安装:
这里我使用了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 = 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 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 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 = 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需要可以访问帐号邮件存储目录


就这么简单,配置完成了,下面我们来进行一下简单的测试:
telnet localhost 25
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

热点排行