专属域名
文档搜索
轩辕助手
Run助手
邀请有礼
返回顶部
快速返回页面顶部
收起
收起工具栏
轩辕镜像 官方专业版
轩辕镜像 官方专业版轩辕镜像 官方专业版官方专业版
首页个人中心搜索镜像

交易
充值流量我的订单
工具
提交工单镜像收录一键安装
Npm 源Pip 源Homebrew 源
帮助
常见问题
其他
关于我们网站地图

官方QQ群: 1072982923

dirtsimple/poste.io Docker 镜像 - 轩辕镜像 | Docker 镜像高效稳定拉取服务

热门搜索:openclaw🔥nginx🔥redis🔥mysqlopenjdkcursorweb2apimemgraphzabbixetcdubuntucorednsjdk
poste.io
dirtsimple/poste.io
dirtsimple
增强版poste.io邮件服务器Docker镜像,支持主机模式网络隔离、多IP监听与发送管理、自定义Roundcube插件及持久化加密密钥,解决原生镜像端口冲突问题,实现多实例共存与精细化IP控制。
8 次收藏下载次数: 0状态:社区镜像维护者:dirtsimple仓库类型:镜像最近更新:17 天前
轩辕镜像,不浪费每一次拉取。点击查看
中文简介版本下载
轩辕镜像,不浪费每一次拉取。点击查看

增强版Poste.io(IP管理与Roundcube插件)

poste.io 是一个基于Docker的优秀邮件服务器实现,本镜像对其进行了增强,使其功能更强大。

具体而言,本镜像支持:

  • 使用主机模式网络时,仍能:
    • 在同一服务器上运行其他服务,避免本地端口冲突
    • 在同一服务器上运行多个poste实例(如开发和生产环境),监听不同IP
    • 限制poste监听的IP地址,使其他邮件服务器可在同一服务器运行
    • 按域名选择邮件发送IP(详见管理发送IP)
  • 从/data卷安装和使用自定义Roundcube插件
  • 可选为Roundcube使用持久化DES_KEY(详见DES_KEY变量),以支持存储加密数据的插件
目录
  • 为何需要此镜像
  • 基本使用
  • 管理主机名和IP地址
    • 自定义登录域名
    • 不同域名使用独立IP
  • 管理发送IP
  • IPv6支持
  • 使用自定义Roundcube插件
    • DES_KEY变量
  • 能否与poste.io专业版一起使用?
  • Docker标签
为何需要此镜像

使用原生poste镜像的主机模式网络(poste.io推荐配置)时,一个主要挑战是它与同一机器上的其他邮件服务器兼容性差(例如难以同时运行开发和生产实例,或为多个客户端提供服务)。

具体而言,在主机模式网络中,poste.io会将其外部服务绑定到机器的所有IP地址,同时将多个内部服务绑定到本地端口(6379、-、***、和),这可能与邮件服务器以外的服务或其他poste.io实例冲突。

因此,poste.io不仅与其他邮件服务器(包括自身其他实例)不兼容,还与服务器上的其他服务冲突(这种设置下几乎失去了Docker容器的隔离优势)。最后,它还会使用任意IP发送邮件,无法选择特定发送IP。

本镜像通过添加两个环境变量和一个配置文件解决了这些问题,不仅能控制poste监听的IP,还能控制邮件发送的IP(可选按域名)。此外,它修补了poste.io的默认配置,使所有内部服务使用容器内的Unix域套接字,而非占用主机的本地端口。

添加的第一个变量是LISTEN_ON,可设置为特定IP列表、host(仅监听容器主机名绑定的地址)或*(poste默认行为,监听所有可用接口)。

第二个变量是SEND_ON,同样可设置为IP列表、host或*(未设置时默认使用LISTEN_ON的值)。默认情况下,邮件将从列表中的第一个IP发送(若为*则由操作系统选择)。若只有一个发送IP,所有邮件均使用该IP;否则将通过配置文件按发件域名从列表中选择IP。

基本使用

使用本镜像时,只需将配置中的analogic/poste.io替换为dirtsimple/poste.io。例如,以下docker-compose.yml配置(将mail.example.com替换为实际主机名):

