(Debian)在不同的 Docker 容器中同时运行两个邮件和 Web 服务器

(Debian)在不同的 Docker 容器中同时运行两个邮件和 Web 服务器

我已经设置了一个带有两个 Docker 容器的 Debian Web 服务器:
- 一个 laradock 容器(laradock.io - 文档可在laradock.io)。
- 一个 mailcow 容器(mailcow.email- 提供文档这里

我首先设置了 laradock 容器,目前,在运行服务时caddy, mysql, php-fpm and workspace,docker 在我的系统上保留了以下端口(lsof -i -n -P):

COMMAND     PID        USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
docker-pr 11641        root    4u  IPv6 354251      0t0  TCP *:3306 (LISTEN)
docker-pr 11848        root    4u  IPv6 355207      0t0  TCP *:2222 (LISTEN)
docker-pr 12229        root    4u  IPv6 356964      0t0  TCP *:443 (LISTEN)
docker-pr 12241        root    4u  IPv6 357019      0t0  TCP *:80 (LISTEN)
docker-pr 13809        root    4u  IPv4 367743      0t0  TCP 127.0.0.1:19991 (LISTEN)
docker-pr 13837        root    4u  IPv4 367839      0t0  TCP 127.0.0.1:13306 (LISTEN)
docker-pr 13890        root    4u  IPv6 368035      0t0  TCP *:4190 (LISTEN)
docker-pr 13913        root    4u  IPv6 368092      0t0  TCP *:995 (LISTEN)
docker-pr 13949        root    4u  IPv6 368179      0t0  TCP *:993 (LISTEN)
docker-pr 13975        root    4u  IPv6 368244      0t0  TCP *:143 (LISTEN)
docker-pr 13989        root    4u  IPv6 368290      0t0  TCP *:110 (LISTEN)

debian-compose up -d当我尝试在安装了所有 mailcut 文件的目录中运行 mailcat-dockerized 时,遇到了以下问题:

[...] Mailcat/NGINX: Bind for 0.0.0.0:443 failed: port is already allocated [...]
[...] Mailcat/POSTFIX: Error starting userland proxy: listen tcp 0.0.0.0:25: bind: address already in use

当查看我的其他条目时lsof -i -n -P,发现失败的原因如下:

COMMAND     PID        USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
exim4      3050 Debian-exim    3u  IPv4  17648      0t0  TCP 127.0.0.1:25 (LISTEN)
exim4      3050 Debian-exim    4u  IPv6  17653      0t0  TCP [::1]:25 (LISTEN)
docker-pr 12229        root    4u  IPv6 356964      0t0  TCP *:443 (LISTEN)

Debian 预装的邮件程序exim保留了端口 25 用于监听邮件,而我的 laradock 容器caddy(一个类似 nginx 的服务器,具有更简单的 ssl)(当然)使用端口 443。
在 Mailcat-config 文件中,我可以将其 nginx 服务器的端口更改为其他端口,还可以更改 smtp 端口。
就我而言,我仍然需要exim4,所以我绝不会将其从我的系统中删除。我需要它,以便每次有人成功在我的系统上进行 ssh 登录时,我都可以发送邮件。我可以更改它的端口或 mailcat 用于 SMTP 的端口,但我不确定这会如何影响发送/接收邮件,尤其是在同时安装两个邮件收件人(exim 和 mailcow)时。我无法通过 mailcow 发送我的 ssh 登录邮件,因为它在 dockerized 容器中。
我已将 mailcow 的主机名/FQDN 设置为 mail.mydomain.com,我认为这将省去更改 caddy/nginx 端口绑定的麻烦,因为我的带有 caddy 的 laradock 容器只监听 mydomain.com 和 www.mydomain.com ,而不是 mail.mydomain.com。
如果我无论如何都要更改我的某个服务的端口,我应该将其更改为哪个端口(我应该更改我的 caddy 还是 nginx 配置 - 我会选择 nginx,因为 caddy 正在提供我的 Web 内容,因此更重要)。我如何告诉 caddy 将所有对 mail.mydomain.com 的请求重定向到另一个容器中的 nginx?

我很高兴能得到任何答案。

相关内容