MENU

使用Postfix&Dovecot搭建邮件服务器

2017 年 10 月 10 日 • 应用服务器

emmmm,其实本篇文章的实用性并不是很高,自己搭起来玩玩和做测试是一个很不错的选择,本篇文章只是搭建出最简单的邮件服务器,可以通过服务器去进行收发邮件,一些更强大的功能现在还没开始琢磨,这算是个开始吧,先介绍一下Postfix&Dovecot吧,Postfix 是一个标准的 MTA「Mail Transfer Agent」服务器,它负责通过 SMTP 协议管理发送到本机的邮件以及由本机发向外界的邮件。Dovecot 是一个优秀的 IMAP/POP 服务器用以接收外界发送到本机的邮件。说白了就是一收一发,环境,我用的Centos 7.3,像是Centos6.*系列应该也阔以吧,开撸。

域名解析阶段

要玩这个,你要有个域名,有一台有外网IP的服务器,说来也巧,前段时间在京东云搞到了一个服务器,两块钱俩月试用,这么好的资源不能浪费,拿起来用吧,先是域名解析的配置,也就是添加一个A记录及MX记录,我是用的域名仍是rj-bai.com,我添加的解析信息如下。

20171010164032.png

A 记录

记录类型:A

主机记录:@

记录值:116.196.96.201

记录值写你自己的服务器IP即可,不要照搬,谢谢。

MX 记录

记录类型:MX

主机记录:@

记录值:rj-bai.com

smtp&pop3

这个选填,直接用rj-bai.com时刻阔以的,我顺便也填了,添加A记录即可。添加完解析ping一下或是使用nslookup验证一下。

20171011132555.png

安装及配置阶段

安装postfix&Dovecot

先把主机名改了,改成和域名一样,我用的是rj-bai.com,所以我的主机名是rj-bai,我刚做时候没改,被坑了,不要外网访问的就不用改了,不要在意下面的图片,我主机名是后改的,不想重新截取了,就这样吧。

[root@jdu4e00u53f7 ~]# hostname rj-bai
[root@jdu4e00u53f7 ~]# hostnamectl set-hostname rj-bai
直接用yum进行安装即可,一条命令。
[root@rj-bai ~]# yum -y install postfix dovecot

20171011132801.png

配置postfix

在直接在命令行贴进去即可,将rj-bai.com改为自己的域名即可。

postconf -e 'myhostname = rj-bai.com'
postconf -e 'mydestination = rj-bai.com'
postconf -e 'myorigin = rj-bai.com'
postconf -e 'mynetworks = 127.0.0.1'
postconf -e 'inet_interfaces = all'
postconf -e 'inet_protocols = all'
postconf -e 'mydestination = rj-bai.com'
postconf -e 'home_mailbox = Maildir/'
postconf -e 'smtpd_sasl_type = dovecot'
postconf -e 'smtpd_sasl_path = private/auth'
postconf -e 'smtpd_sasl_auth_enable = yes'
postconf -e 'broken_sasl_auth_clients = yes'
postconf -e 'smtpd_sasl_authenticated_header = yes'
postconf -e 'smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination'
postconf -e 'smtpd_use_tls = yes'
postconf -e 'smtpd_tls_cert_file = /etc/pki/dovecot/certs/dovecot.pem'
postconf -e 'smtpd_tls_key_file = /etc/pki/dovecot/private/dovecot.pem'

这些命令改的文件是/etc/postfix/main.cf,注释我就不加了,以免复制后粘贴麻烦,哈哈,也可以去直接编辑这个文件,这些参数的具体含义请参考官方的配置文档,在刚刚的配置中Postfix使用sasl和tls来完成身份认证和传输信息加密,使用了Dovecot默认的ssl证书和私钥,如果你需要修改为自己的,请替换最后两行配置的路径。

配置smtps

正常来说邮件客户端都依赖使用465端口提供加密连接,所以要修改postfix的配置文件,允许Postfix使用465端口发送邮件。

