侧边栏壁纸
博主头像
LYMTICS

海纳百川,有容乃大

  • 累计撰写 45 篇文章
  • 累计创建 37 个标签
  • 累计收到 19 条评论

目 录CONTENT

文章目录

搭建专属邮件服务器

LYMTICS
2022-02-05 / 4 评论 / 1 点赞 / 158 阅读 / 2,288 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-02-16,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

搭建专属邮件服务器

原理

学习参考:

原理主要是学计算机网络的时候学习的几个TCP协议:SMTPPOPIMAP

  • SMTP(Simple Mail Transfer Protocol)传输&&发送邮件所使用的标准协议
  • IMAP(Internet Message Access Protocol):接收邮件使用的标准协议之一
  • POP3(Post Office Protocol 3):接收邮件使用的标准协议之一

POP3 和 IMAP 的区别就是:

  • POP3 你把邮件删除后,他还在邮件服务器里,只是你的客户端没有了
  • IMAP 会和邮件服务器做同步,删了就都没了

另外有几个术语:

  • MUA(Mail User Agent):接收邮件所使用的邮件客户端,使用IMAP或POP3协议与服务器通信;

  • MTA(Mail Transfer Agent) :通过SMTP协议发送、转发邮件

  • MDA(Mail Deliver Agent):将MTA接收到的邮件保存到磁盘或指定地方,通常会进行垃圾邮件及病毒扫描

  • MRA(Mail Receive Agent):负责实现IMAP与POP3协议,与MUA进行交互

关系如图:

常用的MUA有:outlook、thunderbird、Mac Mail、mutt;

常用的MTA服务有:sendmail、postfix;

常用的MDA有:procmail、dropmail;

常用的MRA有:dovecot

部分教学在上面提到的那个视频里有(也可以看出这部分内容教程比较少,坑比较多)

而我们用到的那个EwoMail,其实是把这几部分都整合一起了,不用你自己一个一个去整合

方案

由于这个EwoMail需要使用Centos系统(???),然后对系统的要求比较苛刻:

centos7/8系统 64位,服务器需要干净环境,要求全新干净系统,不能安装在已有的nginx,mysql的环境中。

然后在docker上一搜,发现有镜像,那就用docker-ewomail了

docker镜像部署

安装可以直接参考上面的流程,需要注意:

  1. 需要在阿里云等上面把相应的端口打开,另外端口也可以自行修改一下,这个是没有问题的
  2. 文档里最后一行代码是 bestwu/ewomailserver ,应该是作者打错了,修改一下就好
  3. 需要修改域名
docker run  -d -h mail.example.cn --restart=always \
  -p 25:25 \
  -p 109:109 \
  -p 110:110 \
  -p 143:143 \
  -p 465:465 \
  -p 587:587 \
  -p 993:993 \
  -p 995:995  \
  -p 80:80 \
  -p 8080:8080 \
  -v `pwd`/mysql/:/ewomail/mysql/data/ \
  -v `pwd`/vmail/:/ewomail/mail/ \
  -v `pwd`/ssl/certs/:/etc/ssl/certs/ \
  -v `pwd`/ssl/private/:/etc/ssl/private/ \
  -v `pwd`/rainloop:/ewomail/www/rainloop/data \
  -v `pwd`/ssl/dkim/:/ewomail/dkim/ \
  --name ewomail bestwu/ewomail

此时如果浏览器相应端口可以打开就好了

DNS

配置DNS,这个是固定的,可以参考官方文档的说明

值得一提的是那个DKIM,如果报错了,可能需要等一段时间再重试才能好

一个问题

你在安装的过程中,如果出现问题,那个邮件是发不出去的,会有一个回信,类似:

image

通过判断这个邮件的发送方,可以方便你排错

另外,如果你用Docker进行安装,极有可能遇到如下的错误:

image

把上面红色部分加上关键词ewomail、docker,并用搜索引擎进行搜索,很容易搜到相关的原因和解决方法:

  • 错误原因: 10024端口跑的服务主要用于ewomail中反垃圾反病毒作用,然而docker镜像中没有集成,所以会无法接收到邮件

  • 解决方法:
    注释/etc/postfix/main.cf中的(基本属于此问题)

    content_filter = smtp-amavis:[127.0.0.1]:10024
    # 下面这个可能没有,我这里就没有找到
    receive_override_options = no_address_mappings
    

    一定要重启一下镜像,不然不会生效(我就是躺在这里躺了很久)

SSL

一般情况下,做好上面的步骤就可以使用了,不会注意到SSL的问题,但是最近由于这个SSL反而翻车了,并且Debug好久才想明白问题的所在。

先说SSL怎么配置:

可以参考SSL证书更换,先在腾讯云申请一个SSL证书,然后按照文档里的要求,用 xxx.keyxxx.pem 分别替换私钥和公钥(名称保持不变即可),然后就好啦,最后再重启一下Docker

再说说我遇到的问题:

  1. 在Outlook等软件中会提示服务器不可信
  2. 部分场景无法使用,比如Halo后台,发送邮件会报错,而且不好Debug到,参考我在社区提的问题:SMTP 无法使用 - Halo 社区

另外

  • 如果你有多个域名,那么多个域名都是可以使用的,直接在管理系统和DNS里设置就行,无需敲代码设置(域名单独备案即可)
  • 这样也就是自己折腾玩一下,如果要自己使用的话,就要保证服务器随时在线了,不然漏过了什么重要的邮件就。。。。
    而且域名也得一直持有着,不然一换域名绑定邮箱不能验证了就很狗。。。
  • 想要私有域名其实还可以采用企业邮的方式,很便捷,不过自由度似乎有些低。
1

评论区