1、官方网站
2、准备工作
首先我们要准备一台没有屏蔽25端口出站的服务器,我这里使用的是华为云Flexus应用服务器L实例
要查看是否支持部署邮箱服务,我们可以用以下命令测试
telnet smtp.qq.com 25
若输出是以下内容,则证明该服务器25端口正常的,可以进行部署邮局。
Trying 183.47.120.204…
Connected to smtp.qq.com.
Escape character is '^]'.
然后可以开始设置我们的域名解析,我这里使用的是阿里云,example.com这部分替换你自己的域名,IP替换成自己的服务器IP
| 主机记录 | 记录类型 | 记录值 | 优先级/说明 |
|---|---|---|---|
| @ | MX | mail.example.com | 优先级 10,邮件服务器域名 |
| A | IP | 邮箱服务器IP | |
| @ | TXT | v=spf1 mx ~all | SPF 记录,指定允许发送邮件的服务器 |
| s20260121710._domainkey | TXT | k=rsa; p=... | DKIM 公钥记录,确保邮件真实性,这个需要我们部署好服务后获取,具体查看目录7 |
| smtp | CNAME | mail.example.com | |
| pop | CNAME | mail.example.com | |
| imap | CNAME | mail.example.com | |
| _dmarc | TXT | v=DMARC1; p=none; rua=mailto:no-reply@example.com | DMARC 记录,处理验证失败的邮件 |
3、正式部署
这里我使用的是docker部署
关于docker和nginx可以查看:Linux Docker 部署openresty nginx – recallmc blog
创建文件夹:
mkdir -p /poste-captcha
mkdir -p /poste-captcha/data
cd /poste-captcha
创建docker-compose.yml:
vim docker-compose.yml
输入法切换英文输入按 i ,粘贴以下代码,然后按shift+:,输入wq按回车保存并退出
version: '3'
services:
poste:
image: analogic/poste.io
container_name: poste-mail
restart: unless-stopped
ports: #这里配置的所有端口,都需要在服务器控制台放行入方向防火墙规则
#- "80:80" #我这里没有添加80和443端口
#- "443:443" #因为我要用nginx配置反向代理,端口已经被nginx占用了
- "25:25"
- "110:110"
- "143:143"
- "465:465"
- "587:587"
- "993:993"
- "995:995"
- "4910:4910"
volumes:
- ./data:/data
environment:
- TZ=Asia/Shanghai
- HTTPS=true
- DISABLE_CLAMAV=TRUE # 反病毒,根据需求禁用
- DISABLE_RSPAMD=FALSE # 反垃圾邮件,根据需求禁用
- DISABLE_ROUNDCUBE=FALSE
networks:
- openresty-network
networks: #这里开始是配置外部网络,也是为了反向代理做准备
openresty-network:
external: true
name: openresty-network
因为是配置外部网络,所有在我们拉取镜像前要先创建网络
docker network create openresty-network
docker-compose up -d
4、配置反向代理
在Linux Docker 部署openresty nginx – recallmc blog中,我已经部署好了nginx,那么我们进入放置配置文件的目录
cd /data/openresty/conf
vim mail.conf
输入法切换英文输入按 i ,粘贴以下代码,保存退出
server {
listen 80;
listen [::]:80;
listen 443 ssl http2;
listen [::]:443 ssl http2;
# 原有 server_name,可继续新增更多当前证书支持的域名
server_name mail.recallmc.com;
location / {
# 其它配置
client_max_body_size 75M; # 允许的最大文件大小为 20MB
proxy_pass https://poste-mail;
proxy_set_header Host $host;
# real-ip
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
# websocket
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_read_timeout 86400;
## replace content ##
sub_filter_once off;
sub_filter '撰写新邮件' '写信';
sub_filter 'Dark mode' '深色';
sub_filter 'Light mode' '浅色';
sub_filter '[Administration]' '控制台';
sub_filter '>Administration<' '>控制台<';
sub_filter 'Trusted Senders' '可信发件人';
sub_filter 'Collected Recipients' '收件人集合';
sub_filter '' '\n.pro,.brand,.nav-sidebar p.alert{display:none !important}\n';
}
# ========== 错误页面 ==========
error_page 401 /login;
error_page 403 /login;
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /404.html {
internal;
return 404 '{"error": "Not Found"}';
}
location = /50x.html {
internal;
return 500 '{"error": "Internal Server Error"}';
}
}
其中example.com替换你自己的域名,可以看到在配置中多了一段replace content下方的配置,这个是参考了自建邮局poste.io踩坑填坑(文末有彩蛋)-腾讯云开发者社区-腾讯云的文章,可以将付费的pro部分隐藏掉,显得更干净美观
重载nginx
docker exec openresty nginx -s reload
5、注册
然后就可以访问自己的域名进行注册了
在Mailserver hostname填入自己的邮箱域名,例如mail.example.com
Administrator email填入管理员邮箱,例如admin@example.com
然后设置好密码,注册完后进入管理员页面
这里可以看到我还添加了一个no-reply的邮箱,这里和我们在域名解析时设置的DMARC 记录相对应,这样才能生效并给你的邮箱加分

6、配置 Let’s encrypt 证书

recallmc.com替换自己的域名然后保存

7、创建 DKIM 密钥



8、配置服务器反向解析
我部署的服务器是华为云的,华为云是支持配置反向解析到域名的服务的,这个解析也能为你的邮箱加分,以免被识别为垃圾邮箱

顺便提供一个邮箱测试地址:Newsletters spam test by mail-tester.com
邮箱检测工具:Network Tools: DNS,IP,Email
每天有三次免费测试,可以看到自己的邮箱分数和扣分原因,测试发送的邮箱主题和内容建议都使用纯文本,不要带附件,我的已经是满分了哈哈哈


Comments NOTHING