使用Docker搭建poste,自建邮件服务器

admin1年前笔记113

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

image.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

关于Docker安装可参考这篇文章《Linux安装Docker与Docker常用命令》,如果您使用的CentOS 7系统,也可以直接使用xiaoz提供的Docker一键安装脚本。


参数含义如下:

  • 880/8443是WEB访问端口,为了避免和本地已有WEB服务(nginx等)冲突,所以这里使用的880/8443作为WEB端口

  • TZ=Asia/Shanghai:设置容器为上海时区

  • /data/mail-data:本地数据目录,根据实际情况修改为服务器目录

  • mail.xxx.com:改成你自己的域名

  • --restart=always:容器异常时自动拉起

如果部署遇到25端口被占用,可通过netstat -apn|grep 25查看是否是postfix导致,CentOS 7可卸载postfix:

#卸载postfixyum -y remove postfix

部署后访问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记录解析。

image.png

设置PTR反向解析

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

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

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

屏幕截图 2023-11-05 200250.png

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

设置TLS SSL

假如您的邮件域名为mail.your-domain.com,需要对这个域名申请SSL证书,可参考《使用acme.sh申请ZeroSSL泛域名证书,Let’s Encrypt替代品》或者在其它服务商申请SSL证书。

获得SSL证书后,打开poste后台 - System settings - TLS Certificate - 选择证书文件进行上传,见截图。

屏幕截图 2023-11-05 200700.png

SSL提供商会自动将中级证书合并到了证书文件(比如腾讯云),因此中级证书那个选项可以和证书一致,然后点保存,保存后需要重启容器生效:docker restart mailserver

登录与管理

启用SSL后,可通过域名进行访问:https://mail.your-domain.com:8443/,默认是登录webmail,可以在webmail发信、收信等操作。

屏幕截图 2023-11-05 200828.png

如果需要登录系统管理,可将地址修改为https://mail.your-domain.com:8443/admin/login

image.png

邮件跑分测试

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


相关文章

创建交换分区的两个命令

创建交换分区的两个命令

交换分区在物理内存(RAM)被填满时用来保持内存中的内容。当 RAM 被耗尽,Linux 会将内存中不活动的页移动到交换空间中,从而空出内存给系统使用。虽然如此,但交换空间不应被认为是物理内...

MySQL进阶|MySQL中的事务原理

MySQL进阶|MySQL中的事务原理

1 数据库事务MySQL 事务主要用于处理操作量大,复杂度高的数据。比方我想要删除一个用户(销户)以及这个用户的个人信息、订单信息以及其他信息,这里会涉及到很多SQL语句的执行来满足我们的业务需求,我...

使用本地 eclipse 调试服务器代码

使用本地 eclipse 调试服务器代码

设置eclipse首先是启动jar程序的时候,需要设置-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,addr...

一键搭建web版chatGPT,无需魔法,国内可用

一键搭建web版chatGPT,无需魔法,国内可用

在GitHub上有很多web版本的ChatGPT项目,感谢这些开源作者,我们能很方便的搭建属于自己的ChatGPT。前置条件需要拥有chatGPT的api key。申请地址platform.opena...

简述Linux磁盘IO

简述Linux磁盘IO

1、什么是磁盘  在讲解磁盘IO前,先简单说下什么是磁盘。磁盘是可以持久化存储的设备,根据存储介质的不同,常见磁盘可以分为两类:机械磁盘和固态磁盘。1.1 机械磁盘  第一类,机械磁盘,也称...

mysql/mariadb:数据库用户管理语句

mysql/mariadb:数据库用户管理语句

在了解mysql的用户管理语句之前,先来了解一下mysql的用户账号格式,如下:username@host上述格式表示,username对应的用户能够通过哪个host登录mysql。host:此mys...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。