欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Ubuntu 16.04 布置postfix、dovecot邮件服务器

程序员文章站 2022-07-10 10:40:40
...

一、引言

        postfixWietse VenemaIBMGPL协议之下开发的MTA(邮件传输代理)软件,也就是我们常说的SMTP服务端。postfix是Wietse Venema想要为使用最广泛的sendmail提供替代品的一个尝试。它更快、更容易管理、更安全,同时还与sendmail保持足够的兼容性。Dovecot是一个开源的 IMAP POP3 邮件服务器,它支持多种认证方式,配置起来比较简单。使用postfix+dovecot的组合是一种很经典的邮件收发服务端解决方案。

         现代的邮件收发系统在收发邮件时一般都要求先进行验证,所谓验证就是核对用户名和密码是否正确,如下图所示的红色方框部分,就是要求我们在收发邮件时先要进行验证:

Ubuntu 16.04 布置postfix、dovecot邮件服务器

        postfix支持两种验证方式,一种是采用Dovecot的验证方式dovecot-sasl,另一种是利用cryus-sasl验证的方式,接下来我将分两篇文章分别介绍postfix设置这两种方式的方法。

二、安装和配置postfix

2.1 安装

        在终端中输入下面的命令,以安装postfix,

sudo apt-get install postfix

        在安装过程中会有界面弹出来,当显示如下所示的界面时,我们要选择Internet Site方式,然后一路确定即可。

Ubuntu 16.04 布置postfix、dovecot邮件服务器

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