yaml
version: "2.3"
services:
  poste:
    image: dirtsimple/poste.io
    restart: always
    network_mode: host  # <-- poste必须使用主机模式网络

    # 所有服务使用`mail.example.com`,同时作为默认HELO主机名
    hostname: mail.example.com

    volumes:
      - ./data:/data
      - /etc/localtime:/etc/localtime:ro

    # ==== 以下为可选设置:默认无需任何环境变量 ====

    environment:
      # 空格分隔的监听IP列表。若设为"host"(未设置时默认值),
      # 容器将监听容器主机名在DNS或/etc/hosts中配置的所有IP(IPv4和IPv6)。
      # 设为"*"则监听所有可用地址(原生poste.io默认行为)。
      - "LISTEN_ON=1.2.3.4 5.6.7.8 90a:11:12::13"

      # 空格分隔的邮件发送IP列表;列表中的第一个IP为默认值。
      # 与LISTEN_ON类似,可设为"*"(任意可用地址)或"host"(容器主机名关联的所有IP)。
      # 若列表仅包含一个地址,则所有邮件使用该IP发送。否则,将读取data/outbound-hosts.yml
      # 文件按域名确定发送IP,并验证是否在列表中。未设置时默认使用LISTEN_ON的值。
      - "SEND_ON=9.10.11.12"

      # 也可使用其他标准poste.io环境变量,如HTTPS_PORT等。

注意以下事项:

  • 必须为容器配置完全限定主机名(如上述mail.example.com),且至少有一个IP在公共DNS中注册
  • 主机名的IP(或LISTEN_ON中列出的IP)必须是主机服务器的公共IP
  • 监听IP的25、80、110、143、443、466、587、993、995或4190端口不得有其他服务监听(可通过poste.io环境变量修改或禁用部分端口)
  • 必须使用主机模式网络(如上network_mode: host),其他网络模式下本镜像行为与原生analogic/poste.io基本一致,存在相同限制(此时LISTEN_ON、SEND_ON或outbound-hosts.yml中的IP设置无效)
  • 默认情况下,外发邮件使用LISTEN_ON中第一个IP或容器内hostname -i返回的IP。如需覆盖此行为,可设置SEND_ON为特定IP,或创建管理发送IP中描述的/data/outbound-hosts.yml文件
  • 来自监听IP的连接将被视为来自127.0.0.1(因来自本地主机),除非使用LISTEN_ON=*模式。这会禁用某些主机特定的垃圾邮件检查(如asn、fcrdns、karma/history等)。仅用于发送邮件的IP不会触发此行为,除非显式添加到中继网络列表。

注意,示例中没有端口映射,因为容器使用主机模式网络,可直接访问服务器所有网络接口。因此必须明确定义容器使用的IP(通过主机名的DNS地址或LISTEN_ON变量设置),避免容器占用服务器所有IP(如需此行为,可设LISTEN_ON=*)。

管理主机名和IP地址

简单场景下,本镜像只需一个主机名和IP:

  • 主机名设为所有托管域名的MX记录
  • IP的反向DNS指向该主机名
  • 镜像生成的默认TLS证书足够使用
  • 用户通过单一主域名登录Webmail和管理界面

复杂场景下可能需要多个IP或主机名,例如为每个域名提供mail.somedomain.com网站/MX,或分离不同域名的发送信誉,同时使用单个容器。这些场景可行,但需注意:容器的TLS证书(用于Web界面和SMTP)会列出所有托管主机名,无法完全隐藏域名共享同一容器的事实(如需完全隔离,需创建独立容器)。

若仅需为用户提供域名特定主机名或分离发送信誉,单个共享容器即可满足需求。

自定义登录域名

如需为每个域名提供mail.mydomain.com供用户配置邮件客户端、登录Web界面或作为MX记录,无需多个IP,只需多个主机名:

  • 每个自定义域名解析至容器监听的某个IP(如通过CNAME指向主域名)
  • 在主管理界面的"邮件服务器设置"中,将每个自定义域名添加到TLS证书的"备用名称"

但仍需选择一个主域名用于启动容器和访问管理界面,该主域名将作为TLS证书的主名称,自定义域名在通过公共DNS解析且容器监听对应IP后,将作为备用名称添加到证书中。

不同域名使用独立IP

如需为不同域名提供独立IP和主机名,步骤类似,但每个自定义主机名需通过A或AAAA记录指向特定IP,而非CNAME指向主域名。如需这些IP用于外发邮件,还需配置outbound-hosts.yml文件(见下节),并按需添加到SEND_ON变量。

当然,仍需配置容器监听所有这些IP,可通过LISTEN_ON显式指定,或为主域名添加A/AAAA记录。若服务器专用于单个poste实例,可设LISTEN_ON=*监听所有IP。

