dovecot MySQL配置_Dovecot配置笔记

dovecot MySQL配置_Dovecot配置笔记Dovecot 配置笔记 2018 09 13Dovecot 是一个开源的 为 Linux Unix like 系统提供 IMAP POP3 服务的软件 主要是为了安全产生的 不管大小应用 Dovecot 都是一个非常优秀的选择 它非常快 配置简单 不需要专业的管理员 而且它也非常节省内存 以上是来自 http www dovecot org 官方的介绍 下面我们来纪录记录一下它的安装 这里我使用了 CentOS

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 = 

}

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代码

:{PLAIN}user1″s password

:{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后的用户名:)

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后的用户名和密码:\\0foobar)

235 2.7.0 Authentication successful

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

Base64的方式有很多,最后我们再介绍一个使用Ruby进行编码的方法:

Shell代码

inosin@mac:~ > ruby -rbase64 -e “puts Base64.encode64(“\\0foobar”)”

AHVzZXIxQGV4YW1wbGUuY29tAGZvb2Jhcg==

inosin@mac:~ > ruby -rbase64 -e “puts Base64.encode64(“”)”

dXNlcjFAZXhhbXBsZS5jb20=

inosin@mac:~ > ruby -rbase64 -e “puts Base64.encode64(“foobar”)”

Zm9vYmFy

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/213629.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午5:56
下一篇 2026年3月18日 下午5:57


相关推荐

  • request 和require区别_合同翻译时如何区分使用request和require

    request 和require区别_合同翻译时如何区分使用request和require合同中,request和require都是“要求”的意思,不过request更偏重于“请求”,翻译英到中时遇到这两个词问题不大,翻译出它们的意思就可以,但是中译英时就要注意了,这是我今天要强调的重要区别,前者动作发出者通常为人,后者通常为物,下面通过例句说明:1requestAttherequestoftheBuyer,theSUPPLIERundertakestodeposi…

    2025年8月23日
    5
  • 在linux上安装pear

    在linux上安装pear

    2021年10月18日
    72
  • 小米手机1亿像素跟相机(2020相机新品)

    小米集团旗下品牌Redmi再度发布多款“性价比之王”手机新品。11月26日,小米发布RedmiNote9系列的Note9Pro、Note95G和Note94G三款手机新品,三款手机价格均位于“千元档”甚至低于千元,再度成为市场上同价位机型中的“性价比之王”。对此,小米集团副总裁、中国区总裁、Redmi品牌总经理卢伟冰重申,“Redmi的想法很简单,就是为用户做好产品,然后价格卖的尽量厚道,坚持高端产品大众化,大众产品品质化。”此次小米推出的Note9Pro沿袭了之前的Note8Pro在超清

    2022年4月10日
    46
  • 常见JVM面试题及答案整理[通俗易懂]

    常见JVM面试题及答案整理[通俗易懂]前言总结了JVM一些经典面试题,分享出我自己的解题思路,希望对大家有帮助,有哪里你觉得不正确的话,欢迎指出,后续有空会更新。1.什么情况下会发生栈内存溢出。思路:描述栈定义,再描述为什么会溢出,再说明一下相关配置参数,OK的话可以给面试官手写是一个栈溢出的demo。我的答案:栈是线程私有的,他的生命周期与线程相同,每个方法在执行的时候都会创建一个栈帧,用来存储局部变量表,操作…

    2022年6月9日
    31
  • Java封装动态编译

    Java封装动态编译java 实现字符串的动态编译

    2026年3月18日
    2
  • Ubuntu如何卸载软件_ubuntu卸载桌面

    Ubuntu如何卸载软件_ubuntu卸载桌面ubuntu卸载软件方法

    2022年10月5日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号