OpenC
OpenC
发布于 2024-09-07 / 86 阅读
0
0

使用 Docker 搭建 Poste.io 邮件服务器

使用 Docker 搭建 Poste.io 邮件服务器的完整指南

Poste.io 是一个功能强大的开源邮件服务器,集成了多个邮件服务组件,如SMTP、IMAP、POP3、Web邮件客户端等。通过 Docker,您可以轻松地在各种操作系统上部署和管理 Poste.io 邮件服务器。本指南将详细介绍如何在不同环境下安装 Docker,配置防火墙规则,并设置 Docker 容器的网络模式,以搭建一个稳定、安全的 Poste.io 邮件服务器。


目录

  1. 系统准备
  2. Docker 安装方法
  3. 配置防火墙规则
  4. 运行 Poste.io 容器
  5. 配置 Poste.io
  6. 故障排查
  7. 安全性提升
  8. 常见问题
  9. 总结

1. 系统准备

在开始之前,请确保您的服务器具备以下条件:

  • 主机名和 DNS 配置:确保系统的主机名正确设置并与 DNS 配置匹配。为您的邮件域名添加 A 记录(指向服务器 IP)和 MX 记录(指向域名邮件服务器)。
  • 操作系统更新:保持系统软件包为最新,确保安全性和兼容性。
# Ubuntu/Debian 系统
sudo apt-get update && sudo apt-get upgrade -y

# CentOS 系统
sudo yum update -y

2. Docker 安装方法

Docker 是一个开源的容器化平台,允许您打包应用及其依赖项到一个可移植的容器中。在不同的操作系统和版本上,Docker 的安装方法有所不同。以下将介绍在 Ubuntu、CentOS 和 Debian 系统上安装 Docker 的详细步骤,以及如何安装特定版本的 Docker。

2.1 在 Ubuntu 上安装 Docker

步骤1:卸载旧版本

sudo apt-get remove docker docker-engine docker.io containerd runc

步骤2:安装必要的依赖包

sudo apt-get update
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

步骤3:添加 Docker 的官方 GPG 密钥

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

步骤4:设置稳定版仓库

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

步骤5:安装 Docker Engine

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

步骤6:验证安装

sudo docker run hello-world

2.2 在 CentOS 上安装 Docker

步骤1:卸载旧版本

sudo yum remove docker \
                docker-client \
                docker-client-latest \
                docker-common \
                docker-latest \
                docker-latest-logrotate \
                docker-logrotate \
                docker-engine

步骤2:安装必要的依赖包

sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

步骤3:设置稳定版仓库

sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

步骤4:安装 Docker Engine

sudo yum install docker-ce docker-ce-cli containerd.io

步骤5:启动并启用 Docker

sudo systemctl start docker
sudo systemctl enable docker

步骤6:验证安装

sudo docker run hello-world

2.3 在 Debian 上安装 Docker

步骤1:卸载旧版本

sudo apt-get remove docker docker-engine docker.io containerd runc

步骤2:安装必要的依赖包

sudo apt-get update
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

步骤3:添加 Docker 的官方 GPG 密钥

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

步骤4:设置稳定版仓库

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

步骤5:安装 Docker Engine

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

步骤6:验证安装

sudo docker run hello-world

2.4 安装特定版本的 Docker

有时需要安装 Docker 的特定版本以兼容某些应用或满足特定需求。

步骤1:列出可用的 Docker 版本

apt-cache madison docker-ce

步骤2:选择并安装特定版本

假设选择版本 5:20.10.7~3-0~ubuntu-focal

sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io

示例

sudo apt-get install docker-ce=5:20.10.7~3-0~ubuntu-focal docker-ce-cli=5:20.10.7~3-0~ubuntu-focal containerd.io

步骤3:锁定 Docker 版本(防止自动升级)

sudo apt-mark hold docker-ce docker-ce-cli containerd.io

说明

  • apt-cache madison docker-ce 列出所有可用的 Docker 版本。
  • 通过指定版本字符串安装特定版本的 Docker。
  • 使用 apt-mark hold 锁定版本,防止未来的系统更新自动升级 Docker。