(注意:由于poste.io仅支持单TLS证书,连接容器的客户端仍能看到所有托管主机名,若不可接受,则需创建独立实例,每个实例服务独立IP。)

管理发送IP

某些环境下可能需要为不同发件域名使用不同发送IP。为此,可在/data卷中添加outbound-hosts.yml文件,格式如下:

yaml
# 未配置域名使用的默认信息
default:
  helo: poste.mygenericdomain.com
  ip: 1.2.3.4

exampledomain.com:
  helo: mx.exampledomain.com
  ip: 5.6.7.8

上述配置中,来自exampledomain.com的邮件将使用HELO mx.exampledomain.com和发送IP 5.6.7.8,其他域名使用默认配置(假设5.6.7.8是容器监听的IP之一)。

注意,此文件信息不会验证DNS或安全性(仅基本检查IP是否在SEND_ON范围内)。需确保所有helo主机名在DNS中与ip匹配,且列出的IP均为服务器网络接口的有效IP。

为确保最佳送达率,还应:

  • 确保域名+helo/ip组合通过SPF验证
  • 确保ip的反向DNS结果合理(最好与helo一致)
  • 确保每个作为MX的helo地址添加到poste管理界面"邮件服务器设置"的TLS证书"备用名称"中,且对应ip是容器监听的地址

配置变更时需更新所有相关信息!若自行控制所有相关域名的DNS,可通过域名列表和DNS自动生成此文件(如查询MX记录及对应地址)。(不应信任非控制域名的DNS,避免客户端自行选择发送IP。)

IPv6支持

本镜像支持监听IPv6地址,理论上也可通过IPv6发送邮件。但由于支持IPv6接收的邮件服务器较少,除非确定仅与IPv6邮件服务器通信,否则不建议使用IPv6发送邮件。(还需测试网络环境中IPv6发送是否正常,以及向仅IPv4服务器发送IPv6邮件的情况。)

使用自定义Roundcube插件

启动时,本镜像会自动安装、激活并尝试运行/data/roundcube-plugins子目录中找到的所有Roundcube插件的SQL初始化。仅支持无依赖(除Roundcube已安装组件外)的插件。(插件应设置为世界可读权限,但不可由www-data用户/组拥有或写入,避免文件写入漏洞导致远程执行。)

如需重新运行插件的SQL安装,可从/data/roundcube/installed-plugins文件中移除插件名称,然后重启容器。卸载插件需停止容器,从/data/roundcube-plugins目录移除插件,再启动容器(插件的SQL变更将保留)。

此功能仍处于实验阶段(仅测试过一个插件),建议先在开发环境测试,再用于生产。

DES_KEY变量

部分插件(如ident_switch)可能需要在Roundcube数据库中存储加密数据。默认情况下,poste每次启动生成新加密密钥,导致加密数据无法解密。为解决此问题,可设置DES_KEY环境变量,值为48个随机十六进制字符。该字符串将在重启后保持一致,确保之前存储的加密数据可解密。可使用openssl rand -hex 24生成(24随机字节=48十六进制字符)。字符串必须恰好48个十六进制字符,否则容器的Webmail服务将无法正常运行。

能否与poste.io专业版一起使用?

不确定,但可通过克隆仓库、修改Dockerfile中的FROM并尝试构建验证。由于专业版与免费版的主要区别是管理界面代码,若缺失代码包含对localhost或127.0.0.1的硬编码/隐式引用,管理功能可能因未修补为使用Unix域套接字(或容器主机名)而失效。

若失效且能确定需修补的内容(可能是/opt/admin/src/ProBundle/中的PHP代码),欢迎反馈。(若正常工作,也欢迎告知!)

Docker标签

除latest和unstable外,Docker Hub上的镜像标签格式为"上游版本-本镜像修订版",例如2.2.2-0.3.1表示上游poste 2.2.2版本的0.3.1修订版(如需固定特定版本)。也可使用上游版本标签(如2.2.2)获取该上游版本的最新补丁,或latest获取最新稳定版。unstable标签始终对应GitHub的master分支。

查看更多 poste.io 相关镜像 →
analogic/poste.io logo
analogic/poste.io
analogic
免费版完整邮件服务器解决方案,支持POP3、SMTP、IMAP协议,集成Spamassassin反垃圾邮件、WebMail网页邮件及WebAdmin网页管理功能。
285 次收藏1000万+ 次下载
2 个月前更新

轩辕镜像配置手册

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式

Docker 配置

登录仓库拉取

