MENU

基于宝塔部署邮箱服务器

• November 17, 2020 • Read: 1025 • 主机

前言

为了扩大bitwardenrs的使用范围,想要开启其中的SMTP功能,这就需要使用邮箱服务。虽然大多数电子邮箱服务商都提供现成的SMTP功能,但一方面为了充分利用已有的资源,另一方面,bitwardenrs作为self-host服务,邀请别人注册时却使用QQ邮箱、163邮箱就会显得很怪异,因此,最后还是决定建立自己的邮箱服务器,而且以后也可以用在其他地方,何乐而不为呢?

过程

准备工作:域名、一台开放25端口的服务器、宝塔面板。
其中第二个条件很重要,因为很多服务器提供商都把25端口封了,据我说知,国内的大厂基本都封了,以前还可以发工单解封,现在发工单也没用。具体的端口开放测试可以用下述命令,当然,测试前最好去面板先放行25端口:

telnet smtp.aol.com 25

如果看到类似下面的信息,则说明端口是开放的:

Trying 188.125.73.29...
Connected to smtp.aol.g03.yahoodns.net.
Escape character is '^]'.
220 smtp.mail.yahoo.com ESMTP ready

如果提示超时,则说明端口被封,如果找不到解封的办法,这篇文章可以不用看了:

Trying 188.125.73.29...
telnet: Unable to connect to remote host: Connection timed out

1.安装宝塔邮局管理器

去宝塔的软件商店安装邮局管理器
mail1.png

2.设置SMTP服务器地址

去自己域名的DNS服务商那里为SMTP服务器地址添加A记录,通常邮箱服务器我们设置主机记录的值为mail,记录值填写服务器的IP地址。
mail2.png

3.邮局管理器域名设置

打开宝塔面板中的邮局管理器设置,依次点击域名列表--->添加域名,在邮箱域名一栏填写自己的顶级域名mydomain.com,在A记录一栏填写之前设置的SMTP服务器地址mail.mydomain.com
mail3.png

4.添加邮局DNS解析

上一步添加完后,会弹出如下界面:
mail4.png

点击右侧的添加记录值,会出现如下界面:
mail5.png

根据上述提示去DNS服务商那里添加相应的四条DNS解析:一条MX记录和三条TXT记录。设置好并且等DNS解析生效后,点击下方的“已设置,验证域名解析”

5.启动邮局服务

上述设置完成后,域名列表项会出现下述情况:
mail6.png

如果设置正确就应该像第二条一样全是绿色,如果设置错误就会像第一条一样出现红色错误项,这时应该仔细检查相应的DNS解析项是否设置错误。如果有,就去改正过来直至全为绿色。
之后点击服务状态选项卡,如果如下图全为绿色已启动说明已经成功了:
mail7.png

但我设置完后Postfix一直启动失败,这时候去查看日志,通常是权限的问题,参见这篇文章,但我遇到的情况比文章里说的更复杂,日志里有些文件目录是要求root用户:

warning: not owned by root: /var/spool/postfix/lib/x86_64-linux-gnu/libresolv.so.2
warning: not owned by root: /var/spool/postfix/lib/x86_64-linux-gnu/libnss_compat.so.2
warning: not owned by root: /var/spool/postfix/lib/x86_64-linux-gnu/libnss_hesiod.so.2
warning: not owned by root: /var/spool/postfix/usr/lib/sasl2

这样的错误信息非常多,我只取了其中三条,因此我是参见那篇文章执行了

chown -R root /var/spool/postfix/
chown -R root /var/lib/postfix/

不过问题还是没有彻底解决,我又参考这篇文章执行了

chmod 755 -R /var/spool/postfix

可postfix还是不能成功启动,输出了如下的错误信息:

postfix/postfix-script: warning: not owned by postfix: /var/spool/postfix/incoming
postfix/postfix-script: warning: not owned by postfix: /var/spool/postfix/private
postfix/postfix-script: warning: not owned by postfix: /var/spool/postfix/public
postfix/postfix-script: warning: not owned by postfix: /var/spool/postfix/saved
postfix/postfix-script: warning: not owned by postfix: /var/spool/postfix/trace
postfix/postfix-script: warning: not owned by postfix: /var/spool/postfix/maildrop

因此我分别将上述目录赋予postfix:

chown -R postfix /var/spool/postfix/incoming
chown -R postfix /var/spool/postfix/private
chown -R postfix /var/spool/postfix/public
chown -R postfix /var/spool/postfix/saved
chown -R postfix /var/spool/postfix/trace
chown -R postfix /var/spool/postfix/maildrop

但还是出现了下面的错误信息:

postfix/postfix-script: starting the Postfix mail system
postfix/postfix-script: fatal: mail system startup failed

然后使用lsof -i:25查看25端口占用,将相应的进程kill掉,最后postfix终于是成功启动了。

6.邮件测试

域名列表项选择用户管理,添加一个邮箱用户,为其设置用户名、密码、邮箱容量。然后去发送邮件选项卡里发送一封测试邮件,如果收件人能收到邮件,就说明部署成功了。
在这里说明一下,如果用QQ邮箱作为收件人测试,最好先去QQ邮箱设置域名白名单,将邮箱域名添加进白名单,我一开始怎么测试QQ邮箱都收不到测试邮件,但gmail却可以,最后设置了域名白名单才终于收到了。

使用

虽然在宝塔面板的邮局管理器可以发信、收信,但这样只能自己用,也很不方便,因此在实际使用的时候我们只是借助这个部署的SMTP、POP3、IMAP服务,具体的客户端可以使用其他支持这些协议的APP,比如邮箱大师、Foxmail,其实大多数邮箱APP都支持的说。而需要的服务器信息在用户管理页面都可以找到:
mail8.png

Last Modified: December 9, 2020