当前位置: 首页 > Linux运维 > Docker > 使用Docker部署mailcow,自建邮局服务(一)

使用Docker部署mailcow,自建邮局服务(一)

发布于:2022-8-14 最后更新:2022-8-16 Docker 7条评论 8,200 views
本站提供Linux服务器运维,自动化脚本编写等服务,如有需要请联系博主QQ:446199062

在早期的文章中xiaoz分享过《使用Docker搭建poste,自建邮件服务器》,poste这个邮局比较轻量,部署相对简单,适合个人轻度使用。但是从客户的使用反馈来看(xiaoz之前有给客户部署过),大量发件的时候poste不太稳定,很容易出问题。且poste将所有相关依赖服务全部放到一个容器中,并没有使用docker-composer编排多个容器,从而导致稳定性大打折扣。

今天再分享另一个开源的自建邮局服务mailcow,mailcow功能上比poste更加丰富,官方提供docker-composer部署方式,下面和xiaoz一起来安装下mailcow邮件服务吧。

注意:此教程需要掌握一定Linux基础和Docker基础的人士阅读

先决条件

  • 一台VPS,有独立IP,最低配置1C2G,建议2C4G以上,支持发件服务(未屏蔽邮件端口, 请咨询你的服务商),支持PTR反向解析(咨询你的服务商)
  • 操作系统:CentOS、Debian、Ubuntu均可
  • 安装了Docker和docker-composer
  • 一个域名,注册时间越长越好,建议使用主流后缀,如:.com/.net/.org

注意:请务必和你的服务商确认是否支持PTR反向解析,如果不支持的话邮件是很容易进垃圾箱的,就目前xiaoz所了解UltraVPS(EU)是支持PTR解析的,并且自己在后台就可以操作。

如果您还没有安装Docker可以参考:Linux安装Docker与Docker常用命令

如果您还没有安装docker-composer,可以使用下面的命令安装:

#下载docker-composer
curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
#添加执行权限
chmod +x /usr/local/bin/docker-compose
#建立软连接
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

部分CentOS 7系统可能内置了postfix服务,会和mailcow端口冲突,可以先尝试执行下面的命令卸载postfix

#CentOS卸载postfix
yum -y remove postfix
#Debian或者Ubuntu卸载postfix
apt-get remove postfix

设置Linux主机名

假设您的顶级域名为domain.com,那么您的主机名需要设置为mail.domain.commx.domain.com,前缀自己取,反正是需要二级域名。

设置主机名的命令为:

hostnamectl set-hostname mail.domain.com

然后修改/etc/hosts,添加一行hosts解析,就是将mail.domain.com指向到您当前服务器的公网IP,命令如下:

echo '173.0.xx.xxx    mail.domain.com' >> /etc/hosts

部署mailcow

先克隆mailcow代码和脚本:

#CentOS安装Git
yum -y install git
#Debian安装Git
apt-get install git

#克隆mailcow代码
git clone https://github.com/mailcow/mailcow-dockerized

进入代码目录cd mailcow-dockerized执行初始化脚本:./generate_config.sh根据提示设置域名和时区等信息。注意:

  1. 域名要和上面设置的主机名一致,比如mail.domain.com
  2. 如果后续需要修改,可以编辑mailcow.conf这个配置文件

mailcow默认使用了80/443作为WEB端口,如果您的服务器上已经存在WEB服务,可能会导致端口冲突,我们可以修改mailcow.conf这个配置文件,将

HTTP_PORT=80
HTTPS_PORT=443

修改为其它端口,比如修改为:

HTTP_PORT=880
HTTPS_PORT=8443

然后执行下面的命令拉取容器镜像和启动:

#拉取镜像
docker-compose pull
#启动容器
docker-compose up -d

初始化mailcow和添加域名

安装成功后,访问您的IP + 端口进入WEB管理界面,默认用户名:admin,密码为:moohoo

进入后台后点右上方“配置 - 邮箱设置 - 添加域名”

注意:添加域名的时候这里需要填写您的顶级域名domian.com,比如您主机名设置的是mail.domain.com,那么这里添加域名的时候填写domain.com

添加邮箱解析

域名添加完毕后,右侧有个DNS按钮,点击这个按钮会对您的域名DNS进行检测和指引。

不过那个检测有点不准,而且并非所有记录都要添加,下面是必须添加的记录。

主机名记录类型记录值备注
mail.domain.comA您的IP填写你VPS的公网IP
您的IPPTRmail.domain.com可能需要联系服务商添加
domain.comMXmail.domain.com
autodiscover.domain.comCNAMEmail.domain.com
autoconfig.domain.comCNAMEmail.domain.com
domain.comTXTv=spf1 a mx ip4:173.0.xx.xxx ~allIP改成你自己的
dkim._domainkey.domain.comTXT从mailcow后台获取DKIM记录从mailcow后台获取

邮件测试

DNS解析添加完毕后,等待几分钟生效,然后在mailcow后台添加邮箱账号,并登录webmail进行发件测试。

打开https://www.mail-tester.com/这个网站,然后用你的mailcow邮箱发送邮件,发送完毕后查看得分。

满分为10分,如果评分很差,mail-tester会给出提示,建议根据提示进行修正即可。

总结

上述步骤我们仅仅是完成了安装和初始化,其实后续还有很多配置和维护工作要做。比如禁用IPV6、反向代理、配置SSL证书、数据备份与恢复等,有兴趣的可以参考mailcow官方文档完成,后续xiaoz再分享mailcow配置方面的内容。

自建邮局比较复杂且步骤繁多,很多细节问题若处理不好很容易进垃圾箱。非必要情况建议使用第三方企业邮箱即可,除非有特殊需求。自建邮局虽然不受发件量限制,但不建议短时间内发送大量垃圾邮件,否则你的IP或域名很容易被拉黑,最后得不偿失。

如果您也需要自建邮局服务器,可联系我的QQ:446199062或者微信:xiaozme


7 条评论 “使用Docker部署mailcow,自建邮局服务(一)”

  1. HAX说道:

    这个mailcow支持多个域名添加吗

    1. xiaoz说道:

      可以添加多个别名域名,好像不支持添加多个主域。

    2. Gabe说道:

      可以的,我用过。用SAN config ,mailcow.conf,你可以自己修改这个文件。
      这里有详细教程:
      https://community.mailcow.email/d/206-mailcow-ignores-additional-san-in-config

  2. 教书先生说道:

    为啥我输入账号密码 登录不进去 ,点击登录 页面刷新了一下没了

    1. xiaoz说道:

      不太清楚,建议根据浏览器控制台报错和服务端日志来排查。

  3. 鸟叔说道:

    弄这个有啥用

    1. xiaoz说道:

      可以用来收发邮件,限制更少一些。

xiaoz进行回复 取消回复

邮箱地址不会被公开。 必填项已用*标注