
记录:使用轻量级邮局pmail搭建个人邮箱
一直以来,都在考虑要一个自己域名的邮局,不过如果只是从邮箱网站上解析自己的域名还不够折腾。在开源项目里看见了Pmail这个轻量化开源邮局,遂一时兴起,玩了玩这个项目。虽说界面过于精简,不过对于一个轻量的vps来说,还是挺够用的。
一.项目介绍
Pmail是一个部署简单,轻量化的个人邮箱服务端。根据作者在Github上的”readme”文件,本服务端可以在CPU为1核,512MB运行内存的vps上正常工作。不会是从微软Azure云白嫖的吧?
相比其他的邮箱软件,Pmail较为简单,当然也会有功能缺失。比如对ThunderMail的imap支持就不好。但是体积15MB,运存占用10+MB的邮局还要什么自行车
项目地址:(https://github.com/Jinnrry/PMail)
二.部署前的准备
1.一个拥有固定公网IP的服务器,要求开放25端口
腾讯云,阿里云等大厂锁25端口,因此请向客服提交工单申请。一些厂家有概率不能通过。
2.一个域名。
建议使用.com,.cn,.net等著名的一级域名与.com.cn类型的二级域名。不要使用.tk之类的免费域名与二级域名。
3.一个Nginx代理服务端。
我使用的是1Panel+OpenResky。你也可以使用nginx proxy manager,但是要保证监听80与443端口
4.Docker容器(非必须,不使用Docker的前提是只在本服务器上运行Pmail)
注意:如果服务器设置于中国大陆,那么邮箱需要备案,且安装Docker时需选择内地镜像源以提速。
三.部署安装
注:本方案下,80与443端口由Nginx占用,故映射Pmail的80与443端口到其他端口。这里以8680映射80,8643映射443。你可以自行选择端口来映射。
SSL证书交由1Panel自带的证书签发工具完成。
本安装方式参考官方通过Docker的部署方法,并做出一些修改。
1.下载
在你希望安装Pmail的文件夹中使用Docker运行docker pull ghcr.io/jinnrry/pmail:latest
也可以前往项目地址下载对应版本。
2.安装
我们这里选择使用Docker安装。下方的指令中的8680与8643可改为自己选择的端口。
1 |
|
如果你服务器开启了防火墙,你需要打开25、80、110、443、465、995、993与你选择的端口
3.反向代理与证书设置
看到这里,有人会问,为什么先设置这个?因为后面要手动配置SSL证书(我们使用了非80/443端口),先一步设置好SSL可以更好的完成配置。
这里以1Panel的网站管理功能为例,这个功能依赖于OpenResky。
首先,在“网站-网站”功能中选择创建,选择反向代理。
然后按上面邮箱的配置填写信息。
之后点击“网站-证书”,申请免费证书。如果你有证书,签发好后上传即可。
这里先创建一个Acme账户,填写你的邮箱,类型随意选,推荐Let’s Encrypt。
随后登录你的DNS账号,这个请登录你的域名服务商以创建。
然后点击申请证书,填写你的域名信息(包括主域名,邮箱网页端域名,smtp,pop,imap),选择Acme账户与DNS账户,选择自动续签并填写你的域名服务商的DNS。
设置证书导出目录为./config/ssl,注意这是以Pmail目录为相对位置的。
点击申请,之后只需耐心等待。首次签发需要10分钟左右,以后就会快上不少,续签一般1分钟就可以完成。
4.配置Pmail
打开浏览器,进入IP+端口,随提示完成配置。
注意
由于我们在上一步选择了非80/443端口作为前台运行端口,因此SSL配置需要选择手动配置,
这时,应当选用已经配置好的SSL证书而不是Pmail的自动配置,选择我们在第3步签发的证书,区分开公钥与私钥。
5.修改配置文件
配置文件位置为./config/config.json。在Pmail目录下运行这行命令:
1 |
|
修改这些内容:
httpsEnabled 改成 2
sslType 改成 1
spamFilterLevel 改为 2,(这个参数可以阻止一些人冒用你的信息发邮箱。)
登录Pmail,看看是否可以正常访问。
如果可以正常访问,说明没有大问题,可以测试发件了。
四.后续工作
这里主要是一些修修补补的工作,可以避免一些收发件问题。
1.邮箱得分测试
这里建议对你的邮箱进行得分测试,分数尽可能要高,并根据扣分点判断哪些东西没有配置或者配置出错。
比如使用这个网站(https://www.mail-tester.com)
向网站提供的测试邮箱发一份正常的邮件,等待结果。
这么做可以避免因配置问题将邮件发进朋友的垃圾箱。
以下是配置无效时的解决方案。
2.配置DKIM
很玄乎,有时候Pmail给出的DKIM公私钥会不匹配。这种情况常常会发生在自定义使用SSL证书时的域名错误识别。
解决方法是重新生成一对公私钥。
首先,我们选择一个DKIM工具生成工具,把主域名贴进去,得到公钥与私钥。
随后,把公钥写入dkim.public
,把私钥写入dkim.priv
。这两个文件都在./config/dkim
中。
之后,将DNS记录中的default._domainkey
改为你生成的公钥,并妥善保管好私钥。等待一会儿,让解析记录传播。
3.配置rDNS
rDNS,即反向DNS,是一套可以验证发件服务器的机制,负责将IP地址解析成域名。
由于rDNS管理权限不在域名服务商,而在于运营商。因此只能通过向你的运营商提交申请,要求为你的IP绑定域名。
如果你是云服务器,可以申请工单,让他们帮你完成。已知阿里云的这项业务免费。
提示:一个IP只能绑一个域名的rDNS解析。
当然,如果你只是玩玩而已,也无所谓了
4.配置DMARC
这是一种防止攻击人使用假冒域名,并阻止执行退信攻击的方式。
配置的前提是已经设置了SPF记录,当然你也应当在配置Pmail时完成了这项工作。
你需要按以下形式填写解析记录。
操作解析的域名 | 解析类型 | 解析记录值 |
---|---|---|
_dmarc | TXT | v=DMARC1; p=quarantine; rua=mailto:dmarc_report@example.com |
其中,p的值可以为none,quarantine与reject。rua=mailto:
为发送report信息的邮箱地址。在这后面接一个可用邮箱,可以接收来自收信方的汇总报告。
p=none:放行所有来自您域名的邮件,即使邮件未通过DMARC验证。
p=quarantine:隔离一部分邮件,通常为放入垃圾箱。配合pct参数(默认为100),设置未通过DMARC验证的邮件中隔离的百分比。
p=reject:执行严格拒绝,拒绝所有未通过身份验证的邮件。
五.总结
总的来说,Pmail是个值得一试的项目。自动SSL证书,占用又低,推荐想自建邮局的朋友使用。
六.致谢
1.Jinnrry(https://github.com/Jinnrry)
感谢作者的开源精神。
2.seektao。我的部署参考了这篇文章。(https://blog.seektao.cc/p/pmail/)