Docker安装EwoMail

在计算机领域, 我一直都有两个心底的梦想. 虽然很小, 很过时, 很基础, 但这也是一直让我不断前进的动力:


  • 建立自己的网站,并且能被百度检索到
  • 使用自己后缀的邮箱

为了这两个小想法, 我学习了Java SE, Java EE,Hiberanate, Springboot, Mybatis, Vue, 算法, 计算机网络, Linux……终于, 今天搞定了自己的邮箱服务器,可以稳定的使用和访问了! 回想历程, 还是颇为心酸.比如, 最先在不理解邮件收发过程时,只建立了SMTP服务器,只能发送邮件,不能接收.后来搭建dovecot却一直不能收件,再后来安装Ewomail,却要使用全新的服务器环境,考虑再三也没有重置服务器,而是选择了不太熟悉的docker来承载EwoMail,最后学会端口映射,Apache修改端口,nginx转发等等,才最终将域名和服务器对接成功,在服务器中互不干扰的发布不同的网站服务.

以上的每一个知识,内容都可以很深奥很底层,虽然我并没有掌握多么牢固,很容易过段时间就忘却脑后,但曾经一步一个脚印的尝试,搜索,学习,修改,经历很多次碰壁后,才摸索出正确的道路,理解其中具体的含义,这些历程却能一直刻印在我内心中,让我以后更加强大.

写下此篇的目的,除了感慨一下完成了幼时所向往的两大计算机任务外,还想详细的记录下搭建Docker中遇到的坑,给自己和他人提供一定帮助.

安装Docker中的EwoMail

我的docker还不是很熟悉,所以直接安装网上的标准流程来:

docker search EwoMail
docker pull bestwu/ewomail
docker run  -d -h mail.cyz.ink --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 8081:8081 -p 8080:8080 -p 8082:8082  -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

其中-p 8080:8081 是将docker的端口映射到服务器的端口,这样外网才能访问docker中的内容. -v是添加数据卷, –name是给docker起个名字, 后面直接docker start ewomail即可.

此时需要注意,如果docker使用了80端口映射,就容易与服务器中的nginx配置的80端口冲突,导致docker无法成功运行.

解决方法就是,修改Apache中的conf,比如该例子的设置步骤为:

- 先关闭nginx服务(ps -ef|grep nginx,kill #pid) 
- 发布docker 
- 进入docker的命令行(docker exec -it ewomail /bin/bash)
- 编辑conf文件: /ewomail/apache/conf/httpd.conf 
- 修改80端口为8080
- 编辑conf文件: /ewomail/apache/conf/extra/httpd.conf/ httpd-vhosts.conf
- 修改其中的端口为8081,8082(注意需在docker命令行中增加8080-8082的端口映射)
- 重启apacheservice httpd restart
- 修改服务器中的nginx,将邮件的服务端,客户端域名分别映射到8080:8082端口
- 运行nginx/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

EwoMail无法收发邮件

发送邮件几分钟后,邮箱显示10024端口 Connection Refused. 解决办法为:


- 修改 /etc/postfix/main.cf 这个配置文件 
- 把含有10024端口的一行注释掉
- 重启postfix service postfix reload

设置完即可~

做完回头看看,其实并不难,但难点在于:

  • 理解架构和运行原理
  • 遇到问题找到合适的解决办法

推荐使用Docker + EwoMail

这套组合非常适合搭建服务器,既不会对服务器既有的服务造成影响,服务器的服务也不会对docker造成影响,相比之下,官网推荐的重置服务器,也是有点太生硬了.

题外话

在看官网教程时,如何配置Apache仅仅是一句话带过,看得我非常迷茫.查找过资料后才知道,这些属于Apache的教程,ewomail只是整合到了一起,故不会把内容说的那么详细.当别人没提到的时候,可能对其他人只是基本操作,自己不懂罢了.