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

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 xxxxx@qq.com

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

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": "imlala@imlala.best",
  "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:

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

评论 6

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

    大佬,可以发一份OpenLiteSpeed+Chevereto的代码给我可以吗?不想开那么多服务器,有点浪费。谢谢~!邮箱:shishi@foliage.top

    Foliage3个月前 (08-19) Google Chrome 84.0.4147.125 Google Chrome 84.0.4147.125 Windows 10 x64 Edition Windows 10 x64 Edition回复
    • 没明白你的意思,chevereto免费版开源的不是在github上就能下载吗?

      LALA3个月前 (08-21) Google Chrome 83.0.4103.116 Google Chrome 83.0.4103.116 Windows 10 x64 Edition Windows 10 x64 Edition回复
      • OpenLiteSpeed+Chevereto,看图:http://149.28.28.81:4000/s/RE3TPfowjLZX55F
        求这代码,请发我邮箱:shishi@foliage.zone
        谢谢~!

        Foliage3个月前 (08-21) Google Chrome 84.0.4147.135 Google Chrome 84.0.4147.135 Windows 10 x64 Edition Windows 10 x64 Edition回复
      • 大佬看这里看这里

        Foliage3个月前 (08-23) Chrome 84.0.4147.122 Chrome 84.0.4147.122 iPhone iOS 13.6 iPhone iOS 13.6回复
        • 这个环境我早就没了。。而且就算有的话也不好发吧,虽然openlitespeed上的面板配置实际上都在后台以conf的格式保存,但是你拿来也不能直接用的,还是要修改。。没多大意义。。

          LALA3个月前 (08-24) Google Chrome 83.0.4103.116 Google Chrome 83.0.4103.116 Windows 10 x64 Edition Windows 10 x64 Edition回复
          • 要不我把机器发你,你帮弄一下可以吗?我的机器上已经安装了openlitespeed面板,面板里有WordPress和V2ray,可以帮我把chevereto装到面板吗? :!:

            Foliage3个月前 (08-24) Google Chrome 84.0.4147.135 Google Chrome 84.0.4147.135 Windows 10 x64 Edition Windows 10 x64 Edition

分享创造快乐

广告合作资源投稿