mirror of
https://github.com/dreamhunter2333/cloudflare_temp_email.git
synced 2026-07-09 06:23:07 +08:00
refactor: modularize IMAP server with fixes and E2E tests - Modularize IMAP server into imap_server, imap_mailbox, imap_message, imap_http_client, parse_email, config, models - Support dual login: JWT token and address+password via backend - Add STARTTLS support with configurable TLS cert/key - Fix FETCH/STORE returning UID instead of sequence number (RFC 3501) - Implement IMessageFile.open() for correct BODY[] raw MIME delivery - Add UIDNEXT to SELECT response via _cbSelectWork override - Use per-restart UIDVALIDITY to force client resync - Pass raw MIME to SimpleMessage for accurate RFC822.SIZE - Fix SENT mailbox returning empty source - Handle CREATE command gracefully for Thunderbird compatibility - Add IMAP E2E tests: auth, LIST, SELECT, STATUS, FETCH, SEARCH, STORE, UID FETCH, BODY[] integrity, size, seq numbers, SENT mailbox - Add SMTP E2E tests using nodemailer: send plain/HTML, auth failure, sendbox verification - Add sendTestMail helper using admin/send_mail Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2.6 KiB
2.6 KiB
搭建 SMTP IMAP 代理服务
::: warning 注意
如果你使用了 resend, 可直接使用 resend 的 SMTP 服务,不需要使用此服务
:::
为什么需要 SMTP IMAP 代理服务
SMTP IMAP 的应用场景更加广泛
如何搭建 SMTP IMAP 代理服务
Local Run
cd smtp_proxy_server/
# 复制配置文件, 并修改配置文件
# 你的 worker 地址,proxy_url=https://temp-email-api.xxx.xxx
# 你的 SMTP 服务端口,port=8025
cp .env.example .env
python3 -m venv venv
./venv/bin/python3 -m pip install -r requirements.txt
./venv/bin/python3 main.py
Docker Run
cd smtp_proxy_server/
docker-compose up -d
修改 docker-compose.yaml 中的环境变量, 注意选择合适的 tag
proxy_url 为 worker 的 URL 地址
services:
smtp_proxy_server:
image: ghcr.io/dreamhunter2333/cloudflare_temp_email/smtp_proxy_server:latest
# build:
# context: .
# dockerfile: dockerfile
container_name: "smtp_proxy_server"
ports:
- "8025:8025"
- "11143:11143"
environment:
- proxy_url=https://temp-email-api.xxx.xxx
- port=8025
- imap_port=11143
环境变量
| 变量 | 默认值 | 说明 |
|---|---|---|
proxy_url |
http://localhost:8787 |
Worker 后端 URL |
port |
8025 |
SMTP 端口 |
imap_port |
11143 |
IMAP 端口 |
imap_tls_cert |
空 | TLS 证书文件路径(PEM),配置后启用 STARTTLS |
imap_tls_key |
空 | TLS 私钥文件路径(PEM) |
imap_cache_size |
500 |
每个邮箱的消息缓存上限 |
imap_http_timeout |
30.0 |
后端 HTTP 请求超时时间(秒) |
启用 STARTTLS
配置 imap_tls_cert 和 imap_tls_key 环境变量后,IMAP 服务会自动支持 STARTTLS。
# .env 示例
imap_tls_cert=/path/to/cert.pem
imap_tls_key=/path/to/key.pem
Docker Compose 中配置:
environment:
- imap_tls_cert=/certs/cert.pem
- imap_tls_key=/certs/key.pem
volumes:
- ./certs:/certs:ro
IMAP 登录方式
支持两种登录方式:
| 方式 | 用户名 | 密码 | 说明 |
|---|---|---|---|
| JWT 凭证 | 邮箱地址 | JWT token | 从前端获取的地址凭证,直接认证 |
| 地址+密码 | 邮箱地址 | 地址密码 | 通过后端 /api/address_login 验证 |
系统会自动识别密码格式:以 eyJ 开头的三段式字符串视为 JWT,其他视为密码并调用后端验证。
使用 Thunderbird 登录
下载 Thunderbird
密码填写 邮箱地址凭证 或 邮箱地址密码