[root@rj-bai ~]# vim /etc/postfix/master.cf 
smtps     inet  n       -       n       -       -       smtpd  //去掉注释
 -o smtpd_tls_wrappermode=yes                                  //去掉注释

第26行及28行注释去掉,注意-o前面要留一个空格,否则会有问题。

20171011134121.png

启动服务
[root@rj-bai ~]# ln -s /usr/local/lib/sasl2 /usr/lib/sasl2 //链接认证文件
[root@rj-bai ~]# systemctl enable postfix.service
Created symlink from /etc/systemd/system/multi-user.target.wants/postfix.service to /usr/lib/systemd/system/postfix.service.
[root@rj-bai ~]# systemctl start postfix.service
[root@rj-bai ~]# ss -lntp

20171011134311.png

如果开了防火墙庆开放端口,不多BB了,可以看一下postfix的日志,位置/var/log/maillog,该日志记录了Postfix服务器的运行状态信息。

配置Dovecot

编辑dovecot.conf,在最后添加以下配置

[root@rj-bai ~]# vim /etc/dovecot/dovecot.conf
ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
ssl_key = </etc/pki/dovecot/private/dovecot.pem

protocols = imap pop3 lmtp
listen = *
mail_location = Maildir:~/Maildir
disable_plaintext_auth = no

还是,如果你用的不是你自己默认的证书,前两行依旧要换。

修改10-master.conf

[root@rj-bai ~]# vim /etc/dovecot/conf.d/10-master.conf
unix_listener /var/spool/postfix/private/auth {
  mode = 0666
}

将上面的内容去掉注释,在配置文件96行的位置,最后启动服务。

[root@rj-bai ~]# systemctl enable dovecot.service
Created symlink from /etc/systemd/system/multi-user.target.wants/dovecot.service to /usr/lib/systemd/system/dovecot.service.
[root@rj-bai ~]# systemctl start dovecot.service

看log,启动成功会有类似这种log输出出来。

Oct 11 14:55:17 rj-bai postfix/postfix-script[29826]: starting the Postfix mail system

Oct 11 14:55:17 rj-bai postfix/master[29828]: daemon started -- version 2.10.1, configuration /etc/postfix

Oct 11 14:55:28 rj-bai dovecot: master: Dovecot v2.2.10 starting up for imap, pop3, lmtp (core dumps disabled)

最后修改hosts文件,将解析添加进去。

[root@rj-bai ~]# echo "127.0.0.1   rj-bai rj-bai.com" >> /etc/hosts
[root@rj-bai ~]# cat /etc/hosts | tail -n1
127.0.0.1   rj-bai rj-bai.com

测试阶段

1.先添加系统用户,然后设置一个密码。
[root@rj-bai ~]# useradd dalin
[root@rj-bai ~]# passwd dalin
2.切换到dalin用户,进行发件测试
[root@rj-bai ~]# su - dalin
[dalin@rj-bai ~]$ echo "这是一封测试邮件了撒" | mail -s "测试邮件" onlydalin@vip.qq.com

看log,会有以下信息输出出来,并且邮件也会收取到。

20171011153956.png

因为现在没有web界面,只能用foxmail等邮件客户端了,配置也很简单,具体操作如下,我用的foxmail,其他的都一样,邮件账号就是你刚刚添加的那个用户,密码就是passwd设置的密码,域名换成自己的,然后创建即可。

20171011154627.png

使用foxmail进行收发邮件

发了一下,看效果

20171011155522.png再用QQ邮箱回复一下。

20171011160024.png

20171011160218.png

阔以用哎,经过测试,发送附件以及抄送均正常,这个自己玩玩就行了,如果要搭建正式的邮件服务器,我以前用过emos,用着也还不错,有兴趣的阔以百度看一下,顺便提一下用户收到的邮件存的位置已经在配置文件中指定了,就是在用户家目录下的Maildir文件夹,不要删,否则后果很严重的撒,暂时就到这里吧,有兴趣的可以玩玩。

最后编辑于: 2018 年 12 月 10 日
返回文章列表 文章二维码 打赏
本页链接的二维码
打赏二维码