删除垃圾

Signed-off-by: 吴文峰 <kevin@lmve.net>
This commit is contained in:
2026-06-02 20:49:03 +08:00
parent c7f466c99b
commit 0545a71ba2
3 changed files with 0 additions and 140 deletions
-25
View File
@@ -1,25 +0,0 @@
# 2026-06-01
## MailGo v3.1 增量更新
- **域名表单 TLS 端口自动切换**domain_form.html 增加 JS `togglePorts()`,勾选 TLS 自动切换 SMTP 25→465、IMAP 143→993、POP3 110→995
- **管理后台邮件可点击查看**admin/mails.html 邮件行改为可点击跳转 `/admin/mails/:id`
- **新增 AdminViewMail handler + admin/mail_view.html 模板**:管理员可查看任意用户邮件详情
- **新增 AdminDownloadAttachment handler + 路由**:管理员可下载任意用户附件(绕过归属校验)
- **AdminHandler 新增 storage 依赖**`NewAdminHandler(stores, attStorage)` 签名变更
## MailGo README 编写
- 创建 `README.md`,包含:功能特性、快速开始、完整配置参考、5 个常见配置场景(MySQL 切换、Unix Socket、TLS、OAuth2、LDAP)、端口速查、目录结构、Linux systemd 部署、DNS 配置、技术栈、默认账户
## MailGo 安装脚本
- 创建 `install.sh`,参考 portal_page 脚本适配 MailGo
- 服务名 mail_goGit 仓库 https://git.lmve.net/kevin/mailgo.git
- CGO_ENABLED=1mattn/go-sqlite3 依赖)
- 部署模板目录 internal/web/templates/ + admin/ 子目录
- systemd 增加 AmbientCapabilities=CAP_NET_BIND_SERVICE(绑定 25/465 等特权端口)
- 附件目录 /srv/mail_go/attachments/
## MailGo 邮件处理 Bug 修复
- **RFC 2047 地址解码**SMTP Data() 和 IMAP CreateMessage() 中 From/To/Cc 从 `header.Get()` 改为 `mailutil.FormatAddressList()`(内部用 `header.AddressList()` 自动解码 RFC 2047 编码的中文名等)
- **charset 转码**:新增 `internal/mailutil/codec.go``DecodeCharset()` 检测 Content-Type charset 参数,用 `golang.org/x/text/encoding/htmlindex` 将 gb2312 等非 UTF-8 编码转 UTF-8
- **原始邮件数据保留**:Message 模型新增 `RawData` 字段(`type:mediumtext`),SMTP/IMAP 接收时存原始邮件;IMAP `buildRawMessage()` 优先使用 RawData,降级才从字段重建
- **邮件显示修复**:HTML 邮件改用 `<iframe srcdoc sandbox>` 隔离渲染,防止 Outlook 等邮件的嵌套 `<html><body>` 标签破坏页面 DOM 结构导致内容不显示
-46
View File
@@ -1,46 +0,0 @@
# MailGo 项目记忆
## 技术栈
- Go + Gin + html/template + GORM + SQLite(default)/MySQL
- SMTP: github.com/emersion/go-smtp
- IMAP: github.com/emersion/go-imap v1 (NOT v2 beta)
- POP3: 手写TCP协议实现
- 配置: TOML (github.com/BurntSushi/toml)
- 会话: github.com/gin-contrib/sessions (cookie store)
- 密码: golang.org/x/crypto/bcrypt
## 关键架构决策
- 模板采用自包含+子模板模式(Go html/template不支持变量模板名)
- 每个模板是完整HTML文档,通过 {{template "styles" .}} 和 {{template "navbar" .}} 引入公共部分
- Handler调用 c.HTML(200, "define_name", data)define_name 对应模板名
- SMTP TLS: 创建独立Server实例设置 TLSConfig
- Windows路径回退: ./win/etc/mail_go 和 ./win/srv/mail_go
- 默认管理员: admin@example.com / admin
## 增强功能(v2
- DKIM: 创建域名时自动生成RSA 2048密钥对,DNS提示页显示DKIM TXT记录,internal/dkim/keys.go
- 域名编辑: /admin/domains/:id/edit,可改端口/TLS/重新生成DKIM
- 附件配额: 上传时检查用户QuotaBytes,同步更新UsedBytesSMTP收信也更新
- 富文本: compose页集成Quill.js(CDN),保存纯文本+HTML到数据库,发送multipart/alternative
- OAuth2/LDAP: 默认关闭,配置文件控制;internal/auth/ 包(provider.go/ldap.go/oauth2.go
- 依赖: github.com/go-ldap/ldap/v3, golang.org/x/oauth2
- Domain模型新增: DkimSelector, DkimPrivateKey, DkimPublicKey
- Config新增: Auth AuthConfigOAuth2+LDAP各项配置)
## 增强功能(v3
- Banlist系统: 登录失败N次ban IP,次数/时长后台可配(BanConfig)admin /admin/bans 查看/解ban
- BanEntry模型、BanStore、BanMiddleware、banned.html、admin/bans.html
- AuthHandler新增banCfg字段,DoLogin/LDAPLogin集成ban检查
- 配置: max_fail_attempts(默认5), ban_duration_min(默认30分钟)
- 管理仪表盘增强: 邮件分布表(INBOX/Sent/Drafts/Trash计数+大小)、今日/7日收发统计、ban计数
- MailStore新增: CountByFolder, CountAll, TotalSizeByFolder, TotalSize, CountByFolderSince
- 全量邮件查看: /admin/mails 支持文件夹筛选(INBOX/Sent/Drafts/Trash),分页
- MailStore新增: ListAll, ListAllByFolder
- admin/mails.html
- Admin sidebar统一: 控制面板/域名管理/用户管理/所有邮件/IP黑名单
## 已知坑
- go-imap v2 是betaAPI不稳定,必须用v1
- Go filepath.Glob 不支持 ** 递归匹配,模板分两轮加载
- SMTP ListenAndServeTLS() 不接受参数,TLS需通过 TLSConfig 设置
- User模型密码字段为 PasswordHash,数据库列为 password_hash
-69
View File
@@ -1,69 +0,0 @@
# MailGo 交付总览
## TL;DR
MailGo 邮件系统开发完成,包含 SMTP/IMAP/POP3 协议服务 + Gin Web 管理界面,2轮QA全部通过。
## 交付概览
- **状态**: ✅ 开发完成,QA验证通过
- **测试通过率**: 12/12 (Round 2)
- **已知问题**: 0
## 文件清单
### 配置
- `config/defaults.go` — 默认路径与端口常量(Linux/Windows双平台)
- `config/config.go` — TOML配置加载+自动补全
### 数据库
- `internal/db/models.go` — GORM模型(User/Domain/Message/Attachment
- `internal/db/db.go` — 数据库初始化(SQLite/MySQL + AutoMigrate
### Store层
- `internal/store/stores.go` — Stores聚合器
- `internal/store/user_store.go` — 用户CRUD + UpdatePassword
- `internal/store/mail_store.go` — 邮件CRUD + 文件夹查询
- `internal/store/domain_store.go` — 域名CRUD
- `internal/store/attachment_store.go` — 附件CRUD
### 附件存储
- `internal/storage/attachment.go` — UUID文件名+磁盘读写
### 协议服务
- `internal/smtp_server/server.go` — SMTP服务(go-smtp + TLS
- `internal/imap_server/server.go` — IMAP服务(go-imap v1
- `internal/imap_server/backend.go` — IMAP后端实现
- `internal/pop3_server/server.go` — POP3服务(手写TCP协议)
### Web服务
- `internal/web/server.go` — Gin引擎+路由+模板+会话
- `internal/web/middleware/auth.go` — 认证中间件
- `internal/web/middleware/admin.go` — 管理员中间件
- `internal/web/handlers/auth.go` — 登录/登出
- `internal/web/handlers/mail.go` — 收件箱/草稿/发件/撰写/查看/设置
- `internal/web/handlers/admin.go` — 管理后台(域名/用户/DNS提示)
### 模板(自包含+子模板模式)
- `internal/web/templates/base.html` — styles + navbar 子模板
- `internal/web/templates/login.html`
- `internal/web/templates/inbox.html`
- `internal/web/templates/drafts.html`
- `internal/web/templates/sent.html`
- `internal/web/templates/compose.html`
- `internal/web/templates/view.html`
- `internal/web/templates/settings.html`
- `internal/web/templates/admin/dashboard.html`
- `internal/web/templates/admin/domains.html`
- `internal/web/templates/admin/domain_form.html`
- `internal/web/templates/admin/dns_hint.html`
- `internal/web/templates/admin/users.html`
- `internal/web/templates/admin/user_form.html`
### 入口
- `main.go` — 配置加载→DB初始化→Store创建→默认数据→启动四大服务
## 用户下一步建议
1. `go run main.go` 启动服务,访问 http://localhost:8080
2. 默认管理员: admin@example.com / admin
3. 生产环境需修改 `mail_go.toml` 中的 session secret key
4. 配置 TLS 证书后启用 SMTP/IMAP/POP3 的 TLS 端口
5. 配置 DNS MX/SPF/DKIM/DMARC 记录(管理后台有提示页面)