Podman部署WildDuck邮件服务器

WildDuck是一个开源邮件服务器软件,它不依赖postfix+dovecot,完全是用自己的代码实现的,数据存储用的是mongodb。

开始部署之前你需要添加两个解析记录,一个A记录一个MX记录这些就不多说了。

这里我使用podman来部署,如果你不想用podman也可以换成docker,两者都是兼容的。

系统debian10,安装podman,首先添加源:

apt -y update  apt -y install curl  echo 'deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/Debian_10/ /' > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list  curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/Debian_10/Release.key | apt-key add -

安装:

apt -y update  apt -y install podman

安装podman-compose:

curl -o /usr/local/bin/podman-compose https://raw.githubusercontent.com/containers/podman-compose/devel/podman_compose.py  chmod +x /usr/local/bin/podman-compose

因为后续部署需要用到ssl证书,为了方便起见在宿主机安装一个certbot+nginx。

apt -y install nginx python-certbot-nginx

然后新建一个nginx站点配置文件:

nano /etc/nginx/conf.d/mail.imlala.best.conf

写入如下配置即可:

server {        listen 80;        server_name mail.imlala.best; # 换成你的域名        root /var/www/mailserver/;  }

然后用certbot的web模式去签发ssl证书,这样就可以做到自动续签ssl证书:

certbot --nginx --agree-tos --no-eff-email --email [email protected]

接下来新建需要用到的目录:

mkdir -p /opt/podman-wildduck  mkdir -p /opt/podman-wildduck/mongodb_data redis_data

进到目录新建一个docker-compose.yml:

cd /opt/podman-wildduck && nano docker-compose.yml

写入如下配置(需要改动的地方写了注释:)

version: "3"    services:      mail:          image: astzweig/wildduck          ports:              - "25:25"              - "5438:443"              - "465:465"              - "993:993"                    networks:              - backend              - frontend          volumes:              - /etc/letsencrypt/live/mail.imlala.best/fullchain.pem:/etc/tls-keys/pub.pem:ro # 证书路径换成你自己的              - /etc/letsencrypt/live/mail.imlala.best/privkey.pem:/etc/tls-keys/prv.pem:ro # 证书路径换成你自己的              - mailconfig:/etc/nodemailer          depends_on:              - redis              - mongo          environment:              - FQDN=mail.imlala.bes # 换成你的域名              - MAIL_DOMAIN=imlala.best # 换成你的域名              - TLS_KEY=/etc/tls-keys/prv.pem              - TLS_CERT=/etc/tls-keys/pub.pem              - API_USE_HTTPS=true              - API_URL=https://mail.imlala.best:5438 # 换成你的域名              - API_TOKEN_SECRET=password # 自己随便输一个密码        redis:          image: redis:alpine          volumes:              - ./redis_data:/data          networks:              - backend            mongo:          image: mongo          volumes:              - ./mongodb_data:/data/db          networks:              - backend    networks:      backend:      frontend:    volumes:      mailconfig:

确认无误后up起来即可:

podman-compose -f docker-compose.yml up -d

由于这个邮件服务器是没有GUI的,官方的那个webmail好像没开源?所以很多操作只能通过调用api来进行。

例如创建一个邮箱账号:

curl -i -XPOST https://mail.imlala.best:5438/users?accessToken=password   -H 'Content-type: application/json'   -d '{    "username": "imlala",    "password": "password",    "name": "imlala",    "address": "[email protected]",    "tags": [      "status:regular_user",      "subscription:business_big"    ]  }'

注:

1.accessToken=后面的值要和你在docker-compose.yml内配置的API_TOKEN_SECRET变量一致。

2.更多api调用方法:https://docs.wildduck.email/api/

dkim签名配置,首先编辑如下配置文件:

nano /var/lib/containers/storage/volumes/podman-wildduck_mailconfig/_data/wildduck/dkim.toml

这行的false改为true:

signTransportDomain=true

然后看下容器的ID或者NAME:

podman-compose ps

例如我的是:

using podman version: podman version 2.0.4  podman ps -a --filter label=io.podman.compose.project=docker-wildduck  CONTAINER ID  IMAGE                               COMMAND               CREATED      STATUS          PORTS                                      NAMES  0cbb29dddb47  docker.io/astzweig/wildduck:latest  /bin/sh -c ${SCRI...  2 hours ago  Up 2 hours ago  0.0.0.0:5438->443/tcp, 0.0.0.0:25->25/tcp  docker-wildduck_mail_1  3998df6428b4  docker.io/library/mongo:latest      mongod                2 hours ago  Up 2 hours ago  0.0.0.0:5438->443/tcp, 0.0.0.0:25->25/tcp  docker-wildduck_mongo_1  754e38d65b02  docker.io/library/redis:alpine      redis-server          2 hours ago  Up 2 hours ago  0.0.0.0:5438->443/tcp, 0.0.0.0:25->25/tcp  docker-wildduck_redis_1

生成密匙对:

podman exec -it 0cbb29dddb47 generate_dkim

然后会问你要签发的域名,在后面输入你的域名回车即可:

之后去添加你的DKIM解析记录即可。

使用的话,因为没有webmail,这里你可以选择用客户端,例如foxmail来登录:

验证成功之后,按下图配置即可,注意端口号IMAP是993,SMTP是465:

赞(0)
未经允许不得转载:荒岛 » Podman部署WildDuck邮件服务器
分享到: 更多 (0)

评论 抢沙发

评论

发表评论

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