一个只会对着文档安装的小白
欢迎大神进群交流

Docker安装Maddy Mail Server

最近需要用到smtp服务,想了下自建还是maddy最简单、方便。遂用docker搭建了一个,记录下过程。

以前我也写过一篇手动安装的文章,如有需要可以在本博客搜索下,这里就不多说了。

下面使用的是官方的image,但整个配置步骤与官方文档有一些出入,因为我个人觉得官方的方法略繁琐。

按官方文档走的话,容器不能一次性启动完成,第一次启动肯定是失败的,得等到你把tls证书加载好再重启一遍容器才行,个人觉得不太优雅。。另外官方用的是命名卷,备份起来没有直接挂载主机目录方便,所以我改了下配置。

安装docker

apt -y update  apt -y install curl nginx python3-certbot-nginx  curl -fsSL https://get.docker.com -o get-docker.sh  sh get-docker.sh

新建docker-compose.yml:

mkdir -p /opt/maddy && cd /opt/maddy && nano docker-compose.yml

写入如下配置:

version: '3.7'    services:    maddy:      image: foxcpp/maddy:0.6      container_name: maddy      restart: unless-stopped      ports:        - "25:25"        - "143:143"        - "465:465"        - "587:587"        - "993:993"      volumes:        - ./maddy-data:/data

创建maddy-data目录:

mkdir maddy-data

然后在maddy-data目录里面下载一个maddy.conf配置文件:

curl -L https://raw.githubusercontent.com/foxcpp/maddy/master/maddy.conf.docker -o maddy-data/maddy.conf

编辑maddy.conf:

nano maddy-data/maddy.conf

里面有很多配置,但实际上没有多少需要改动的,只需要注意下面这些配置:

$(hostname) = {env:MADDY_HOSTNAME}  $(primary_domain) = {env:MADDY_DOMAIN}  $(local_domains) = $(primary_domain)    tls file /data/tls/fullchain.pem /data/tls/privkey.pem

将其修改为:

$(hostname) = mx1.example.com  $(primary_domain) = example.com  $(local_domains) = $(primary_domain)    tls file /data/fullchain.pem /data/privkey.pem

现在准备tls证书,在刚才安装docker的时候我们一并安装了nginx和certbot,所以下面就利用这两个软件来申请证书。

首先新建一个nginx配置文件:

nano /etc/nginx/sites-available/maddy

写入如下配置:

server {      listen 80;      server_name mx1.example.com;  }

启用新的配置:

ln -s /etc/nginx/sites-available/maddy /etc/nginx/sites-enabled/maddy

签发证书:

certbot --nginx

完成之后将证书和密钥复制到对应的路径:

cp /etc/letsencrypt/live/mx1.example.com/fullchain.pem /opt/maddy/maddy-data/fullchain.pem  cp /etc/letsencrypt/live/mx1.example.com/privkey.pem /opt/maddy/maddy-data/privkey.pem

启动:

docker compose up -d

创建账号:

docker exec -it maddy maddy creds create [email protected]  docker exec -it maddy maddy imap-acct create [email protected]

简单说下为什么这么改容器也能正常运行,首先我看了下官方的dockerfile:https://Github.com/foxcpp/maddy/blob/master/dockerfile

入口点是这样的:

ENTRYPOINT ["/bin/maddy", "-config", "/data/maddy.conf"]

也就意味着,程序默认用/data/maddy.conf这个配置文件启动服务,那我直接在主机准备一个maddy.conf挂载进去不就可以了。

再加上官方提供的环境变量有限,还不如直接编辑配置文件方便。

这篇文章是我于2023年1月25日写的,但是一直放在草稿里面没有发布。。今天重新搭建测试了一遍,确定这样配置是没问题的,就发出来了:

Docker安装Maddy Mail Server

赞(0)
未经允许不得转载:PEAKM BLOG » Docker安装Maddy Mail Server

评论 抢沙发

登录

找回密码

注册