沧歌


起风了,唯有努力生存


搭建 Postfix、Dovecot 邮件服务

个人站点建好后,如果希望它能在有消息的时候第一时间通知你,你需要一个邮件服务器。下面介绍一个邮件服务器的搭建过程。

说明:

  • 参考资料 腾讯云开发者实验室 https://www.qcloud.com/developer/labs/lab/10096
  • 实验使用的系统是centos 7.2,如果你使用的是其他版本,请自行替换修改系统服务的相关命令。 在centos 6中启动服务命令是service [服务] start,设置开机启动的命令是chkconfig [服务] on
  • 最近腾讯封了云主机SMTP邮件发送465端口 T_T , 所以不建议自己搭邮件服务器了。推荐用腾讯的域名邮箱,可以绑定到你的私人邮箱上。

1.准备域名

域名注册

如果你还没有域名,可以在腾讯云、阿里云上选购,或在淘宝上购买。

域名解析

域名购买完成后, 需要将域名解析到实验云主机上, 在腾讯云购买的域名,可以到控制台添加解析记录。 完成该实验共需要添加两条记录:

A 记录

记录类型:A
主机记录:@
记录值:你的主机IP

MX 记录

记录类型:A
主机记录:@
记录值:yourdomain.com(替换为自己域名)

生效检查

域名设置解析后需要过一段时间才会生效,通过 ping 命令检查域名是否生效 ,如:

ping yourdomain.com

如果 ping 命令返回的信息中含有你设置的解析的 IP 地址,说明解析成功。 (使用 ctrl + c 停止)

检查 MX 记录

替换下面命令中的 yourdomain.com 为您自己的注册的域名: nslookup -q=mx yourdomain.com 如果 nslookup 命令返回的信息中含有你设置的域名的记录值,说明解析成功。

2.实验之前

Postfix、Dovecot 简介

Postfix

Postfix 是一个标准的 MTA「Mail Transfer Agent」服务器,它负责通过 SMTP 协议管理发送到本机的邮件以及由本机发向外界的邮件。

Dovecot

Dovecot 是一个优秀的 IMAP/POP 服务器用以接收外界发送到本机的邮件。 Postfix、Dovecot 安装 在 CentOS 7 上,我们可以直接使用 yum 进行下载安装:

yum -y install postfix dovecot

3.Postfix

配置 Postfix

有关教程中配置参数的具体含义,请参照 Postfix 配置文档。

配置

在终端中输入以下命令以修改 Postfix 相关配置,请记得将 yourdomain.com 替换为你自己的域名:

postconf -e 'myhostname = server.yourdomain.com'
postconf -e 'mydestination = localhost, localhost.localdomain'
postconf -e 'myorigin = $mydomain'
postconf -e 'mynetworks = 127.0.0.0/8'
postconf -e 'inet_interfaces = all'
postconf -e 'inet_protocols = all'
postconf -e 'mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain'
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'

配置中 Postfix 使用 sasl 和 tls 来完成身份认证和传输信息加密。 试验中使用了 Dovecot 默认的 ssl 证书和私钥,如果你需要修改为自己的,请替换最后两行配置的路径。

配置 smtps

部分邮件客户端依赖于使用 465 端口提供加密连接,所以我们修改配置,允许 Postfix 使用 465 端口发送邮件。 打开 /etc/postfix/master.cf 文件,将如下两行前的 # 去除:

smtps inet n - n - - smtpd
-o smtpd_tls_wrappermode=yes

然后保存文件。

启动

使用以下命令,将 Postfix 设为自动启动并首次启动该服务:

systemctl enable postfix.service
systemctl start  postfix.service

Postfix 日志 Postfix 系统的日志文件在系统的这个目录下的 /var/log/maillog 文件,此文件记录了 Postfix 服务器的运行状态信息。

4.Dovecot

配置 Dovecot

修改 dovecot.conf

打开 /etc/dovecot/dovecot.conf 文件,在最下方加入以下配置:

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

如果前面你修改为了自己的 ssl 证书和私钥,请替换开始两行配置的路径。 然后保存文件。

修改 10-master.conf

打开 /etc/dovecot/conf.d/10-master.conf 文件,在最下方加入以下配置: 找到 service auth 部分,将以下行前面的 # 去除:

unix_listener /var/spool/postfix/private/auth {  
       mode = 0666  
}

然后保存文件。

启动 Dovecot

使用以下命令,将 Dovecot 设为自动启动并首次启动该服务:

systemctl enable dovecot.service
systemctl start  dovecot.service

查看 /var/log/maillog 文件,查看服务是否成功启动。 如成功启动,日志里应包含如下信息:

Jun 26 12:00:28 localhost postfix/postfix-script[28338]: starting the Postfix mail system
Jun 26 12:00:29 localhost postfix/master[28340]: daemon started -- version 2.10.1, configuration /etc/postfix
Jun 26 12:28:40 localhost dovecot: master: Dovecot v2.2.10 starting up for imap, pop3, lmtp (core dumps disabled)

5.创建账户

添加用户 在终端中使用 useradd 命令添加用户:

useradd test

使用 passwd 命令设置对应用户密码:

passwd test

6.测试

如测试中遇到异常,请查看 maillog 日志文件中的错误信息。

服务器端发送测试

使用 su 命令切换用户:

    su test

我们可以使用 mail 命令发送邮件,将 xxxx@xxx.com 替换为你的其他邮箱。

    echo "Mail Content" | mail -s "Mail Subject" xxxx@xxx.com

然后可以前往你的接收方邮箱查收。

邮件客户端

你可以将该邮箱账户添加至邮件客户端使用,推荐使用 Foxmail 客户端。 可以参考以下配置进行设置:

    服务器类型:`POP3`
    邮箱账户:  `test@yourdomain.com`

    收件(POP3)服务器:  `yourdomain.com`
    端口:              `995`
    安全连接(SSL):     `是`
    用户名:            `test`
    密码:              `test用户密码`

    发件(SMTP)服务器:  `yourdomain.com`
    端口:              `465`
    安全连接(SSL):     `是`
    用户名:            `test`
    密码:              `test用户密码`

然后就可以使用邮件客户端通过该账户收发邮件了。 (该配置在某些邮件客户端下可能因为使用了通用证书而出现使用异常)

最近的文章

Git使用笔记

我的CSDN博客是https://blog.csdn.net/daodao0/,但我感觉在CSDN上写限制很多,广告也很多,不甚满意。所以github pages博客建立后,就渐渐不在CSDN上写了。一些我觉得有价值的博文我也搬运到了这里。这篇是其中一篇。———————— 分割线 —————————要说如何学习使用Git,我自然推荐廖雪峰的git教程。还有一份Git命令备忘清单也值得参考。这...…

git, coding, linux继续阅读
更早的文章

域名注册解析与SSL证书

自己建站了之后,就有了https加密的需求。虽然说你的博客内容没什么好加密的,但你进入控制台的时候最好还是使用https加密。这里使用了我从vps提供商那里申请的ssl证书。说明: 参考资料 腾讯云开发者实验室 https://www.qcloud.com/developer/labs/ 实验使用的系统是centos 7.2,如果你使用的是其他版本,请自行替换修改系统服务的相关命令。在c...…

linux ssl继续阅读