由于mailcow自带的SOGO界面不美观,直接正常使用SnappyMail又没有自带的SOGO丝滑,于是一气之下,我使用Chat GPT做了这么个优化包,实现了对接管/SOGo/so的接管。并且使用我调用GPT改编的Proxy Auth这一SnappyMail插件和自主调用GPT编写的mailcow-session-sync这一SnappyMail插件,使mailcow和SnappyMail的登录状态被打通,并做了一系列优化,实测了多种场景,确保SnappyMail和原配的sogo一样丝滑。相较于sogo,SnappyMail的优点不用我多说吧?
现已将该优化包开源至GitHub,链接如下:https://github.com/lgs1007/mailcow-snappymail-integration 求一点鸡腿和点赞应该不过分吧?
接下来是安装教程(其实https://github.com/lgs1007/mailcow-snappymail-integration/blob/main/docs/INSTALL.zh-CN.md 有):
安装指南
目标:将 SnappyMail 2.38.2 部署为 mailcow Docker 网络中的单独容器。路径仅为示例;请根据你的部署环境进行调整。
1. SnappyMail 容器
可以将 examples/docker-compose.snappymail.yml 作为起点。它有意不对外发布宿主机端口。关键配置包括:
- 加入
mailcowdockerized_mailcow-network网络; - 持久化
/var/lib/snappymail; - 以只读方式挂载
/opt/mailcow-dockerized/data/conf/sogo/sieve.creds至/run/secrets/mailcow-sieve-creds。
2. 安装插件
将目录复制到:
/opt/snappymail/data/_data_/_default_/plugins/proxy-auth/
/opt/snappymail/data/_data_/_default_/plugins/mailcow-session-sync/
将 proxy-auth-mailcow-dynamic 的内容用于 proxy-auth 目录。请保留目录名为 proxy-auth,因为 SnappyMail 使用这个插件键名。
在 SnappyMail 管理后台 → 扩展中,启用两个插件。
3. SnappyMail 域名配置
为你的 mailcow 部署配置每个真实邮件域。测试环境还要求存在 mailcow.local,这样在登录时 ProxyAuth 登录表单 [email protected]*[email protected] 才能解析。
当 SnappyMail 与 mailcow 共享 Docker 网络时,常见的内部端点如下:
- IMAP:
dovecot:143,STARTTLS - SMTP:
postfix:587,STARTTLS - SIEVE:
dovecot:4190,STARTTLS
请使用你已验证过的 TLS/安全配置。
4. Proxy Auth 设置
配置如下:
Master User Separator: *
Header Name: Remote-User
Check Proxy: enabled
Proxy IPNet: 最窄的受信任反向代理 IP 或 CIDR
Automatic Login: enabled
静态 Master User / Password 仍然保留为回退设置。修改后的插件会优先使用当前只读挂载的 sieve.creds 中的值,用于每次 ProxyAuth 登录。
5. Nginx
复制:
nginx/site.mailcow-auth.custom
-> /opt/mailcow-dockerized/data/conf/nginx/site.mailcow-auth.custom
nginx/site.snappymail.custom
-> /opt/mailcow-dockerized/data/conf/nginx/site.snappymail.custom
然后在重启前先验证:
cd /opt/mailcow-dockerized
docker compose exec nginx-mailcow nginx -t
docker compose restart nginx-mailcow
6. 验证
至少测试以下几项:
- mailcow A + SnappyMail guest → 自动登录为 A。
- mailcow A + SnappyMail A → 不发生切换。
- mailcow 从 A 切换到 B → SnappyMail 会在本地注销 A,并让 ProxyAuth 进入 B。
- mailcow 注销登录 → SnappyMail 会关闭会话并浏览器返回
/。 - 额外账号选择不会更改主账号比较结果。
/mail/?admin不受 session-sync 影响。- 重启 Dovecot 以让
sieve.creds轮换;下一次 ProxyAuth 登录仍然成功,而不需要重启 SnappyMail。
在 mailcow 或 SnappyMail 升级后,在投入生产前请重复这些测试。
把这个提给mailcow试试看
@hawasu #1 我写了免责声明的
感谢分享