5 分钟部署完整邮件服务器

原因

  1. 最初的原因是我想好好的使用 emacs 来收邮件
  2. 我本来是想使用 offlineimap 来先下载,然后通过 emacs 进行操作,这样是最快的,但 offlineimap 下载后我不知道如何能做成服务的形式,供不同的设备进行操作。
  3. 接着的原因使 emacs 收邮件慢最大的问题是网络连接慢,比如 gmail 即使翻墙还经常报错
  4. 还有一层慢的原因是邮箱多了,连接方式太多

总之, 在看了各种资料后,觉得还是邮件代收比较靠谱,但代收我又不想使用其他的邮件提供者,大部分基于邮件被拦,邮箱容量,无法完全操控等等原因,因此觉得还是自建吧。

自建最好支持 imap,这样在任何一个客户端中操作后,都会同步到其他的客户端。

于是,我就开始倒腾 mailu1了。

此处大约过了 3 分钟了。

安装

wget https://mailu.io/_downloads/docker-compose.yml
wget https://mailu.io/_downloads/.env

修改.env 中的相关变量,比如邮件保存的地址,,前端,域名,tls 等然后

docker-compose up -d

安装就完成了。为了创建一个管理帐号,先在命令行下手动创建

docker-compose run --rm admin python manage.py admin root example.net password

此处大约又过了 2 分钟了。

结束

安装已经结束了。对于很多人而言,整个系统就已经可以用了,在我这边还有些问题。

nginx 反向代理 ssl 的问题

我使用的使 let’s encrypted 的证书,前端的 nginx 上部署了证书,所以在 front 部分的那个 ssl 就无用途了,但邮件的 143 等端口也要用该证书。443 就更不用说了,这样虽然没有什么问题,但我一台服务器的 443 端口绑了好几个走 https 的域名,因此,后台反射的代理必须地址必须指向 80 的非加密监听地址上。TLS_FLAVOR 部分也仅仅设置成了 mail.由此引发了第二个问题。

nginx 反向代理跳转 url 不正确

前端代理写好后,url 一访问就默认跳转到//localhost 开头的了。而且不带端口。这个问题可以覆盖 front 下的/conf/nginx.conf 文件来解决,就是将 docker image 中的/etc/nginx.conf 中的$host 变量修改为$http_host,这样即使是特殊端口也跳转正确了。

邮件客户端的设置

推荐 imap 的方式,接收服务器和发送服务器都是指定的域名,账户名是用户名带域名后缀的。接收没有什么问题,关键使发送。发送的 SMTP 要求验证,端口为 465 SSL/TLS (outlook2006), evolution 的发送部分为专用端口的 SSL,检查支持的类型为 PLAIN

webmail 等入口

  1. 域名/webmail 为 webmail 入口
  2. 域名/admin 为管理入口

let’s encrypt 证书的问题

outlook2006 未提示,evolution 则提示是否信任证书,wordpress 的 phpmail 更是直接报错(我用的使 docker 镜像部署),这个可能是 let’s encrpt 证书的问题2,未做深究 wordpress 搜索”$phpmailer = new PHPMailer( true );”,然后添加下面的代码3

$phpmailer->SMTPOptions = array(
            'ssl' => array(
                'verify_peer' => false,
                'verify_peer_name' => false,
                'allow_self_signed' => true
            )
        );

发表评论

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

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据