静看光阴荏苒
不管不顾不问不说也不念

使用Mailcow自建邮件服务器

Mailcow是一个可以用Docker部署的邮件服务器,安装部署都比较简单,稍微搞下就能用。。。至于发的邮件进不进垃圾箱,看造化了。。。

本文将带领你使用Mailcow部署一个完全符合国际标准的邮件服务器,首先别急着部署,我们先要按照标准来设置域名解析。

1.rDNS,就是反向解析,这个功能只能看你的VPS或是服务器商家支不支持了,建议搭建邮件服务器的时候选择支持rDNS的机器,非必须要求,只是设置了rDNS后可以让你的邮件更加容易进入对方的收件箱而不是垃圾箱。

下面我以Linode为例,在这里可以设置rDNS:

假设你的邮件服务器域名是mail.example.com,那么在下面填入即可:

2.A记录,我以cloudflare的DNS解析界面做示范,那么现在就添加一个mail的A记录解析到你的服务器IP:

3.MX记录,这里假设你的域名是example.com,那么MX记录NAME这里就是@,Value就是mail.example.com:

4.两个CNAME记录,这是Mailcow部署所需要的。NAME分别是autoconfig/autodiscover,Value是mail.example.com:

5.两个TXT记录,这里分别指的是SPF和DMARC,都是增强邮箱安全性的,并且解析设置相对简单,建议都设置一下。我们先来设置SPF,新建一个TXT记录,NAME指向你的根域名,假设你的根域名是example.com,那么NAME就是example.com,Value填写如下所示内容:

v=spf1 mx ~all

如下图所示:

接着是DMARC,还是一样新建一个TXT记录,NAME填写_dmarc,Value填写:

"v=DMARC1; p=reject; rua=mailto:mailauth-reports@example.com"

其中“mailauth-reports@example.com”修改成一个你可以正常接收邮件的地址。

如下图所示:

6.DKIM记录,这其实也是一条TXT记录,并且也是增强邮箱安全性的,但是现在我们还无法配置,因为不知道具体的解析值是多少,这个要等Mailcow部署好了后才能设置。

所以,现在DNS解析这一块我们可以告一段落了,现在登到VPS内设置时间,VPS系统我选择使用CentOS7X64

先设置同步时间:

yum -y install chrony
systemctl start chronyd
systemctl enable chronyd

然后把NTP也开启了:

timedatectl set-ntp true

国外机器时区一般都不是东八区,我们把系统的本地时区改成东八区:

timedatectl set-timezone Asia/Shanghai

最后查看一下系统时间是否正常:

timedatectl status

如果一切正常,你应该可以看到类似如下图所示的内容:

其中Universal time是世界时间,这个不用管,RTC time是主板时间,也不用管,只要保证Local time即本地时间是正确,并且是东八区即可。

现在我们安装Docker:

yum -y install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-18.06.1.ce-3.el7.x86_64.rpm
systemctl start docker
systemctl enable docker.service

再安装docker-compose:

curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

然后拉取mailcow项目文件:

yum -y install git
cd /opt
git clone https://github.com/mailcow/mailcow-dockerized
cd mailcow-dockerized

执行sh脚本:

./generate_config.sh

这个脚本会让你填写一个域名,这个域名就是我们之前A记录解析的域名,按我们之前说的,那这里我的域名地址应该是:mail.example.com

完成之后拉取镜像:

docker-compose pull

确保全部都是done状态:

运行mailcow:

docker-compose up -d

如果如下图所示,那么你的mailcow就运行成功了:

打开域名mail.example.com,你应该可以看到登录界面:

默认的管理员账号是admin,密码是moohoo

登录进去之后第一件事是修改管理员密码,接着要来添加域名,点击右上角的“Configuration”-“Mailboxes”可以看到如下界面:

添加域名这个Domain填写你的根域名,其他的就按需要配置就行了,填写好了后点击“Add domain and restart SOGo”:

现在我们回到之前的DNS解析这块,之前说过还有一个DKIM解析没设置,这里我们点击“Configuration”-“Administration”,然后选择“Configuration”,然后按如下图设置:

1.Domaion/s填写我们的根域名,我这里假设就是example.com

2.DKIM key length (bits)选择1024bits。

完成之后你将得到一个解析值:

回到cloudflare的DNS解析界面,添加一个TXT记录,NAME填写:

dkim._domainkey

值就是上图的这一串,复制粘贴就行了,如图所示:

现在我们就可以回到mailcow创建邮箱账号了,点击“Mailboxes”-“Add mailbox”开始创建你的邮箱账号:

