搭建邮箱服务
摘要
ㅤㅤ继部署速查表、热搜聚合之后,紧接着突然打算弄一弄邮箱,这是第 N 次决定搞邮箱,之前多次想鼓捣,都没什么根本动力,也许是最近遇到的各种 Docker 容器都提不起什么兴趣,查看以往博客记录,发现 2022 年 5 月 12 号就定了目标,反代、邮箱、网盘、DNS,这是当时的计划清单,邮箱是最后一个才去兑现,当然 DNS 配置过,但是无法使用,记得当时。
ㅤㅤ说来也是巧合,在 Google 里面搜索 Docker 项目之推荐,就发现了热搜聚合,进到容器作者的博客,专门去看了 Docker 分类,就看到了邮箱,最后决定不在第三方脚本里面安装,因为 80 和 443 端口已经被 X-UI 占用,博客教程里面的具体细节还是需要结合官方文档去弄,当然还要有 IPv6 访问,这个就直接参照之前的做法即可。
ㅤㅤ第一步就是解析各种记录到邮箱需要安装的服务器,然后就可以直接通过 docker run 启动安装,通过反代服务器完成反向代理,其中参考博客中的做法,实现屏蔽 PRO 几处字样,发现没有生效,通过 ChatGPT 的建议,增加几个反代参数后得以实现,也就是实际情况和博客教程有几处稍微不太一样的地方,目前应该大部分邮箱的收发邮件没什么问题。
ㅤㅤ有个 PTR 记录反向解析需要服务器运营商提供支持,走工单得知可以自行设置,没这个的话,无法收发 Gmail 等邮件,现在一切都正常了,只是发到 Gmail 会出现在垃圾邮件里,收邮件是没什么问题,经过测试 QQ 邮箱也是会默认发送到垃圾邮件里面。另外通过咨询 ChatGPT 得知服务器所在域名并没有造成浪费,依然发挥着应有的作用,解了心中一个疑惑。防火墙规则直接采用之前的开机自动运行脚本即可。下面是几个关键点的记录。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
docker run --name mailer -d \ --restart unless-stopped \ --hostname "mail.your.com" \ # 邮箱搭建所在服务器解析的域名 --net your-network \ # 可以 NAT 转发 IPv6 的 Docker 网络 -p 10086:80 \ # 暴露映射的端口去实现反向代理 -p 25:25 \ # 必须暴露的端口 -p 110:110 \ # 必须暴露的端口 -p 143:143 \ # 必须暴露的端口 -p 465:465 \ # 必须暴露的端口 -p 587:587 \ # 必须暴露的端口 -p 993:993 \ # 必须暴露的端口 -p 995:995 \ # 必须暴露的端口 -p 4910:4910 \ # 必须暴露的端口 -e "HTTPS=OFF" \ # 根据官方文档的做法也是为了反代 -e TZ=Asia/Shanghai \ -e DISABLE_CLAMAV=FALSE \ # 防病毒选项可以根据服务器负载能力适当调整 -e DISABLE_RSPAMD=FALSE \ # 反垃圾邮件选项可以根据服务器负载能力适当调整 -e DISABLE_ROUNDCUBE=FALSE \ # 这是 WEB 收发功能选项可以根据服务器负载能力适当调整 -v ./mailer:/data \ analogic/poste.io |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_pass http://email; # 这里是配合 upstream 块做出的反代配置 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade" proxy_set_header Cache-Control "no-cache, no-store, must-revalidate"; # 禁用代理缓存使 sub_filter 生效 proxy_set_header Pragma "no-cache"; # 禁用代理缓存使 sub_filter 生效 proxy_set_header Expires 0; # 禁用代理缓存使 sub_filter 生效 proxy_set_header Accept-Encoding ""; # 禁用响应压缩使 sub_filter 生效 ## replace content ## sub_filter_once off sub_filter_types text/html; # 声明 sub_filter_types 为了生效 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>'; } |
特别鸣谢
ChatGPT