rainstar
记录:使用轻量级邮局pmail搭建个人邮箱

记录:使用轻量级邮局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
docker run -p 25:25 -p 8680:80 -p 8643:443 -p 110:110 -p 465:465 -p 995:995 -p 993:993 -v $(pwd)/config:/work/config ghcr.io/jinnrry/pmail:latest

如果你服务器开启了防火墙,你需要打开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
sudo nano config/config.json

修改这些内容:

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/)

本文作者:rainstar
本文链接:https://blog.rainstar.top/2025/04/12/pmail1/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可