3. 配置防火墙规则

邮件服务器需要开放特定端口以允许邮件的发送和接收。不同的防火墙管理工具有不同的配置方法,以下将介绍如何在使用 firewalldufwiptables 的系统上开放必要端口或关闭防火墙。

3.1 使用 firewalld

适用系统:主要用于 CentOS、Fedora 等使用 firewalld 作为防火墙管理工具的系统。

步骤1:启动并启用 firewalld

sudo systemctl start firewalld
sudo systemctl enable firewalld

步骤2:开放邮件服务器必要端口

# SMTP 端口
sudo firewall-cmd --permanent --add-port=25/tcp
sudo firewall-cmd --permanent --add-port=587/tcp
sudo firewall-cmd --permanent --add-port=465/tcp

# IMAP 端口
sudo firewall-cmd --permanent --add-port=143/tcp
sudo firewall-cmd --permanent --add-port=993/tcp

# POP3 端口
sudo firewall-cmd --permanent --add-port=110/tcp
sudo firewall-cmd --permanent --add-port=995/tcp

# 重载防火墙规则
sudo firewall-cmd --reload

步骤3:验证端口是否开放

sudo firewall-cmd --list-ports

3.2 使用 ufw

适用系统:主要用于 Ubuntu 等使用 ufw(Uncomplicated Firewall)作为防火墙管理工具的系统。

步骤1:启用 ufw

sudo ufw enable

步骤2:开放邮件服务器必要端口

# SMTP 端口
sudo ufw allow 25/tcp
sudo ufw allow 587/tcp
sudo ufw allow 465/tcp

# IMAP 端口
sudo ufw allow 143/tcp
sudo ufw allow 993/tcp

# POP3 端口
sudo ufw allow 110/tcp
sudo ufw allow 995/tcp

步骤3:验证防火墙状态和开放端口

sudo ufw status verbose

3.3 使用 iptables

适用系统:适用于需要手动配置防火墙规则的系统,如部分 CentOS、Debian 等。

步骤1:开放邮件服务器必要端口

# SMTP 端口
sudo iptables -A INPUT -p tcp --dport 25 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 587 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 465 -j ACCEPT

# IMAP 端口
sudo iptables -A INPUT -p tcp --dport 143 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 993 -j ACCEPT

# POP3 端口
sudo iptables -A INPUT -p tcp --dport 110 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 995 -j ACCEPT

步骤2:保存 iptables 规则

不同的系统有不同的保存方法:

  • Ubuntu/Debian

    sudo apt-get install iptables-persistent
    sudo netfilter-persistent save
    
  • CentOS

    sudo yum install iptables-services
    sudo service iptables save
    sudo systemctl enable iptables
    

步骤3:验证防火墙规则

sudo iptables -L -v

注意:使用 iptables 需要谨慎操作,错误的规则可能导致服务器无法访问。建议在操作前备份现有规则。


4. 运行 Poste.io 容器

Poste.io 可以通过 Docker 容器运行,支持桥接网络和主机网络两种模式。根据您的网络需求选择合适的网络模式。

4.1 使用桥接网络

桥接网络是 Docker 的默认网络模式,容器通过虚拟网桥与主机和其他容器通信。

步骤1:运行 Docker 容器

sudo docker run -d \
  -p 25:25 \
  -p 80:80 \
  -p 443:443 \
  -p 587:587 \
  -p 465:465 \
  -p 110:110 \
  -p 995:995 \
  -p 143:143 \
  -p 993:993 \
  -v /your-data-path:/data \
  --name "mailserver" \
  analogic/poste.io

参数解释

  • -d:后台运行容器。
  • -p:端口映射,将主机端口映射到容器端口。
  • -v:挂载数据卷,确保邮件数据持久化。
  • --name:为容器指定名称,便于管理。

注意事项

  • 确保主机端口未被其他服务占用。
  • /your-data-path 替换为实际的数据存储路径。

