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

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 imlala@example.com
docker exec -it maddy maddy imap-acct create imlala@example.com

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

入口点是这样的:

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

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

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

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

赞(0)
未经允许不得转载:荒岛 » Docker安装Maddy Mail Server
分享到: 更多 (0)

评论 4

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

    maddy有默认自带的邮件客户端吗?怎么发邮件呢?

    张墨轩12个月前 (04-13) Google Chrome 111.0.0.0 Google Chrome 111.0.0.0 Mac OS X  10.15.7 Mac OS X 10.15.7回复
    • 前提是你有25才能发邮件,其次手机自带的邮件客户端都可以使用。

      Foliage12个月前 (04-14) Chrome 112.0.5615.46 Chrome 112.0.5615.46 iPhone iOS 16.4 iPhone iOS 16.4回复

分享创造快乐

广告合作资源投稿