Eu configurei um servidor exim em um container Debian 10 com LXD e então criei um dispositivo proxy para mapear a porta SMTP do host para o container:
lxc config device add mycontainer myport25 proxy listen=tcp:x.x.x.x:25 connect=tcp:127.0.0.1:25
onde xxxx é o IP público do host.
O encaminhamento de porta está funcionando bem, mas, como eu esperava, os logs do exim estão mostrando o IP local em vez dos servidores remotos. Por exemplo:
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 Concluído
É possível fazer com que o exim mostre nos logs o IP encaminhado ao invés de 127.0.0.1?
Eu li https://www.exim.org/exim-html-current/doc/html/spec_html/ch-proxies.html mas se eu usar a opção hosts_proxy, meu servidor rejeita e-mails recebidos com este erro: "503 Command recusado , a negociação de proxy necessária falhou".
Eu sei que posso encaminhar a porta usando iptables simples no host e o IP privado do contêiner, mas gostaria de saber se posso fazer isso usando o recurso de proxy do LXD.
Cumprimentos,
Ok, eu peço desculpas. Esqueci de adicionar o proxy_protocol=true ao comando que cria o proxy:
Agora os logs do exim mostram o IP do servidor do remetente:
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 Concluído