kevin
|
3f28ec20f4
|
fix(security): 修复 P2 中危项(cookie/协议限速/路径遍历/默认口令/中继TLS/安全头/信息泄露)
- 会话 cookie 增加 Secure 标志;新增 [web].cookie_secure 配置
(默认 true,仅本地 HTTP 调试关闭;缺失字段按安全默认处理)
- SMTP/IMAP/POP3 认证接入封禁体系(store.RecordAuthFailure 与 Web
共用 ban_entries):失败计数达 ban.max_fail_attempts 即封禁 IP,
已封禁 IP 拒绝认证,堵住协议层暴力破解
- 附件存储路径遍历防护重写:FullPath 白名单校验(UUID 文件名格式)
+ baseDir 前缀兜底,非法路径返回错误;Save 扩展名白名单化
- 初始管理员不再使用 admin/admin:密码取 MAILGO_ADMIN_PASSWORD 或
随机生成并打印一次;新增 MustChangePassword 首登强制改密
(管理员重置密码同样触发)
- 外发中继默认验证 TLS 证书(保护 AUTH 凭据,防 MITM),直投 MX
保持机会式 TLS;新增 outbound.relay_tls_insecure 开关(默认 false)
- 新增安全响应头中间件:HSTS、X-Frame-Options DENY、nosniff、
Referrer-Policy、基础 CSP(frame-ancestors 'none' 防点击劫持,
connect-src/form-action 'self' 防数据外泄)
- LDAP/OAuth 登录错误统一为通用文案,原始错误只写日志,
不再回显邮箱/内部细节(防用户枚举与信息泄露)
- 新增 25 个回归测试:cookie 标志、封禁阈值、路径遍历用例、
中继 TLS 验证(自签证书 STARTTLS 集成)、安全头、OAuth 文案
部署注意:升级后所有会话失效需重新登录;若直接以 HTTP 提供
服务需显式配置 cookie_secure = false。
|
2026-08-19 16:45:21 +08:00 |
|
dsh
|
f0b9ad3e6f
|
feat: 管理后台一键从 Caddy 获取证书 + TLS 证书热加载
- 域名编辑页新增“从 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 与界面文案(去掉“重启服务生效”提示)
|
2026-08-16 23:39:43 -04:00 |
|
kevin
|
59719586a1
|
修复部分功能
|
2026-06-02 20:33:08 +08:00 |
|
kevin
|
bd56c4dc5f
|
完善tls配置
|
2026-06-02 18:47:28 +08:00 |
|
kevin
|
9e50d05e71
|
一阶段ok
|
2026-06-01 18:59:55 +08:00 |
|