You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Docker配置Maildev邮件持久化存储 解决重启后邮件丢失问题

问题根源

你的配置逻辑本身没有错误,失效的核心原因是容器内运行Maildev服务的用户没有挂载目录的写入权限,导致邮件无法落地到磁盘存储,默认存放在内存中,容器重启后数据自然清空。

解决方案

1. 修复宿主机挂载目录权限(Linux环境专属)

官方Maildev镜像默认使用UID、GID均为1000的maildev用户运行服务,Docker自动创建的挂载目录默认归属root用户,无写入权限时服务会自动将邮件存入内存。
在宿主机项目根目录执行以下命令修改目录权限:

sudo chown -R 1000:1000 ./var/data/maildev

如果是Windows/macOS部署环境,无需执行上述命令,只需要在Docker设置的文件共享配置中,开放挂载目录所在路径的读写权限即可。

2. 优化docker-compose.yml配置

修正冗余配置,明确指定运行用户避免权限漂移:

version: '3.8'
services:
  maildev:
    hostname: maildev
    # 明确指定运行用户ID,和官方镜像默认用户权限匹配
    user: "1000:1000"
    # 去掉冗余的bin/前缀,直接调用全局maildev命令
    command: maildev --web 80 --smtp 25 --mail-directory /home/maildev/data
    volumes:
      - ./var/data/maildev:/home/maildev/data
    ports:
      - "1080:80"
    networks:
      - my-network

# 如你已提前创建my-network外部网络,可删除以下配置改为external: true
networks:
  my-network:
    driver: bridge

3. 验证配置生效

执行以下命令重启服务测试:

# 停止并删除原有Maildev容器
docker compose down
# 重新启动服务
docker compose up -d

启动后发送1封测试邮件,再执行docker compose restart maildev,访问1080端口的Maildev管理页,即可看到重启前的邮件依然留存。


内容的提问来源于stack exchange,提问作者Hien Nguyen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 17:57:02