我使用 LXD 在 Debian 10 容器中设置了一个 exim 服务器,然后创建了一个代理设备来将 SMTP 端口从主机映射到容器:
lxc config device add mycontainer myport25 proxy listen=tcp:x.x.x.x:25 connect=tcp:127.0.0.1:25
其中 xxxx 是主机的公共 IP。
端口转发工作正常,但正如我所料,exim 日志显示的是本地 IP 而不是远程服务器的。例如:
2020-10-07 13:45:40 1kQ7t6-0008P1-3M <= [email protected] H=localhost (server.remote.domain.com) [127.0.0.1] P=esmtps X=TLS1.0:RSA_AES_256_CBC_SHA1:256 CV=no S=14259 [email protected]
2020-10-07 13:45:40 1kQ7t6-0008P1-3M => |/usr/local/bin/script.php [email protected] R=myrouter T=myrouter_pipe 2020-10-07 13:45: 40 1kQ7t6-0008P1-3M 完成
是否可以让 exim 在日志中显示转发的 IP 而不是 127.0.0.1?
我阅读了https://www.exim.org/exim-html-current/doc/html/spec_html/ch-proxies.html但如果我使用 hosts_proxy 选项,我的服务器会拒绝传入的电子邮件并出现以下错误:“503 命令被拒绝,所需的代理协商失败”。
我知道我可以使用主机中的普通 iptables 和容器的私有 IP 转发端口,但我想知道是否可以使用 LXD 的代理功能来实现。
问候,
好吧,我很抱歉。我忘记将 proxy_protocol=true 添加到创建代理的命令中:
现在 exim 日志显示发件人服务器 IP:
2020-10-07 16:45:21 1kQAgz-0000Hk-4g => |/usr/local/bin/mailgate.php [email protected] R=myrouter T=mytransport_pipe 2020-10-07 16:45: 21 1kQAgz-0000Hk-4g 完成