强烈建议先看在搭建邮箱服务器之前
poste.io 使用docker封装haraka、dovecot、rspamd和clamav等组件搭建邮箱服务器。使用docker可以非常轻松的进行安装,只需要两步。官方DEMO,官方配置文档。当然,你需要先安装docker engine。
rspamd是用于过滤spam的组件,如果你有1G的内存,完全足够安装(需要1G左右的swap);但如果你想使用clamav来杀毒,你可能需要2G或者3G的内存。
成功安装poste.io后,在你开始向外发送邮件之前,你还应该进行这些设置。
第一步 编写docker-compose.yml
docker-compose.yml
是一个用于定义和运行多容器 Docker 应用程序的配置文件。它使用 YAML(YAML Ain’t Markup Language)格式编写,允许用户通过单个文件来配置应用服务的所有方面。这个文件通常与 Docker Compose 工具一起使用,后者是一个用于定义和管理多容器 Docker 应用程序的工具。
你需要在一个合理的地方放置这个文件,如:/opt/poste
下,或是其它你不会忘记的地方。
version: '3' services: mailserver: image: analogic/poste.io #镜像源位置,如果你有钱可以上pro版 container_name: postemail #容器名,自定义 restart: unless-stopped ports: #左边是外部端口,右侧是docker容器的内部端口 - "580:80" #修改你想要开放的http端口,如果你没有其它网页服务可以设置为80 - "5443:443" #修改你想要开放的https端口,如果你没有其它网页服务可以设置为443 - "25:25" #SMTP端口 - "110:110" #POP3端口 - "143:143" #IMAP端口 - "465:465" #SMTP端口 - "587:587" #SMTP端口 - "993:993" #IMAP端口 - "995:995" #POP3端口 # - "4190:4190"#远程sieve端口 environment: - HTTPS=OFF #如果你有反代工具,如nginx,可以设置为OFF # - DISABLE_RSPAMD=FLASE #禁用RSPAMD,如果需要取消注释, - DISABLE_CLAMAV=TRUE #禁用CLAMAV,如果你只有1G内存就禁用吧 - TZ=Asia/Shanghai #时区设置 - LETSENCRYPT_EMAIL=Your_email #acme邮箱账户,如果你已经有证书,可以 - LETSENCRYPT_HOST=You_Host_name #不通过docker内申请,并注释这两条 - VIRTUAL_HOST= #虚拟主机名如mail.domain.tld,和上一个最好一样 volumes: #dockers卷设置,左边是外部,右边是docker容器内部, - /etc/localtime:/etc/localtime:ro #ro代表只读 - ./data:/data #将在docker-compose.yml位置处创建data文件夹 - /www/nginx/html/.well-known:/opt/www/.well-known #如果你需要在poste网页上使用acme生成证书,且你在容器外部 #运行着nginx占用80端口,你需要将容器内的.well-known文件夹指向外部nginx使用的文件夹再申请。 #有点复杂,建议直接使用下面的证书软连接,或者直接让容器接管80端口 - /path/to/mail.domain.tld.key:/data/ssl/server.key:ro #证书密钥地址,可以是fullchain - /path/to/gts.cer:/data/ssl/ca.crt:ro #CA证书地址 - /path/to/mail.domain.tld.cer:/data/ssl/server.crt:ro #证书地址 #如果你想直接在网页上申请证书,可以注释上面三行
不知道什么原因,当我尝试在网页端导入证书时,总是会报错,但直接在docker-compose.yml中定义证书的链接是可以成功解决的。
在定义volumes链接之前,你应该仔细确认被链接的本机位置是否存在再进行下一步。
第二步 compose up
cd 到含有你刚编写的docker-compose.yml的目标文件夹,如/opt/poste
,运行:
docker compose up
docker engine会自动下载镜像,并为你生成一个容器运行。
安装成功后,你可以通过设定的http端口来访问poste.io进行其它的设置,如邮箱账户的创建,DNSBL设置,但不要立即向外发送邮件测试。
修改容器设置
如果你需要修改docker-compose.yml内的设置,你需要先移除你运行的容器。不用担心数据的丢失,所有文件都储存在外部的data文件夹下,如/opt/poste/data
,如果你只后需要迁移邮局,将data文件夹完整移动就可以。
还是在docker-compose.yml所在的目录下运行:
docker compose down
再对docker-compose.yml进行修改,直接对容器进行修改是很麻烦的,修改完后再运行:
docker compose up