Domain选择我们之前刚添加的域名,其他这些就按需填写即可:

完成之后我们可以在右上角打开SOGo这个APP,这个就是mailcow的邮件系统:

登录界面长这样,可以设置中文:

使用我们创建的邮箱账号登录,注意账号是邮件地址的全名,比如这样:imlala@example.com

测试发信:

正常:

测试收信,同样正常:

Mail-Tester测试了一下,还行吧8.1分:

我就TM一直纳闷这个PYZOR是个啥J8玩意:

当然这些都只是测试并不代表实际使用效果,那么Mailcow实际发送邮件的效果如何?

答曰:稀烂!

发QQ邮箱进垃圾箱,发Gmail进垃圾箱,发什么都进垃圾箱,玩你妹啊!rDNS/SPF/DMARC/DKIM都配置了还是如此,我也不知道该怎么办了,反正我个人觉得这款邮件系统发信进收件箱的几率太低了。。。

另外这个SOGo的界面说实话,有点华而不实,看上去挺好看的UI,实际用起来感觉难用到爆炸,算了,不想BB了,告辞~

赞(1)
未经允许不得转载:荒岛 » 使用Mailcow自建邮件服务器
分享到: 更多 (0)

评论 9

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    进来直接看结论, 告辞 :neutral:

    ohoh7个月前 (09-21) Google Chrome 69.0.3497.92 Google Chrome 69.0.3497.92 Mac OS X  10.13.6 Mac OS X 10.13.6回复
    • RBQRBQ :neutral:

      LALA7个月前 (09-22) Google Chrome 67.0.3396.99 Google Chrome 67.0.3396.99 Windows 10 x64 Edition Windows 10 x64 Edition回复
  2. #2

    我装了半个小时,结尾你跟我说“告辞”?
    老子要跟你拼了!

    小爷7个月前 (09-22) Google Chrome 69.0.3497.100 Google Chrome 69.0.3497.100 Windows 10 x64 Edition Windows 10 x64 Edition回复
    • :grin: 我告辞了,你还可以继续表演,不影响。。

      LALA7个月前 (09-22) Google Chrome 67.0.3396.99 Google Chrome 67.0.3396.99 Windows 10 x64 Edition Windows 10 x64 Edition回复
    • 好喜欢这样滴博主 :oops:

      ohoh7个月前 (09-22) Google Chrome 69.0.3497.100 Google Chrome 69.0.3497.100 Mac OS X  10.13.6 Mac OS X 10.13.6回复
  3. #3

    执行 docker-compose up -d 的时候报错
    Creating mailcowdockerized_postfix-mailcow_1 … error
    ——————————————————————————————————————————————————————————————————————————
    ERROR: for postfix-mailcow Cannot start service postfix-mailcow: driver failed programming external connectivity on endpoint mailcowdockerized_postfix-mailcow_1 (27b3dc3d2e395746819474ae12b4c8e071af62f6038f1972d2cb5101d58145f2): Error starting userland proxy: listen tcp 0.0.0.0:25: bind: address already in use
    ERROR: Encountered errors while bringing up the project.

    mengyalei1个月前 (03-18) Google Chrome 72.0.3626.121 Google Chrome 72.0.3626.121 Windows 10 x64 Edition Windows 10 x64 Edition回复
    • 宿主机有程序占用了25端口?

      LALA1个月前 (03-18) Google Chrome 71.0.3578.98 Google Chrome 71.0.3578.98 Windows 10 x64 Edition Windows 10 x64 Edition回复
      • 是的,占用了25端口,我给释放出来,重新安装就可以了。VPS重启的时候,还是会那个错误,也是25号端口占用,还得手动释放,,,,。。应该是在安装docker前期要检查一些端口占用,或者是找到占用端口的程序给卸载掉吧,虽然我也是用纯净的Centos7X64系统。所以大佬有时间的话可以更新下你这个文章。 :!: 让后来的人少踏一些坑 :!:

        mengyalei1个月前 (03-19) Google Chrome 72.0.3626.121 Google Chrome 72.0.3626.121 Windows 10 x64 Edition Windows 10 x64 Edition回复
        • 我猜测是你的系统上装了postfix或者sendmail,先停止然后关闭开机自启应该就可以了:
          systemctl stop postfix
          systemctl stop sendmail
          systemctl disable postfix
          systemctl disable sendmail

          LALA1个月前 (03-19) Google Chrome 71.0.3578.98 Google Chrome 71.0.3578.98 Windows 10 x64 Edition Windows 10 x64 Edition回复

分享创造快乐

广告合作资源投稿