4.2 使用主机网络

主机网络模式下,容器共享主机的网络堆栈,没有网络隔离,适用于需要高性能网络或与主机紧密集成的场景。

步骤1:运行 Docker 容器

sudo docker run -d \
  --network host \
  -v /your-data-path:/data \
  --name "mailserver" \
  analogic/poste.io

参数解释

  • --network host:使用主机网络模式,省略端口映射。
  • 其他参数与桥接网络模式相同。

优点

  • 更高的网络性能。
  • 容器内的服务可以直接使用主机的网络接口。

缺点

  • 缺乏网络隔离,可能带来安全风险。
  • 容器端口与主机端口可能冲突。

适用场景

  • 需要高性能网络通信的应用。
  • 与主机网络紧密集成的服务。

5. 配置 Poste.io

启动 Docker 容器后,可以通过浏览器访问 http://<你的服务器IP>https://<你的服务器IP> 进入 Poste.io 的管理界面。以下是一些配置建议:

5.1 创建管理员账户

首次访问时会提示创建管理员账户,确保此账户有足够的权限管理整个邮件服务器。

5.2 添加邮件域名

配置您打算管理的邮件域名。例如,添加 example.com 作为您的邮件域名。

5.3 用户和别名管理

为不同的邮件用户添加账号,设置相关别名和转发规则。例如,创建 user@example.com 用户,并设置别名 info@example.com 转发到该用户。

5.4 配置 SSL 证书

为了确保邮件传输的安全性,建议配置 SSL 证书。您可以使用 Let's Encrypt 免费获取 SSL 证书,并在 Poste.io 中应用。

步骤1:获取 SSL 证书

使用 Certbot 获取证书:

sudo apt-get install certbot
sudo certbot certonly --standalone -d mail.example.com

步骤2:配置 Poste.io 使用 SSL 证书

将获取到的证书和私钥挂载到 Docker 容器中,并在 Poste.io 的设置中配置 SSL。

sudo docker run -d \
  -p 25:25 \
  -p 80:80 \
  -p 443:443 \
  -p 587:587 \
  -p 465:465 \
  -p 110:110 \
  -p 995:995 \
  -p 143:143 \
  -p 993:993 \
  -v /your-data-path:/data \
  -v /etc/letsencrypt/live/mail.example.com/fullchain.pem:/etc/ssl/certs/poste.crt \
  -v /etc/letsencrypt/live/mail.example.com/privkey.pem:/etc/ssl/private/poste.key \
  --name "mailserver" \
  analogic/poste.io

说明

  • 挂载证书文件到容器中的相应路径。
  • 在 Poste.io 管理界面中选择使用自定义 SSL 证书。

6. 故障排查

在运行 Poste.io 容器时,可能会遇到各种问题。以下是一些常见问题及解决方法。

6.1 端口冲突

症状:启动容器时提示端口已被占用。

解决方法

  • 检查占用端口的进程:

    sudo lsof -i:25
    sudo lsof -i:80
    # 依此类推
    
  • 停止占用端口的服务,例如 Apache 或 Nginx:

    sudo systemctl stop apache2
    sudo systemctl stop nginx
    
  • 修改 Docker 容器的端口映射,将占用的端口映射到不同的主机端口。

6.2 数据持久化问题

症状:容器重启后邮件数据丢失。

解决方法

  • 确保数据卷正确挂载。使用 -v 参数将主机目录挂载到容器的 /data 目录。

  • 检查挂载路径的权限,确保 Docker 有权限读写。

6.3 防火墙阻止访问

症状:无法通过外部访问邮件服务器。

解决方法

  • 确认防火墙已开放必要端口(详见3. 配置防火墙规则)。

  • 检查服务器的安全组设置(适用于云服务器,如 AWS、阿里云等)。

6.4 容器日志查看

症状:邮件服务异常,需查看详细日志。

解决方法

  • 使用 docker logs 查看容器日志:

    sudo docker logs mailserver
    
  • 通过 Poste.io 的管理界面查看日志和状态。


