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:
LALA
我什么都不卖了,告辞!
最新评论
5211314
能不能教我 一点不会