自建邮局服务器 poste.io
准备
1.安装Web环境和Docker
2.一个能运行网站的vps(不能是Nat机)
部署
Dns相关内容在官网有详细的说明。
开放以下端口,大厂云服务器记得去防火墙安全组里放行,安装宝塔的也要去宝塔放行。
Port number | Purpose |
---|---|
25 | SMTP - mostly processing incoming mails from remote mail servers |
80 | HTTP - redirect to https (see options) and authentication for Let's encrypt service |
110 | POP3 - standard protocol for accessing mailbox, STARTTLS is required before client auth |
143 | IMAP - standard protocol for accessing mailbox, STARTTLS is required before client auth |
443 | HTTPS - access to administration or webmail client |
465 | SMTPS - Legacy SMTPs port |
587 | MSA - SMTP port primarily used by email clients after STARTTLS and auth |
993 | IMAPS - alternative port for IMAP with encryption from the start of the connection |
995 | POP3S - POP3 port with encryption from the start of the connection |
4190 | Sieve - remote sieve settings |
并且在你的Dns管理里边加上多个解析
- mail A 你的IP
- @ MX mail.your-domain.com
- @ TXT v=spf1 mx ~all
- smtp CNAME mail.your-domain.com
- pop CNAME mail.your-domain.com
- imap CNAME mail.your-domain.com
安装
由于同台服务器上有一般不仅仅只有邮局,还有多个web,为了避免端口冲突,我们只暴露邮局服务端口,邮局前端通过Nginx进行代理。
docker run --name mailserver -d \
--restart unless-stopped \
--hostname "mail.yourdomain.com" \
-p 25:25 \
-p 110:110 \
-p 143:143 \
-p 465:465 \
-p 587:587 \
-p 993:993 \
-p 995:995 \
-p 4910:4910 \
--env "TZ=Asia/Shanghai" \
-v /home/mail:/data
-t analogic/poste.io
其中可加入:
- 禁用反病毒功能(
DISABLE_CLAMAV=TRUE
)、禁用反垃圾邮件功能(DISABLE_RSPAMD=TRUE
),可以大幅减低内存和CPU占用,请酌情设置禁用选项。 - 禁用WEB收发功能(
DISABLE_ROUNDCUBE=TRUE
),可以进一步减少资源占用,不过非必要不建议禁止。
请注意自行修改所需内容
代理
此时已经完成了邮局安装,接着部署代理使得web服务和邮局前端服务并存
例如在宝塔中创建一个新的web,然后重新配置配置文件
覆盖以下代码
server {
listen 80;
listen [::]:80;
server_name mail.yourdomain.com;
location / {
proxy_pass http://你的邮局docker容器内网IP:80;
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 '</style>' '\n.pro,.brand,.nav-sidebar p.alert{display:none !important}\n</style>';
}
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
#可以删掉这下边两个ssl参数,以后再到前端部署ssl
ssl_certificate /www/server/nginx/conf/ssl/mail.hejincn.com_bundle.crt;
ssl_certificate_key /www/server/nginx/conf/ssl/mail.hejincn.com.key;
server_name mail.yourdomain.com;
location / {
proxy_pass https://你的邮局docker容器内网IP:443;
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 '</style>' '\n.pro,.brand,.nav-sidebar p.alert{display:none !important}\n</style>';
}
}
这段配置代理docker容器内的80和443端口到对应域名,并且做到
- 隐藏付费的Pro菜单,使界面更加清爽。
- 修改部分WEB收发界面的英文菜单或描述。
完成
进入到管理员后台的Virtual domains,选中你的域名,并在DKIM key这一栏创建Key
然后复制s开头的那一串,例:s202308XXXXX._domainkey到DNS解析主机值,使用TXT记录,最后的值填写双引号内的所有内容并保存。
到此为止,邮局基本已经部署完成,可以到Newsletters spam test by mail-tester.com进行测试【PS:一天最多用三次】,有任何问题可以进行修改
尊重版权哦~
本文:自建邮局服务器 poste.io
作者:Hejin
本文:自建邮局服务器 poste.io
作者:Hejin
THE END
二维码
文章目录
关闭