7. 安全性提升

为了确保邮件服务器的安全性,建议采取以下措施:

7.1 配置防火墙

  • 限制访问:仅允许特定 IP 或网络访问管理界面。
  • 启用防病毒和反垃圾邮件:结合 SpamAssassin 等工具,过滤恶意邮件。

7.2 使用强密码和双因素认证

  • 为管理员账户和用户账户设置强密码。
  • 启用双因素认证(2FA)以增加账户安全性。

7.3 定期更新 Docker 和 Poste.io

  • 保持 Docker 引擎和 Poste.io 镜像的最新版本,修补已知的安全漏洞。
# 更新 Docker
sudo apt-get update
sudo apt-get upgrade -y docker-ce docker-ce-cli containerd.io

# 拉取最新的 Poste.io 镜像
sudo docker pull analogic/poste.io

# 重新启动容器
sudo docker stop mailserver
sudo docker rm mailserver
sudo docker run [OPTIONS] analogic/poste.io

7.4 备份数据

  • 定期备份 /your-data-path 目录,确保邮件数据的安全和可恢复性。
sudo tar -czvf mailserver_backup_$(date +%F).tar.gz /your-data-path

8. 常见问题

  • 邮件无法发送/接收

    • 确认 DNS 配置是否正确,尤其是 MX 记录指向邮件服务器的 IP 地址。
    • 检查防火墙是否开放了所有必要端口。
    • 查看容器日志,排查邮件服务异常。
  • 防火墙问题

    • 确保已开放所有必要端口。
    • 使用 iptables -L -vfirewall-cmd --list-ports 检查防火墙规则。
  • 数据持久化

    • 确保数据目录正确挂载,并具有适当的读写权限。
    • 使用 Docker 卷管理工具(如 Docker Compose)简化数据卷配置。
  • SSL 证书问题

    • 确保 SSL 证书路径正确挂载到容器。
    • 检查证书是否有效,避免过期或配置错误。
  • 容器无法启动

    • 查看容器日志,识别启动错误。
    • 确认 Docker 版本与 Poste.io 镜像兼容。
    • 检查系统资源(如内存、磁盘空间)是否充足。

9. 总结

通过本文的详细步骤,您已经掌握了在不同操作系统和环境下使用 Docker 搭建 Poste.io 邮件服务器的完整方法。以下是关键要点总结:

  • Docker 安装与配置

    • 根据不同操作系统选择合适的 Docker 安装方法。
    • 安装特定版本的 Docker 以满足兼容性需求。
  • 防火墙配置

    • 使用 firewalldufwiptables 开放必要端口,确保邮件服务的正常运行。
    • 根据系统类型选择合适的防火墙管理工具,并正确应用规则。
  • Docker 网络模式

    • 了解桥接网络和主机网络的区别,选择适合的网络模式部署 Poste.io。
    • 配置端口映射或共享主机网络,确保容器与外部网络的连接正常。
  • Poste.io 配置与管理

    • 通过 Docker 容器运行 Poste.io,确保数据持久化。
    • 配置管理员账户、邮件域名、用户管理以及 SSL 证书,提升邮件服务器的安全性和功能性。
  • 故障排查与安全性

    • 通过查看容器日志、检查防火墙规则和 DNS 配置,快速定位和解决常见问题。
    • 实施安全性措施,如强密码、双因素认证和定期更新,保障邮件服务器的安全。

通过合理配置 Docker 和 Poste.io,您可以构建一个高效、安全且灵活的邮件服务器,满足个人或企业的邮件服务需求。根据实际使用场景,您还可以进一步优化和扩展服务器功能,如集成更多安全工具、设置邮件过滤规则等,以提升邮件服务的质量和可靠性。


附录:常用命令汇总

以下是本文中提及的常用命令,方便快速查阅和使用。

# 2. Docker 安装方法

## 2.1 在 Ubuntu 上安装 Docker
sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
sudo docker run hello-world

