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

如何在docker-mailserver容器内配置并运行4个getmail服务

如何在docker-mailserver容器内配置并运行4个getmail服务

咱们一步一步来搞定在docker-mailserver容器里跑4个getmail服务的需求,核心思路是把本地的配置和服务脚本挂载进容器,然后在容器内配置开机启动:

1. 调整docker-compose.yaml挂载目录

首先修改你的docker-compose文件,新增几个挂载项,把getmail的配置文件和init服务脚本同步到容器里。修改后的配置如下:

services:
  mailserver:
    image: ghcr.io/docker-mailserver/docker-mailserver:latest
    container_name: mailserver
    hostname: dms.example.com
    ports:
      - "25:25"
      - "1465:465"
      - "1587:587"
      - "1993:993"
      - "4190:4190"
    volumes:
      - /docker/data/docker-mailserver/scripts/:/scripts/
      # 新增挂载:getmail配置目录
      - /docker/data/docker-mailserver/getmail/config/:/etc/getmail/
      # 新增挂载:getmail的init服务脚本目录
      - /docker/data/docker-mailserver/getmail/init.d/:/etc/init.d/
    restart: always

这样咱们本地的配置和脚本就能直接同步到容器里,不用每次进容器修改。

2. 准备4个getmail实例的配置文件

在本地的/docker/data/docker-mailserver/getmail/config/目录下,创建4个配置文件,比如getmail1rc、getmail2rc、getmail3rc、getmail4rc,每个文件对应一个getmail实例。配置里要指定使用/usr/lib/dovecot/deliver来投递邮件,示例配置大概是这样(根据你的实际邮箱调整):

[retriever]
type = SimplePOP3Retriever
server = pop3.your-email-provider.com
username = your-account@example.com
password = your-password

[destination]
type = MDA_external
path = /usr/lib/dovecot/deliver
arguments = ("-d", "local-user@dms.example.com")

[options]
delete = False
verbose = 0

每个配置文件对应不同的外部邮箱账号,投递到docker-mailserver里的本地用户。

3. 准备4个init.d服务脚本

在本地的/docker/data/docker-mailserver/getmail/init.d/目录下,创建4个服务脚本,分别命名为getmail1、getmail2、getmail3、getmail4。你可以基于已有的init脚本修改,每个脚本对应一个getmail实例的配置文件,示例脚本如下(以getmail1为例):

### BEGIN INIT INFO
# Provides:          getmail1
# Required-Start:    $local_fs $network $named $time $syslog
# Required-Stop:     $local_fs $network $named $time $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Description:       download mail for getmail instance 1
### END INIT INFO

case "$1" in
    start)
        echo "Starting getmail1..."
        start-stop-daemon --start --background --exec /usr/bin/getmail -- --rcfile /etc/getmail/getmail1rc
        ;;
    stop)
        echo "Stopping getmail1..."
        pkill -f "getmail --rcfile /etc/getmail/getmail1rc"
        ;;
    restart)
        $0 stop
        $0 start
        ;;
    *)
        echo "Usage: $0 {start|stop|restart}"
        exit 1
        ;;
esac
exit 0

注意修改每个脚本里的Provides字段(对应服务名)、Description描述,还有启动命令里的配置文件路径,确保每个脚本对应正确的getmailXrc配置。

4. 配置容器内的服务启动

修改完docker-compose和本地文件后,重启容器:

docker-compose down && docker-compose up -d

然后进入容器,给这4个服务脚本添加执行权限:

docker exec -it mailserver chmod +x /etc/init.d/getmail*

接着设置它们开机自动启动:

docker exec -it mailserver update-rc.d getmail1 defaults
docker exec -it mailserver update-rc.d getmail2 defaults
docker exec -it mailserver update-rc.d getmail3 defaults
docker exec -it mailserver update-rc.d getmail4 defaults

5. 测试服务运行

你可以手动启动其中一个服务测试:

docker exec -it mailserver service getmail1 start

然后查看日志或者进程,确认服务正常运行:

docker exec -it mailserver ps aux | grep getmail

如果一切正常,4个getmail服务就会在容器启动时自动运行,各自拉取对应邮箱的邮件并投递到docker-mailserver里。

备注:内容来源于stack exchange,提问作者bilogic

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 15:28:09