Ubuntu 16.04 布置postfix、dovecot邮件服务器
一、引言
postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件,也就是我们常说的SMTP服务端。postfix是Wietse Venema想要为使用最广泛的sendmail提供替代品的一个尝试。它更快、更容易管理、更安全,同时还与sendmail保持足够的兼容性。而Dovecot是一个开源的 IMAP和 POP3 邮件服务器,它支持多种认证方式,配置起来比较简单。使用postfix+dovecot的组合是一种很经典的邮件收发服务端解决方案。
现代的邮件收发系统在收发邮件时一般都要求先进行验证,所谓验证就是核对用户名和密码是否正确,如下图所示的红色方框部分,就是要求我们在收发邮件时先要进行验证:
postfix支持两种验证方式,一种是采用Dovecot的验证方式dovecot-sasl,另一种是利用cryus-sasl验证的方式,接下来我将分两篇文章分别介绍postfix设置这两种方式的方法。
二、安装和配置postfix
2.1 安装
在终端中输入下面的命令,以安装postfix,
sudo apt-get install postfix
在安装过程中会有界面弹出来,当显示如下所示的界面时,我们要选择Internet Site方式,然后一路确定即可。
2.2 配置
打开/etc/postfix/main.cf文件,按照如下进行配置,其中大部分配置只是采用了postfix安装时的默认配置,对于一些特殊配置请参照下面的注释,其中需要配置服务器域名,假设当前的域名为example.cn:
myhostname = localhost
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
#下面这段配置中要将自己的域名加入到里面,如下加入了example.cn
mydestination = $myhostname, example.cn,localhost, localhost.localdomain, localhost
relayhost =
#加入公网的网络地址,如我的服务器公网地址是119.xxx.xxx.xxx,就在下面加入了
119.0.0.0/8这个网络地址
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104[::1]/128,119.0.0.0/8
#邮箱最大的容量,单位是字节
mailbox_size_limit = 2000000000
recipient_delimiter = +
#监听的端口设置,如果要连互联网这里一定设置成all
inet_interfaces = all
#支持的协议类型,设置成all
inet_protocols = all
#设置的邮箱目录名称,postfix采用dovecot-auth认证的话,默认系统中的用户就是邮箱的用户,当设置成如下的邮箱目录时,会在每个用户的主目录下创建一个Maildir目录用来存放邮件。
home_mailbox = Maildir/
#设置每封邮件最大的体积
message_size_limit = 20000000
#设置是否进行认证,选yes
smtpd_sasl_auth_enable = yes
#设置认证失败断开客户端
broken_sasl_auth_clients = yes
#设置认证所在的域名
smtpd_sasl_local_domain = $myhostname
#设置认证方式,这里很重要,因为要使用dovecot-auth,所以这里要填dovecot
smtpd_sasl_type = dovecot
#设置认证文件的查询路径,默认情况下Postfix的认证文件会放到/var/spool/postfix/private/auth,按照如下设置即可
queue_directory = /var/spool/postfix
smtpd_sasl_path =private/auth
#设置未认证用户不可发邮件
smtpd_sasl_security_options = noanonymous
#设置拒绝认证的黑名单,在postfix2.02之前的版本,该配置名称叫做smtpd_recipient_restrictions
smtpd_relay_restrictions=permit_mynetworks,
permit_sasl_authenticated,
reject_invalid_hostname,
reject_unauth_destination
#下面是设置对tls的支持,在安装完之后ssl-cert-snakeoil.pem和ssl-cert-snakeoil.key这两个文件是不存在的,需要我们手动生成,稍后介绍生成方法
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database =btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database =btree:${data_directory}/smtp_scache
三、安装和配置dovecot
3.1 安装
在终端输入以下命令进行安装:
sudo apt-get install dovecot-common dovecot-imapd dovecot-pop3d
3.2 配置
找到/etc/dovecot/dovecot.conf配置文件,我们对dovecot的所有修改基本上都在这个文件之中进行:
#这里配置邮件的存放目录,这里和Postfix设置的要一致,都是在用户主目录下的Maildir目录下。
mail_location = maildir:~/Maildir
#监听所有的端口
listen= *
#允许明文密码验证
disable_plaintext_auth = no
#使用ssl加密
ssl = required
#ssl秘钥存放路径,目前这两个文件也是不存在的,也需要按照后面的步骤我们手动生成
ssl_cert =< /etc/ssl/certs/dovecot.pem
ssl_key =< /etc/ssl/private/dovecot.key
#设置认证的默认选项,auth是一个socket文件,通过该文件dovecot和postfix进行通信,来传递postfix的认证信息,这里面的path要和postfix设置的一致。
auth default {
socket listen {
client {
path =/var/spool/postfix/private/auth
mode = 0660
user = postfix
group = postfix
}
}
}
完成了上述设置,邮件服务端基本上就布置成功了,但是现在还是不能利用foxmail等客户端发送邮件,因为我们还有几个问题要修改
3.3 生成postfix的tsl秘钥和dovecot的ssl秘钥
接下来我们需要利用dovecot安装包中的脚本上次上述两种秘钥。目前存放秘钥的目录/etc/ssl/certs/和/etc/ssl/ private/也是不存在的,所以需要我们先创建上述两个目录:
mkdir –p /etc/ssl/certs/
mkdir –p /etc/ssl/private /
创建好上述的目录之后我们将利用dovecot中的脚本文件,生成ssl-cert-snakeoil.pem、ssl-cert-snakeoil.key、dovecot.pem和dovecot.key这四个文件。因为我们用apt-getinstall安装的dovecot,所以我们先要进入/ var/cache/apt/archives/这个目录下。我们用apt-getinstall 安装的所有程序的安装包都在这个目录下,找到dovecot-core***.deb安装包(后面版本号什么的省略),把它拷贝到主目录下,然后用下面的命令进行解压:
dpkg –X dovecot-core***.deb dovecot/
解压之后,在当前目录找到dovecot/usr/share/dovecot/ mkcert.sh,然后执行下面的命令(一定要cd到该文件所在目录去执行,否则出错):
sh mkcert.sh
此时会在/etc/ssl/certs/目录和/etc/ssl/private/目录下生成ssl-cert-snakeoil.pem和ssl-cert-snakeoil.key两个文件,这就是我们需要的postfix的tls秘钥,我们需要的dovecot秘钥只需将上述两个文件各拷贝一份副本即可:
cp ssl-cert-snakeoil.pem dovecot.pem
cp ssl-cert-snakeoil.key dovecot.key
这就完成相关秘钥的生成。
3.4 解决doveconf -n >dovecot-new.conf 等警告信息
在完成上述布置之后,如果重启dovecot:
service dovecotrestart
在/var/log/mail.log文件中我们会发现很多类似“Warning:doveconf-n > dovecot-new.conf”的警告信息,是因为doveconf要求我们生成新格式的配置文件,此时执行下面的命令:
doveconf -n > dovecot-new.conf
会在当前目录下生成dovecot-new.conf文件,然后用该文件替换/var/dovecot/dovecot.conf文件。接下来重启postfix和dovecot:
service postfixrestart
service dovecotrestart
经过了上述的步骤,已经完成了postfix和dovecot的配置,但是想要使用邮件客户端,我们还有在域名提供商那里进行域名相关的设置。
3.5 设置邮件服务器的域名解析
在域名服务提供商那里设置域名解析,我的 example.cn设置了5个域名解析:
第一个是:记录类型A, 主机记录mail, 指向服务器的IP地址
第二个是:记录类型MX,主机记录@,指向example.cn
第三个是:记录类型A,主机记录 www,指向服务器的IP地址
第四个是:记录类型CNAME,主机记录pop.example.cn.,指向 mai.example.cn
第四个是:记录类型CNAME,主机记录smtp.example.cn.,指向 mai.example.cn
参考文章:
http://blog.csdn.net/basicthinker/article/details/6167606#comments
上一篇: 将项目部署到阿里云服务器ECS总结