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

使用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了,告辞~

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

评论 19

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

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

    ohoh6年前 (2018-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:

      LALA6年前 (2018-09-22) Google Chrome 67.0.3396.99 Google Chrome 67.0.3396.99 Windows 10 x64 Edition Windows 10 x64 Edition回复
  2. #2

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

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

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

      ohoh6年前 (2018-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.

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

      LALA5年前 (2019-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系统。所以大佬有时间的话可以更新下你这个文章。 :!: 让后来的人少踏一些坑 :!:

        mengyalei5年前 (2019-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

          LALA5年前 (2019-03-19) Google Chrome 71.0.3578.98 Google Chrome 71.0.3578.98 Windows 10 x64 Edition Windows 10 x64 Edition回复
  4. #4

    大佬,我按照这个教程搭建的邮箱系统,使用SMTP的方式发送邮件,持续运行了好几月都很正常,结果今天就无法正常发送了。麻烦大佬帮忙我看下原因,可以有偿解决的。报错日志如下:
    2019/5/3 下午5:36:26 info 9D1B944411: to=, relay=none, delay=65693, delays=65542/0.08/151/0, dsn=4.4.1, status=deferred (connect to 163mx02.mxmail.netease.com[220.181.14.150]:25: Connection timed out)
    2019/5/3 下午5:36:26 info connect to 163mx02.mxmail.netease.com[220.181.14.150]:25: Connection timed out
    2019/5/3 下午5:36:26 info 0322744403: to=, relay=none, delay=67162, delays=67012/0.08/151/0, dsn=4.4.1, status=deferred (connect to 163mx01.mxmail.netease.com[220.181.14.137]:25: Connection timed out)
    2019/5/3 下午5:36:26 info connect to 163mx01.mxmail.netease.com[220.181.14.137]:25: Connection timed out
    2019/5/3 下午5:35:56 info connect to 163mx02.mxmail.netease.com[220.181.14.145]:25: Connection timed out
    2019/5/3 下午5:35:56 info connect to 163mx03.mxmail.netease.com[220.181.14.160]:25: Connection timed out
    2019/5/3 下午5:35:32 info E695044442: to=, relay=none, delay=62639, delays=62542/0.06/97/0, dsn=4.4.1, status=deferred (connect to alt2.gmail-smtp-in.l.google.com[209.85.144.26]:25: Connection timed out)
    2019/5/3 下午5:35:32 info connect to alt2.gmail-smtp-in.l.google.com[209.85.144.26]:25: Connection timed out
    2019/5/3 下午5:35:26 info connect to 163mx02.mxmail.netease.com[220.181.14.155]:25: Connection timed out
    2019/5/3 下午5:35:26 info connect to 163mx02.mxmail.netease.com[220.181.14.150]:25: Connection timed out
    2019/5/3 下午5:35:02 info connect to alt1.gmail-smtp-in.l.google.com[2607:f8b0:4002:c08::1a]:25: Network is unreachable
    2019/5/3 下午5:35:01 info connect to alt1.gmail-smtp-in.l.google.com[64.233.177.26]:25: Connection timed out
    2019/5/3 下午5:34:57 info 273194440A: to=, relay=none, delay=66038, delays=65975/0.1/62/0, dsn=4.4.1, status=deferred (connect to outlook-com.olc.protection.outlook.com[104.47.32.33]:25: Connection timed out)
    2019/5/3 下午5:34:57 info connect to outlook-com.olc.protection.outlook.com[104.47.32.33]:25: Connection timed out
    2019/5/3 下午5:34:56 info connect to 163mx02.mxmail.netease.com[220.181.14.154]:25: Connection timed out
    2019/5/3 下午5:34:56 info connect to 163mx02.mxmail.netease.com[220.181.14.155]:25: Connection timed out
    2019/5/3 下午5:34:31 info connect to gmail-smtp-in.l.google.com[2607:f8b0:4003:c19::1a]:25: Network is unreachable
    2019/5/3 下午5:34:30 info connect to gmail-smtp-in.l.google.com[209.85.235.26]:25: Connection timed out
    2019/5/3 下午5:34:27 info connect to outlook-com.olc.protection.outlook.com[104.47.33.33]:25: Connection timed out
    2019/5/3 下午5:34:26 info connect to 163mx02.mxmail.netease.com[220.181.14.145]:25: Connection timed out
    2019/5/3 下午5:34:26 info connect to 163mx02.mxmail.netease.com[220.181.14.146]:25: Connection timed out

    mengyalei5年前 (2019-05-03) Google Chrome 72.0.3626.121 Google Chrome 72.0.3626.121 Windows 10 x64 Edition Windows 10 x64 Edition回复
    • 看这个日志应该是你的服务器网络方面出了问题,是你的服务器连不上别人的邮件服务器,看看防火墙之类的设置?

      LALA5年前 (2019-05-04) Google Chrome 72.0.3626.121 Google Chrome 72.0.3626.121 Windows 10 x64 Edition Windows 10 x64 Edition回复
      • 应该是25端口被封了。。。。

        mengyalei5年前 (2019-05-05) Google Chrome 72.0.3626.121 Google Chrome 72.0.3626.121 Windows 10 x64 Edition Windows 10 x64 Edition回复
  5. #5

    请问下大佬,如何设置这个docke里面的发送邮件时间间隔呢?比如说我要一次性发50封邮件,每封邮件间隔5秒发送。希望大佬看到的时候可以帮忙说下,当然喜欢接受有偿解决! :wink:

    mengyalei5年前 (2019-05-28) Google Chrome 74.0.3729.169 Google Chrome 74.0.3729.169 Windows 10 x64 Edition Windows 10 x64 Edition回复
    • = =。。。我无法解决。。。

      LALA5年前 (2019-05-28) Google Chrome 72.0.3626.121 Google Chrome 72.0.3626.121 Windows 10 x64 Edition Windows 10 x64 Edition回复
  6. #6

    卧槽我搞了半个小时居然说 告辞? !!!1

    南黎4年前 (2020-01-30) Google Chrome 80.0.3970.5 Google Chrome 80.0.3970.5 Windows 10 x64 Edition Windows 10 x64 Edition回复
    • 233

      LALA4年前 (2020-01-30) Google Chrome 76.0.3809.132 Google Chrome 76.0.3809.132 Windows 10 x64 Edition Windows 10 x64 Edition回复
  7. #7

    大佬可以帮我看一下吗,我之前装poste是好使的,但我想要一个calendar的功能找到了mailcow,但是邮件总是发不出去。
    This is the mail system at host mail.xxx.com.

    ####################################################################
    # THIS IS A WARNING ONLY. YOU DO NOT NEED TO RESEND YOUR MESSAGE. #
    ####################################################################

    Your message could not be delivered for more than 4 hour(s).
    It will be retried until it is 5 day(s) old.

    For further assistance, please send mail to postmaster.

    If you do so, please include this problem report. You can
    delete your own text from the attached returned message.

    The mail system

    : Host or domain name not found. Name service error for
    name=163.com type=MX: Host not found, try again
    为什么这里显示找不到163.com的host,别的邮箱也收不到邮件,我得到的回应也是找不到他们各自的host

    caii2年前 (2022-06-22) Google Chrome 103.0.0.0 Google Chrome 103.0.0.0 Windows 10 x64 Edition Windows 10 x64 Edition回复
  8. #8

    我跟到最后一步才看到告辞啊啊啊啊啊,那博主你最后用的什么呢?你推荐用什么邮件服务器呢?

    lala小魔仙3个月前 (12-27) Google Chrome 120.0.0.0 Google Chrome 120.0.0.0 Windows 10 x64 Edition Windows 10 x64 Edition回复

分享创造快乐

广告合作资源投稿