开源版 · 禁止商用 · v2.3.0

自己搭一个
临时邮箱服务

一个文件就是全部。单文件程序自带 Python 运行时,SMTP 收信 + Web 收发界面 + 域名绑定与反代限制, 2 分钟内在自己的服务器跑起来,数据完全掌握在自己手里。

13 MB 单文件
5 个平台
0 外部依赖
Docker 一键起
https://mail.your-domain.com
收件箱 · hello@mail.your-domain.com
有效期 24h
GitHub
[GitHub] Please verify your device · 验证码 824 193
刚刚
Notion
Login code: 552108(10 分钟内有效)
2 分钟前
Figma
Your team invite is waiting
11 分钟前
🔒 邮件仅存本机 SQLite · 前端展示 10 分钟,后端保留 7 天,到期自动清理
2 min从下载到收信
25标准 SMTP 端口收信
5Linux / macOS 全架构
1个文件即可运行
Features

自建临时邮箱需要的东西,都在里面

不用东拼西凑组件:收信、展示、绑定域名、防滥用、部署与回传,一个程序闭环完成。

📬

SMTP 真收信

内置 aiosmtpd,监听标准 25 端口,任何发信方都能直接投递;邮件落本地 SQLite,重启不丢。

⚡

单文件零依赖

程序内置 Python 运行时,目标机器不需要装 Python、pip、虚拟环境,下载即运行。

🔗

主域名绑定

只允许你自己配置的域名访问,其他人把域名反代过来直接 403,避免被白嫖算力与带宽。

🧹

自动过期清理

前端列表 10 分钟、后端邮件 7 天、邮箱地址 24 小时,三个维度都可按需调整。

🐳

三种部署方式

二进制 + 部署脚本、Docker 源码构建、Docker 二进制镜像,全部支持一条命令起停与管理。

📈

部署回传

首次部署静默回传一次(IP / 域名 / 时间 / 指纹),失败自动 10 分钟重试,不影响使用。

Deploy

挑一种方式,一条命令跑起来

最省事的是在线部署:服务器上什么都不用传,一条命令装完。也可以下载程序包自己上传,两种包都自带 install.sh 与 docker.sh:一个装成 systemd 服务,一个打成镜像跑容器,选一个即可。

在线部署推荐 · 服务器上什么都不用放install.sh :一条命令装完
install.sh自动下载 + systemd
在服务器上执行
bash <(curl -sL atusu.cn/mail/install.sh)
脚本先按 uname -m 认出本机架构(amd64 / arm64 / armv7),再从发布目录下载对应程序,对照 SHA256SUMS 校验后装成 systemd 服务。
多站容错:内置多个下载站,目录结构完全一致、只是域名不同;主站打不开或文件不全会自动换下一个,最后打印的「下载来源」就是实际用的站。
改端口:命令后加 -s -- install --web-port 8080 · 指定镜像:加 --mirrors "https://a.com/mail https://b.com/mail"
其它命令:-s -- upgrade 升级 · -s -- download 只下不装 · -s -- status 看状态 · -s -- uninstall --purge 彻底卸载
二进制包无需 Pythonbinary/ :一个程序文件 + install.sh + docker.sh + install.sh
install.shsystemd 直跑
# 程序文件与脚本放同一目录
chmod +x TempMail-2.3.0-* install.sh
sudo bash install.sh

# 再次执行 = 管理菜单
sudo bash install.sh
只需放本机架构的那一个程序文件,脚本自动识别架构并装成 systemd 服务,开机自启、崩溃自动重启;Web 端口被占用会自动换一个可用端口。
docker.sh容器
# 同一目录内执行
chmod +x docker.sh
sudo bash docker.sh

bash docker.sh status
bash docker.sh logs -f
把单文件程序打成镜像运行,目标机不需要 Python;自动挑出与 Docker 架构一致的 Linux 程序。
源码包app.pysource/ :源码 + install.sh + docker.sh
install.shvenv + systemd
# 源码目录内执行
chmod +x install.sh
sudo bash install.sh

# 国内加速 / 换端口
sudo bash install.sh install \
  --mirror https://pypi.tuna.tsinghua.edu.cn/simple
自动检测 python3、创建独立虚拟环境、安装依赖并写 systemd 服务,重复执行进入管理菜单。
docker.sh容器
# 源码目录内执行
chmod +x docker.sh
sudo bash docker.sh

bash docker.sh rebuild
bash docker.sh down
用 app.py + Dockerfile 构建镜像;改动 app.py 后再执行 up 会自动重建镜像。

macOS

下载对应架构单文件,chmod +x 后执行 sudo bash install.sh;被 Gatekeeper 拦时先 xattr -dr com.apple.quarantine。

Docker Compose

源码目录自带 docker-compose.yml,docker compose up -d 即可;与脚本二选一,不要同时管理同一个容器。

手动运行

源码目录 pip install -r requirements.txt 后 python app.py,适合临时调试;正式部署建议用脚本托管。

Domain

绑定一个域名,只给自己用

用 IP 打开是配置页,绑定域名后才是邮箱界面。没配置好之前不会乱跳,配好后由你手动进入。

需要做的事

  • A 记录:mail → 服务器公网 IP
  • MX 记录:@ → mail.你的域名,优先级 10
  • Nginx / Caddy 反代到本机 6060,并传递 Host 头
  • 在配置页填主域名并保存,程序自动校验解析
  • 配置页的 DNS 区块会按你填的域名自动推导记录值,每项都带复制按钮
首次保存不会自动跳转,页面会保留 A / MX 记录与反代配置方便你抄写; 复制过「反代配置」和「解析配置」后,再用 IP 打开会出现 5 秒倒计时自动进入邮箱, 点「查看检测页面」即可停止倒计时,改为手动进入。跳转地址不带端口。
① 填主域名② 加 A / MX③ 反代 6060④ 打开域名

Nginx 反代示例

Nginx
server {
    listen 80;
    server_name mail.your-domain.com;

    location / {
        proxy_pass http://127.0.0.1:6060;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
示例中的 6060 只是默认端口:部署时若被占用会自动顺延,请以配置页「反代配置」里显示的端口为准(配置页同样带一键复制)。
类型主机记录记录值
Amail你的服务器 IP
MX@mail.你的域名
访问规则:IP:端口 → 配置 / 检测页(?preview=1 可预览界面); 已绑定域名 → 邮箱界面;其它域名 → 403 未授权。
FAQ

部署前后最常问的几件事

用 IP 打开只看到「未配置主域名」?

这是预期行为。填好域名保存、DNS 生效后才会放行邮箱界面;域名没生效前页面每 10 秒自动复检一次。

6060 端口被占用了还能部署吗?

可以。部署脚本会先看占用方:本程序旧实例占用就先停掉复用;其它程序占用则自动顺延到下一个空闲端口, 写回 .env,并在结束时打印实际访问链接。反代以配置页显示的端口为准。

25 端口被 postfix 占了怎么办?

部署脚本会检测并提示,可改 SMTP_PORT(Docker 脚本 --smtp-port 2525)。 注意改端口后外部投递方要显式指定端口,正式收信建议还是用 25。

Docker 里能跑 macOS / exe 的包吗?

不能。Docker 只能运行 Linux 程序,脚本会自动挑选 TempMail-<版本>-linux-<架构>, 找不到会直接报错并列出目录里的文件,不会装错。

数据存在哪?删容器会丢吗?

SQLite 数据库、config.json、部署标记都存在宿主机 data/ 目录并挂载进容器, 删容器 / 重建镜像都不丢;只有 purge 才会连数据一起删。

能关掉部署回传吗?

可以。设置环境变量 DEPLOY_REPORT_URL= 留空即可关闭;默认只回传 IP、域名、部署时间与服务器指纹, 失败每 10 分钟重试,全程静默。

可以商用或二次分发吗?

不可以。本项目为开源版,仅限个人学习与自用,禁止商业售卖、付费分发、二次销售或作为付费服务的一部分。

现在就把邮箱架在自己的服务器上

下载单文件,或者一条 docker 命令,剩下的交给脚本。