使用Poste自建邮局

superman
126
2024-08-04

自建邮件服务可以不受发件量限制,批量发件成本更低,但部署相对复杂,而且容易进垃圾箱。
不过现在越来越多的服务商已经开发好了产品,支持一键部署等方式,极大降低了部署和使用难度。这次给各位小伙伴安利一款开源邮件服务poste.

Screenshot - 2024-08-04 10.53.39.png

关于poste

poste是一款开源邮件服务软件,可以很方便的搭建:SMTP + IMAP + POP3 + 反垃圾邮件 + 防病毒 + Web 管理 + Web 电子邮件,支持以下特性。

  • SPF、DKIM、DMARC、SRS 的原生实现,带有简单的向导
  • 用于检测木马、病毒、恶意软件的防病毒引擎 ( ClamAV )
  • 内置垃圾邮件过滤器( RSPAMD )
  • HTTPS 上的Webmail 客户端(Roundcube)
  • 通过Sieve 脚本进行电子邮件重定向、自动回复和其他过滤(电子邮件所有者管理,每个操作都可以编写脚本)
  • 用于限制邮箱空间或电子邮件数量的配额
  • 系统管理员、域管理员、电子邮件所有者具有不同权限的Web 管理。
  • 内置Microsoft 产品的自动发现功能,Thunderbird...
  • 帮助正确设置域和邮件服务器的诊断
  • SMTP - 端口 25、465 (TLS)、587
  • POP3 - 端口 110、995 (TLS)
  • IMAP - 端口 143、993 (TLS)
  • SSL TLS无处不在!没有个人数据、电子邮件、登录信息通过互联网未加密。
  • 默认情况下,所有密码都存储为加盐SHA512哈希(5000 轮)。攻击者将很难破解您的密码。
  • 整个邮件服务器容器由 Docker 与其他应用程序隔离。

准备工作

  • 一台VPS,有独立IP
  • 支持25端口及邮件发送
  • 建议内存2Gb以上
  • 干净的IP,没有被墙,没有被标记为垃圾IP
  • 提前安装好Docker

检查25端口是否打开可以输入以下命令查看.

apt update
apt install telnet # 安装必要包

telnet smtp.qq.com 25 # 

如果显示如下图片即为开通了25端口。

Docker部署poste

Docker部署poste,几乎不会影响你服务器上现有的服务

创建部署文件夹

mkdir -p /root/data/docker_data/poste
cd /root/data/docker_data/poste

创建证书文件夹并上传证书到此文件夹

mkdir -p ./data

创建compose文件

vim docker-compose.yml
version: '3'
services:
  mailserver:
    image: analogic/poste.io
    container_name: mailserver
    hostname: mail.xxx.com
    ports:
      - "880:80"
      - "8443:443"
      - "25:25"
      - "110:110"
      - "143:143"
      - "465:465"
      - "587:587"
      - "993:993"
      - "995:995"
      - "4190:4190"
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - ./data:/data
      - ./config/cert.pem:/etc/ssl/certs/cert.pem
      - ./config/key.pem:/etc/ssl/private/key.pem
    restart: always

参数含义如下:

  • 880/8443是WEB访问端口,为了避免和本地已有WEB服务(nginx等)冲突,所以这里使用的880/8443作为WEB端口
  • TZ=Asia/Shanghai:设置容器为上海时区
  • /data/mail-data:本地数据目录,根据实际情况修改为服务器目录
  • xxx.com:改成你自己的主域名
  • --restart=always:容器异常时自动拉起

部署后访问https://IP:8443/根据提示完成初始化设置。

DNS设置

前往DNS服务商处,按照如下要求设置域名解析,否则邮件服务无法正常使用,其中:

  • your-domain.com:为你自己的域名
  • 1.2.3.4:为你的邮件服务器IP
主机名记录类型记录值
mail.your-domain.comA1.2.3.4
smtp.your-domain.comCNAMEmail.your-domain.com
pop.your-domain.comCNAMEmail.your-domain.com
imap.your-domain.comCNAMEmail.your-domain.com
your-domain.comMXmail.your-domain.com
your-domain.comtxtv=spf1 mx ~all

设置DKIM验证

在poste后台 - Virtual domains - [点击对应域名 - DKIM key - 创建key],并按照要求设置txt记录解析。

Screenshot - 2024-08-04 10.39.42.png

Screenshot - 2024-08-04 10.41.16.png

注意,在域名的DNS中新建一个TXT类型,而不是覆盖创建的那个!上图中,蓝色方框为你设置的主域名,前面的内容设置为名称 (Name),红框中TXT后双引号的内容为DNS值的内容。

设置PTR反向解析

PTR记录,是电子邮件系统中的邮件交换记录的一种;另一种邮件交换记录是A记录(在IPv4协议中)或AAAA记录(在IPv6协议中)。PTR记录常被用于反向地址解析。——摘自百度百科

域名解析到IP被称为正向解析,而IP指向到域名,则被称为反向解析,反向解析需要在主机服务商处进行操作,具体请咨询主机服务商。

比如UltraVPS可以直接在后台面板添加PTR反向解析,将IP指向到您的邮件服务器,如mail.your-domain.com

使用Docker搭建poste,自建邮件服务器-CSDN博客.png

添加SPF/DKIM/PTR解析,可提高邮件可信度,从而降低邮件进入垃圾箱的几率,必不可少的关键步骤。

登录与管理

默认是登录webmail,可以在webmail发信、收信等操作。

使用Docker搭建poste,自建邮件服务器-CSDN博客.png

由于我们已经在compose已经映射了SSL证书了,所以需要登录系统管理,可将地址修改为https://mail.your-domain.com:8443/admin/login

使用Docker搭建poste,自建邮件服务器-CSDN博客.png

也可以使用npm代理此端口,如下图所示设置。值得注意的是要选择https,其他正常设置即可。

输入https://mail.your-domain.com/admin/login即可登录。
Screenshot - 2024-08-04 11.13.34.png

邮件跑分测试

https://www.mail-tester.com/
使用你的邮箱发送邮件到它给出的地址,会检测你邮箱的分数以及存在的问题,并给出一定优化建议。
当然这个工具得分并非绝对准确,结果只供参考。

Screenshot - 2024-08-04 10.51.47.png

个人建议

在准备自建邮件服务之前,有一些注意事项需要知晓,以下是一些个人经验总结,希望有所帮助。

  • 使用可信度较高的域名后缀,如.com/.net/.org,尽量避免使用各种奇怪的小众后缀
  • 使用英文字母的域名,尽量避免使用纯数字域名
  • 域名注册时间越长越好,最低注册时间建议大于7天
  • 使用一个干净的IP,可通过查询
  • IP支持PTR反向解析,需咨询主机商
动物装饰