当前位置: 首页 > 工具软件 > Dovecot > 使用案例 >

dovecot MySQL配置_Dovecot配置笔记

柴瀚昂
2023-12-01

Dovecot配置笔记

2018-09-13

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

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

下面我们来纪录记录一下它的安装:

这里我使用了CentOS系统自带的yum进行安装,安装非常简单,只需要一个包:dovecot

# yum install dovecot

就一切都搞定了

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

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,可以使用明码或者是编码后的密码:

Passwd代码

user1@example.com:{PLAIN}user1"s password

user2@example.com:{PLAIN}user2"s password

这里使用了明文密码,也可以使用加密后的密码:

Shell代码

dovecotpw -s ssha

Enter new password: foo

Retype new password: foo

{SSHA}dZ9TYI7DTM+J558QUBRAIMd/WCOoFGeU

在 /etc/dovecot/passwd

Passwd代码

joe:{SSHA}dZ9TYI7DTM+J558QUBRAIMd/WCOoFGeU

以上介绍了帐号使用文件存储的方式,下面再介绍一下使用mysql数据库进行帐号存储,只需要修改auth default区块:

Conf代码

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

Dovecot代码

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

Telnet代码

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

Telnet代码

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进行编码的方法:

Shell代码

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

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。

http://www.pinlue.com/style/images/nopic.gif

 类似资料: