FlyMail 是一个面向个人、家庭和小团队的自托管多用户邮箱聚合与管理平台。它把多个邮箱集中到一个 Web 界面中,同时保留用户数据隔离、历史邮件同步、附件与正文缓存、邮件备份和多种通知能力。
.eml 备份、NAS 授权目录备份,以及 Bark、Telegram、企业微信、钉钉、飞书和 Webhook 通知/data建议把持久化数据放在宿主机 /Docker/flymail/data:
sudo mkdir -p /Docker/flymail/data
mkdir -p flymail-deploy
cd flymail-deploy
创建 .env。以下值仅为示例,请务必替换管理员密码、数据库密码和会话密钥:
FLYMAIL_ADMIN_USERNAME=admin
FLYMAIL_ADMIN_PASSWORD=请替换为高强度管理员密码
FLYMAIL_SESSION_SECRET=请替换为随机长字符串
MYSQL_DATABASE=flymail
MYSQL_USER=flymail
MYSQL_PASSWORD=请替换为高强度数据库密码
# 如需代理,再填写;不需要时保持为空
FLYMAIL_HTTP_PROXY=
FLYMAIL_HTTPS_PROXY=
FLYMAIL_ALL_PROXY=
FLYMAIL_NO_PROXY=127.0.0.1,localhost
可用下面的命令生成会话密钥(不要把输出提交到 Git):
openssl rand -hex 32
docker run -d \
--name flymail \
--restart unless-stopped \
--env-file .env \
-p 36080:8080 \
-v /Docker/flymail/data:/data \
benxianyu/flymail:0.0.58
浏览器访问 http://服务器地址:36080。首次启动会使用 FLYMAIL_ADMIN_USERNAME 和 FLYMAIL_ADMIN_PASSWORD 初始化管理员。已有数据目录再次启动时不会覆盖已有账号;修改环境变量后如需改变管理员密码,请在 Web 界面中修改。
docker ps --filter name=flymail
docker logs -f flymail
curl http://127.0.0.1:36080/api/health
健康检查应返回 HTTP 200,并包含应用状态和版本信息。
也可以使用下面的 compose.yaml:
services:
flymail:
image: benxianyu/flymail:0.0.58
container_name: flymail
restart: unless-stopped
ports:
- "36080:8080"
env_file:
- .env
environment:
APP_HOST: 0.0.0.0
APP_PORT: 8080
FLYMAIL_STORAGE_ROOT: /data
FLYMAIL_DATA_DIR: /data/flymail
FLYMAIL_UI_DIR: /app/frontend-dist
volumes:
- /Docker/flymail/data:/data
启动和停止:
docker compose up -d
docker compose logs -f flymail
docker compose down
不要删除 /Docker/flymail/data;它包含 MySQL 数据库、邮箱配置、缓存、附件和备份。
容器内唯一需要持久化的目录是 /data,建议整体映射到宿主机目录:
/data/mysql:用户、邮箱账号、邮件缓存、设置、通知和同步任务/data/flymail/config:应用配置和运行时密钥文件/data/flymail/files:头像、邮箱图标、签名图片、邮件正文图片和附件对象/data/flymail/backup:邮件 .eml 备份/data/flymail/logs:应用日志快照不等于备份。升级或迁移前,建议先停止写入并复制数据目录:
docker stop flymail
sudo tar -C /Docker/flymail -czf flymail-data-$(date +%F).tar.gz data
docker start flymail
如果要使用 NAS 目录,应将 NAS 路径显式挂载到容器 /data 下,并在 FlyMail 备份页面授权;不要把宿主机根目录或整个 /Docker 映射进容器。
Gmail、OAuth、SMTP 和第三方通知需要对应服务商的授权信息。请只在服务器本地 .env 或 Web 配置中填写凭据,不要写入镜像、代码仓库、工单或公开日志。
先备份 /Docker/flymail/data,再拉取目标版本并重建容器:
docker pull benxianyu/flymail:0.0.58
docker stop flymail
docker rm flymail
# 使用原来的 --env-file、端口和 /data 挂载重新执行 docker run
若使用 Compose:
docker compose pull
docker compose up -d
升级后检查容器健康状态、/api/health、登录、收件箱读取和一封测试邮件。不要在没有备份的情况下删除旧数据目录。
容器启动后退出: 先看 docker logs flymail。首次启动必须提供 FLYMAIL_ADMIN_USERNAME、FLYMAIL_ADMIN_PASSWORD 和 FLYMAIL_SESSION_SECRET;同时确认 /data 可写。
网页打不开: 检查宿主机端口映射、防火墙和 docker ps。容器内部固定监听 8080,宿主机可使用其他未占用端口,例如 36080:8080。
邮箱无法连接: 检查 IMAP/SMTP 主机名、端口、SSL/STARTTLS 选项和凭据;如果网络需要代理,设置 FLYMAIL_HTTP_PROXY、FLYMAIL_HTTPS_PROXY 或 FLYMAIL_ALL_PROXY。
历史同步很慢: 首次同步会按文件夹拉取历史邮件,正文和内嵌图片也可能需要缓存。可在同步管理页面暂停、继续或重试,避免反复删除本地数据重新开始。
修改环境变量没有生效: Compose 修改 .env 后需要 docker compose up -d;普通 docker run 需要用相同参数重新创建容器。已有数据库中的账号和设置不会因重启自动重置。
.env,不在日志和截图中暴露邮箱密码、OAuth Token、SMTP 密钥或会话密钥。当前镜像标签:0.0.58
镜像地址:benxianyu/flymail:0.0.58
项目源码、问题反馈和最新开发进展请访问 GitHub:
Content type
Image
Digest
sha256:048be783b…
Size
216.1 MB
Last updated
19 days ago
docker pull benxianyu/flymail:0.0.58