## 2.2 在 CentOS 上安装 Docker
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
sudo systemctl enable docker
sudo docker run hello-world

## 2.3 在 Debian 上安装 Docker
sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
sudo docker run hello-world

## 2.4 安装特定版本的 Docker
apt-cache madison docker-ce
sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io
sudo apt-mark hold docker-ce docker-ce-cli containerd.io

# 3. 配置防火墙规则

## 3.1 使用 firewalld
sudo systemctl start firewalld
sudo systemctl enable firewalld
sudo firewall-cmd --permanent --add-port=25/tcp
sudo firewall-cmd --permanent --add-port=587/tcp
sudo firewall-cmd --permanent --add-port=465/tcp
sudo firewall-cmd --permanent --add-port=143/tcp
sudo firewall-cmd --permanent --add-port=993/tcp
sudo firewall-cmd --permanent --add-port=110/tcp
sudo firewall-cmd --permanent --add-port=995/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --list-ports

## 3.2 使用 ufw
sudo ufw enable
sudo ufw allow 25/tcp
sudo ufw allow 587/tcp
sudo ufw allow 465/tcp
sudo ufw allow 143/tcp
sudo ufw allow 993/tcp
sudo ufw allow 110/tcp
sudo ufw allow 995/tcp
sudo ufw status verbose

## 3.3 使用 iptables
sudo iptables -A INPUT -p tcp --dport 25 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 587 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 465 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 143 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 993 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 110 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 995 -j ACCEPT
# Ubuntu/Debian
sudo apt-get install iptables-persistent
sudo netfilter-persistent save
# CentOS
sudo yum install iptables-services
sudo service iptables save
sudo systemctl enable iptables
sudo iptables -L -v

# 4. 运行 Poste.io 容器

## 4.1 使用桥接网络
sudo docker run -d \
  -p 25:25 \
  -p 80:80 \
  -p 443:443 \
  -p 587:587 \
  -p 465:465 \
  -p 110:110 \
  -p 995:995 \
  -p 143:143 \
  -p 993:993 \
  -v /your-data-path:/data \
  --name "mailserver" \
  analogic/poste.io

## 4.2 使用主机网络
sudo docker run -d \
  --network host \
  -v /your-data-path:/data \
  --name "mailserver" \
  analogic/poste.io

# 5. 配置 Poste.io

- 访问管理界面:http://<你的服务器IP> 或 https://<你的服务器IP>
- 创建管理员账户
- 添加邮件域名
- 管理用户和别名
- 配置 SSL 证书

# 6. 故障排查

