logo
0
0
WeChat Login
feat: add imap pop3 protocol access

MoeMail Logo

MoeMail

一个用 Go + SQLite 重构的临时邮箱平台,保留 MoeMail 现有前端体验。

简体中文English

现代技术栈

MoeMail 现已用以下核心支撑:

  • 前端: Next.js App Router,复用现成 UI 壳与页面。
  • 后端: Go 二进制,负责 HTTP API、SMTP 收信/发信、IMAP/POP3 读取、会话认证、清理任务。
  • 数据库: SQLite (启用 WAL + 适当 PRAGMA),覆盖用户、邮箱、消息、分享、Webhook、API Key 和配置。
  • 邮件链路: 公共 SMTP 收信,可选本机直发 SMTP 或 Resend 送信,IMAP/POP3 提供只读访问,.eml + 附件落本地磁盘,元数据信息写 SQLite。
  • 可观测性: healthz/ready/metrics、systemd/nginx 配置与 deploy/ 里的脚本。

本仓库不再依赖 Cloudflare Email Routing、Workers、D1、KV 或 Pages 作为生产路径。

本地运行

# Go 后端 cd cmd/moemail go run . # Next 前端(`MOEMAIL_API_ORIGIN` 指向 Go 服务) cd /workspace npm run dev

浏览器访问 http://127.0.0.1:3000,确保 MOEMAIL_API_ORIGIN 指向监听 /api/ 的 Go 服务。

前端导出与 Go 内嵌

# 1. 导出静态前端,并同步到 internal/webui/out/ npm run build:webui # 2. 构建带内嵌前端资源的 Go 单体二进制 go build ./cmd/moemail

npm run build:webui 会让 Next 进入 output: "export" 模式,产出 out/,再自动复制到 internal/webui/out/,供 Go //go:embed 直接打进最终二进制。

部署

把 Go 服务配合 systemd 或 Docker 部署(参考 deploy/systemd/moemail.service),并先结束 Cloudflare Workers/Pages。DNS 记录应让 mail.<domain> 直接指向 Go SMTP 监听地址,不再走 Cloudflare Email Routing。若仍想保留 Turnstile,可继续使用,但收信、鉴权与存储全在 Go 进程内部。