Centos6.4 配置postfix+dovecot+mysql
使用Linux用户验证和收发邮件
需要组件 postfix
dovecot
roundcube
postfix
用来收发邮件, 作为SMTP服务器, 监听25端口dovecot
用作为POP3, IMAP服务器, 监听 POP3的110, IMAP的143端口, 用来和邮件客户端(如Foxmail,roundcube等)通讯, 管理邮件roundcube
作为客户端, 登录时通过IMAP来认证用户
postfix 配置
/etc/postfix/main.cf
:
myhostname
mydomain
#指定发送邮件时地址 [email protected] 中的domain.com, 如果使用mail命令发送邮件,需要设置该参数否则不能发送
myorigin
#可接受转发邮件的类型
mynetworks_style
#mynetworks和relay_domains配合使用, 用来代替mynetworks_style
#可接受转发的来源IP
mynetworks
#可接受转发的域名
relay_domains
#邮件保存格式, 使用Maildir格式
home_mailbox=Maildir/
以上配置完后就可以用postifx收发邮件了, 也可以通过客户端设置SMTP来让postfix发送邮件,但是客户端无法管理邮件,因为postfix没有提供POP3或IMAP来和客户端互动, 要想让客户端能管理和查看邮件需要配置dovecot来提供POP3或IMAP服务
dovecot 配置
配置 /etc/dovecot/dovecot.conf
:
#开启的协议
protocols= imap pop3 lmtp
配置 /etc/dovecot/conf.d/10-auth.conf
:
disable_plaintext_auth=no
auth_mechanisms = plain login
#使用Linux用户来验证
!include auth-system.conf.ext
配置 /etc/dovecot/conf.d/10-mail.conf
:
#邮件所在目录
mail_location = maildir:~/Maildir
配置 /etc/dovecot/conf.d/10-master.conf
:
service auth {
# Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
}
配置postfix, 让其使用dovecot来做sasl认证:
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = ''
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks, reject_unauth_ destination
broken_sasl_auth_clients = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
使用mysql来存放验证用户,接受域名等信息
因为前面使用的是Linux用户,所以每次收发邮件可以直接使用Linux用户来操作,但是如果要使用mysql来存放用户和验证,我们就需要一个Linux用户来进行收发的操作,因此我们可以建立一个Linux用户来代理操作
$ useradd -g vmail -d /home/vmail
之后为了让postfix和dovecot能够使用mysql特性,需要安装 dovecot-mysql
, centos 6.4的postfix好像带了mysql功能
配置dovecot,让其通过mysql的数据来认证用户:
/etc/dovecot/conf.d/10-auth.conf
:
#注释掉这行
#!include auth-system.conf.ext
#打开这行
!include auth-sql.conf.ext
/etc/dovecot/conf.d/10-mail.conf
:
mail_location = maildir:/home/vmail/%d/%n/Maildir
/etc/dovecot/10-master.conf
:
service auth{
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
unix_listener auth-userdb {
mode = 0600
user = vmail
#group =
}
}
/etc/dovecot/auth-sql.conf.ext
:
passdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
driver = static
args = uid=vmail gid=vmail home=/home/vmail/%d/%n
}
postfix通过mysql验证用户
配置 /etc/postfix/main.cf
:
#告诉Postfix去MySQL数据库种寻找域名、用户帐号密码及邮件别名等信息
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf
postfix使用dovecot的LMTP来存放邮件
设置postfix将接受到的邮件转给dovecot存放到对应目录
配置 /etc/postfix/main.cf
:
#将mydestination的值修改为'',以便Postfix能够通过MySQL表中相关数据决定需要接受/发送邮件的域名,这样更具有通用性
mydestination =''
#以便告诉Postfix不要使用LDA「Local Delivery Agent」转而使用Dovecot的LMTP完成本地邮件投递
virtual_transport = lmtp:unix:private/dovecot-lmtp
配置 /etc/dovecot/conf.d/10-master.conf
:
service lmtp {
unix_listener /var/spool/postfix/private/dovecot-lmtp {
mode = 0600
user = postfix
group = postfix
}
}
配置 /etc/dovecot/conf.d/20-lmtp.conf
, 作用是使用postmaster_address地址将接收到的邮件转发给对应的本地用户:
protocol lmtp {
postmaster_address = postmaster@yourdomain
}
参考:
postfix参数说明: http://linux.vbird.org/linux_server/0390postfix.php
postfix 和 dovecot 关系 :http://www.cnblogs.com/maxmys/p/3327239.html
https://wiki.centos.org/zh/HowTos/postfix
http://343614597.blog.51cto.com/7056394/1689705
参考:https://support.rackspace.com/how-to/dovecot-installation-and-configuration-on-centos/
postfix+dovecot+mysql : http://www.open-open.com/lib/view/open1431592348122.html
mysql SHA512-CRYPT 加密 : http://stackoverflow.com/a/24186434/7514395
真棒!