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

关于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
  • 在安装之前,您需要确保您的VPS的25端口是开放的。您可以在您的VPS上执行下面的命令来测试25端口是否开放。
  • 已安装postfix服务占用25端口,请先卸载
  • postfixyum -y remove postfix

    先安装telnet 测试25端口

  • sudo yum -y install telnet
  • telnet smtp.aol.com 25

    如果看到类似下面的回显,则说明端口是开放的:

  • Trying 67.195.228.102...
    Connected to smtp.aol.com.
    Escape character is '^]'.
    220 smtp.mail.yahoo.com ESMTP ready

    设置主机名(建议设置增加权重)

  • 设置好主机名(服务器名, Hostname)是所有邮件服务器必不可少的一步,否则在发信时将会遇到各种错误。

    如果您的域名为example.com, 那么我建议您的邮件服务器主机名可以设置为mail.example.com或者mx.example.com.

    1)需要编辑/etc/hosts文件,找到含有你的VPS的IP地址的那一行;如果没有,则添加一行。内容如下:

  • 88.88.88.88    mx.ctho.me   mx

    其中, 88.88.88.88是你的服务器IP地址,后面依次填入长主机名和短主机名,切记不可填返。

    编辑好后,在SSH中执行:

  • echo "mx" > /etc/hostname
    hostname -F /etc/hostname

    这样,就设置好了主机名。此时我们检查一下是否设置正确。首先,执行:

  • hostname

    此时我们应该只能看到短主机名mx. 如果你看到了长主机名mx.ctho.me, 说明之前设置错误,请重新检查上述步骤。然后,执行:

  • hostname -f

    此时,我们应该只能看到长主机名mx.ctho.me

  • 先创建与容器交换使用的文件夹
  • mkdir /www/mail

Docker部署poste

Docker部署poste,几乎不会影响你服务器上现有的服务,复制下面的命令执行

docker run -d \
    -p 880:80 -p 8443:443 -p 25:25 -p 110:110 -p 143:143 -p 465:465 -p 587:587 -p 993:993 -p 995:995 -p 4190:4190 \
    -e TZ=Asia/Shanghai \
    -v /www/mail:/data \
    --name "mailserver" \
    -h "mail.your-domain.com" \
    --restart=always \
    -t analogic/poste.io

无需映射端口部署

docker run \
    --net=host \
    -e TZ=Asia/Shanghai \
    -v /www/mail:/data \
    --name "mailserver" \
    -h "mail.wxqhsc.cn" \
    --restart=always \
    -e "HTTPS=OFF" \
    -e "HTTP_PORT=880" \
    -e "HTTPS_PORT=8433" \
    -e "DISABLE_CLAMAV=TRUE" \
    -e "DISABLE_RSPAMD=TRUE" \
    -t analogic/poste.io

 

参数含义如下:

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

可增加参数:

    • -v /your-data-dir/data:/data:将主机系统的数据目录挂载到容器内的/data目录。这样,用户数据库、电子邮件、日志等所有数据都将存储在这个目录中,便于备份。
    • --name "mailserver":以”mailserver”为名运行poste.io容器。
    • -h "mail.example.com":设置邮件服务器的域名。
    • -t analogic/poste.io:设置镜像名称,PRO和免费版本不同。
    • -e "HTTPS=OFF":禁用所有重定向到加密HTTP的选项,如果您使用某种反向代理,这会很有用(将此参数放在镜像名称之前!)。
    • -e "HTTP_PORT=8080":自定义HTTP端口。请注意,您需要处理Let’s Encrypt在端口80上的请求,因此如果您使用反向代理设置,则需要将/.well-known/文件夹转发到此端口。
    • -e "HTTPS_PORT=4433":自定义HTTPS端口。
    • -e "DISABLE_CLAMAV=TRUE":禁用ClamAV,这对于低内存使用情况很有用。
    • -e "DISABLE_RSPAMD=TRUE":禁用Rspamd,这对于低内存使用情况很有用。
    • -e "DISABLE_ROUNDCUBE=TRUE":禁用Roundcube webmail。
    • -e "ELASTICSEARCH=123.123.123.123:9200":Elasticsearch集成。
    • -p 4190:4190:如果您想使用能够从外部管理Sieve过滤器的客户端,则需要打开端口4190。

    这些环境变量(-e参数)用于在容器内配置各种行为和功能。例如,HTTPS=OFF环境变量可以关闭所有重定向到HTTPS的请求,DISABLE_CLAMAV=TRUE可以禁用ClamAV杀毒引擎以节省内存,而ELASTICSEARCH=123.123.123.123:9200则是设置Elasticsearch的IP地址和端口。

如需添加请加载 -t analogic/poste.io上边 每行一个

-e "HTTPS=OFF"\

-e "HTTP_PORT=8080"\

-e "HTTPS_PORT=4433"\

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

yum -y remove postfix

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

DNS设置

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

  • your-domain.com:为你自己的域名
  • 1.2.3.4:为你的邮件服务器IP
主机名 记录类型 记录值
mail A 1.2.3.4
smtp CNAME mail.your-domain.com
pop CNAME mail.your-domain.com
imap CNAME mail.your-domain.com
@ MX mail.your-domain.com

@

_dmarc

txt

v=spf1 mx ~all

v=DMARC1; p=none; sp=quarantine; rua=mailto:mailauth-reports@yuming.cn

设置DKIM验证

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

01

设置PTR反向解析

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

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

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

02

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

设置TLS SSL

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

03

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

登录与管理

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

04

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

05

邮件跑分测试

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

建议

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

  • 使用可信度较高的域名后缀,如.com/.net/.org,尽量避免使用各种奇怪的小众后缀
  • 使用英文字母的域名,尽量避免使用纯数字域名
  • 域名注册时间越长越好,最低注册时间建议大于7天
  • 使用一个干净的IP,可通过https://poste.io/dnsbl查询
  • IP支持PTR反向解析,需咨询主机商
© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容