通过 Docker 登录认证访问私有仓库

专属域名拉取

无需登录使用专属域名

K8s Containerd

Kubernetes 集群配置 Containerd

K3s

K3s 轻量级 Kubernetes 镜像加速

Dev Containers

VS Code Dev Containers 配置

Podman

Podman 容器引擎配置

Singularity/Apptainer

HPC 科学计算容器配置

其他仓库配置

ghcr、Quay、nvcr 等镜像仓库

系统配置

Linux

在 Linux 系统配置镜像服务

Windows/Mac

在 Docker Desktop 配置镜像

MacOS OrbStack

MacOS OrbStack 容器配置

Docker Compose

Docker Compose 项目配置

NAS 设备

群晖

Synology 群晖 NAS 配置

飞牛

飞牛 fnOS 系统配置镜像

绿联

绿联 NAS 系统配置镜像

威联通

QNAP 威联通 NAS 配置

极空间

极空间 NAS 系统配置服务

网络设备

爱快路由

爱快 iKuai 路由系统配置

宝塔面板

在宝塔面板一键配置镜像

需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单

镜像拉取常见问题

使用与功能问题

docker search 报错:专属域名下仅支持 Docker Hub 查询

docker search 报错问题

网页搜不到镜像:Docker Hub 有但轩辕镜像搜索无结果

镜像搜索不到

离线传输镜像:无法直连时用 docker save/load 迁移

离线传输镜像

Docker 插件安装错误:application/vnd.docker.plugin.v1+json

Docker 插件安装错误

WSL 下 Docker 拉取慢:网络与挂载目录影响及优化

WSL 拉取镜像慢

轩辕镜像是否安全?镜像完整性校验(digest)说明

镜像安全性

如何用轩辕镜像拉取镜像?登录方式与专属域名配置

如何拉取镜像

错误码与失败问题

manifest unknown 错误:镜像不存在或标签错误

manifest unknown 错误

TLS/SSL 证书验证失败:Docker pull 时 HTTPS 证书错误

TLS 证书验证失败

DNS 解析超时:无法解析镜像仓库地址或连接超时

DNS 解析超时

410 Gone 错误:Docker 版本过低导致协议不兼容

410 错误:版本过低

402 Payment Required 错误:流量耗尽错误提示

402 错误:流量耗尽

401 UNAUTHORIZED 错误:身份认证失败或登录信息错误

身份认证失败错误

429 Too Many Requests 错误:请求频率超出专业版限制

429 限流错误

Docker login 凭证保存错误:Cannot autolaunch D-Bus(不影响登录)

凭证保存错误

账号 / 计费 / 权限

免费版与专业版区别:功能、限额与使用场景对比

免费版与专业版区别

支持的镜像仓库:Docker Hub、GCR、GHCR、K8s 等列表

轩辕镜像支持的镜像仓库

拉取失败是否扣流量?计费规则说明

拉取失败流量计费

KYSEC 权限不够:麒麟 V10/统信 UOS 下脚本执行被拦截

KYSEC 权限错误

如何申请开具发票?(增值税普票/专票)

开具发票

如何修改网站与仓库登录密码?

修改网站和仓库密码

配置与原理类

registry-mirrors 未生效:仍访问官方仓库或报错的原因

registry-mirrors 未生效

如何去掉镜像名称中的轩辕域名前缀?(docker tag)

去掉域名前缀

如何拉取指定架构镜像?(ARM64/AMD64 等多架构)

拉取指定架构镜像

查看全部问题→

用户好评

来自真实用户的反馈,见证轩辕镜像的优质服务

用户头像

oldzhang

运维工程师

Linux服务器

5

"Docker访问体验非常流畅,大镜像也能快速完成下载。"

轩辕镜像
镜像详情
...
dirtsimple/poste.io
博客公告Docker 镜像公告与技术博客
热门镜像查看热门 Docker 镜像推荐
一键安装一键安装 Docker 并配置镜像源
镜像拉取问题咨询请 提交工单,官方技术交流群:1072982923。轩辕镜像所有镜像均来源于原始仓库,本站不存储、不修改、不传播任何镜像内容。
镜像拉取问题咨询请提交工单,官方技术交流群:。轩辕镜像所有镜像均来源于原始仓库,本站不存储、不修改、不传播任何镜像内容。
商务合作:点击复制邮箱
©2024-2026 源码跳动
商务合作:点击复制邮箱Copyright © 2024-2026 杭州源码跳动科技有限公司. All rights reserved.