- **端口冲突**:
  ```bash
  sudo lsof -i:25
  kill -15 <process_id>
  • 数据持久化:检查数据卷挂载和权限
  • 防火墙阻止访问:确认防火墙规则已正确应用
  • 容器日志查看
    sudo docker logs mailserver
    

7. 安全性提升

  • 配置防火墙:限制管理界面访问
  • 强密码和双因素认证
  • 定期更新 Docker 和 Poste.io
  • 定期备份数据
    sudo tar -czvf mailserver_backup_$(date +%F).tar.gz /your-data-path
    

8. 常见问题

  • 邮件无法发送/接收

    • 检查 DNS 配置(A记录、MX记录)
    • 确认防火墙端口开放
    • 查看容器日志
  • 防火墙问题

    • 使用相应命令检查防火墙状态和规则
  • 数据持久化

    • 确认数据卷正确挂载和权限设置
  • SSL 证书问题

    • 确保证书路径正确挂载
    • 检查证书有效性
  • 容器无法启动

    • 查看容器日志
    • 检查 Docker 和 Poste.io 版本兼容性
    • 确认系统资源充足

9. 总结

通过本文的详细步骤,您已经成功搭建了一个基于 Docker 的 Poste.io 邮件服务器。以下是关键要点总结:

  • Docker 安装与配置

    • 根据不同操作系统选择合适的 Docker 安装方法。
    • 安装特定版本的 Docker 以满足兼容性需求。
  • 防火墙配置

    • 使用 firewalldufwiptables 开放必要端口,确保邮件服务的正常运行。
    • 根据系统类型选择合适的防火墙管理工具,并正确应用规则。
  • Docker 网络模式

    • 了解桥接网络和主机网络的区别,选择适合的网络模式部署 Poste.io。
    • 配置端口映射或共享主机网络,确保容器与外部网络的连接正常。
  • Poste.io 配置与管理

    • 通过 Docker 容器运行 Poste.io,确保数据持久化。
    • 配置管理员账户、邮件域名、用户管理以及 SSL 证书,提升邮件服务器的安全性和功能性。
  • 故障排查与安全性

    • 通过查看容器日志、检查防火墙规则和 DNS 配置,快速定位和解决常见问题。
    • 实施安全性措施,如强密码、双因素认证和定期更新,保障邮件服务器的安全。

通过合理配置 Docker 和 Poste.io,您可以构建一个高效、安全且灵活的邮件服务器,满足个人或企业的邮件服务需求。根据实际使用场景,您还可以进一步优化和扩展服务器功能,如集成更多安全工具、设置邮件过滤规则等,以提升邮件服务的质量和可靠性。


附录:常用命令汇总

以下是本文中提及的常用命令,方便快速查阅和使用。

# 2. Docker 安装方法

## 2.1 在 Ubuntu 上安装 Docker
sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
sudo docker run hello-world

## 2.2 在 CentOS 上安装 Docker
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
sudo systemctl enable docker
sudo docker run hello-world

## 2.3 在 Debian 上安装 Docker
sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
sudo docker run hello-world

## 2.4 安装特定版本的 Docker
apt-cache madison docker-ce
sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io
sudo apt-mark hold docker-ce docker-ce-cli containerd.io

# 3. 配置防火墙规则

## 3.1 使用 firewalld
sudo systemctl start firewalld
sudo systemctl enable firewalld
sudo firewall-cmd --permanent --add-port=25/tcp
sudo firewall-cmd --permanent --add-port=587/tcp
sudo firewall-cmd --permanent --add-port=465/tcp
sudo firewall-cmd --permanent --add-port=143/tcp
sudo firewall-cmd --permanent --add-port=993/tcp
sudo firewall-cmd --permanent --add-port=110/tcp
sudo firewall-cmd --permanent --add-port=995/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --list-ports

## 3.2 使用 ufw
sudo ufw enable
sudo ufw allow 25/tcp
sudo ufw allow 587/tcp
sudo ufw allow 465/tcp
sudo ufw allow 143/tcp
sudo ufw allow 993/tcp
sudo ufw allow 110/tcp
sudo ufw allow 995/tcp
sudo ufw status verbose

## 3.3 使用 iptables
sudo iptables -A INPUT -p tcp --dport 25 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 587 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 465 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 143 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 993 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 110 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 995 -j ACCEPT

# 4. 运行 Poste.io 容器

## 4.1 使用桥接网络
sudo docker run -d \
  -p 25:25 \
  -p 80:80 \
  -p 443:443 \
  -p 587:587 \
  -p 465:465 \
  -p 110:110 \
  -p 995:995 \
  -p 143:143 \
  -p 993:993 \
  -v /your-data-path:/data \
  --name "mailserver" \
  analogic/poste.io

## 4.2 使用主机网络
sudo docker run -d \
  --network host \
  -v /your-data-path:/data \
  --name "mailserver" \
  analogic/poste.io

# 5. 配置 Poste.io

- 访问管理界面:http://<你的服务器IP> 或 https://<你的服务器IP>
- 创建管理员账户
- 添加邮件域名
- 管理用户和别名
- 配置 SSL 证书

# 6. 故障排查

- **端口冲突**:
  ```bash
  sudo lsof -i:25
  kill -15 <process_id>
  • 数据持久化:检查数据卷挂载和权限
  • 防火墙阻止访问:确认防火墙规则已正确应用
  • 容器日志查看
    sudo docker logs mailserver
    


评论