dsh/mailgo:caddy-cert-hot-reload
main
/admin/domains/{id}/edit
*.example.com
mail.example.com
internal/caddycert
caddy.data_dir
install.sh
setup-caddy-cert
mailgo-caddy-sync
/srv/mail_go/tls/caddy
install
[caddy] data_dir
internal/tlsutil
-race
sudo ./install.sh setup-caddy-cert
install.sh install
- 域名编辑页新增“从 Caddy 获取证书”按钮:一键把本机 Caddy 已签发的 证书与私钥导入该域名的 TLS 目录并自动启用 TLS,支持通配符证书 (如 *.example.com 可匹配 mail.example.com),成功/失败均回显横幅 - 新增 internal/caddycert:搜索 Caddy 证书存储(同步镜像目录优先、 caddy.data_dir 与常见位置兜底),校验密钥对/有效期/SAN,并给出 可操作的中文错误提示(未找到/证书无效/权限不足) - install.sh 新增 setup-caddy-cert:安装 root 权限的 systemd path+timer 同步任务(mailgo-caddy-sync),把 Caddy 证书树镜像到 /srv/mail_go/tls/caddy(证书续期后自动更新、每日兜底),另授予 ACL 作为直接读取兜底;install 时自动检测并配置 - 新增 [caddy] data_dir 配置节,支持自定义 Caddy 数据目录 - 新增 internal/tlsutil:TLS 证书热加载器,每次握手按需重载证书 文件(mtime 检测),重载失败继续使用旧证书兜底并节流重试; 应用于 SMTPS 465/IMAPS 993/POP3S 995 与 STARTTLS,导入或上传 新证书后无需重启服务即生效 - 证书来源动态切换:协议显式配置优先,否则取首个启用 TLS 且有证书 的域名(10 秒缓存),新域名一键导入证书后自动切换 - 更新 README 与界面文案(去掉“重启服务生效”提示)
No dependencies set.
The note is not visible to the blocked user.
功能
1. 管理后台一键从 Caddy 获取证书
/admin/domains/{id}/edit新增“从 Caddy 获取证书”按钮:一键把本机 Caddy 已签发的证书与私钥导入该域名的 TLS 目录,并自动启用 TLS;成功/失败均回显横幅*.example.com可匹配mail.example.com)internal/caddycert:搜索 Caddy 证书存储(同步镜像目录优先、caddy.data_dir与常见位置兜底),校验密钥对/有效期/SAN,失败时给出可操作的中文提示(未找到/证书无效/权限不足)install.sh新增setup-caddy-cert:安装 root 权限的 systemd path+timer 同步任务(mailgo-caddy-sync),把 Caddy 证书树镜像到/srv/mail_go/tls/caddy(证书续期后自动更新、每日兜底),另授予 ACL 作为直接读取兜底;install时自动检测并配置[caddy] data_dir配置节,支持自定义 Caddy 数据目录2. TLS 证书热加载(无需重启)
internal/tlsutil热加载器:每次 TLS 握手按需重载证书文件(mtime 检测),重载失败继续使用旧证书兜底并节流重试(成功后清零节流,连续更新立即生效)测试
internal/caddycert:7 个单元测试全过internal/tlsutil:6 个单元测试全过(含-race)备注
sudo ./install.sh setup-caddy-cert(install.sh install会自动检测并配置)