저는 AWS를 사용하고 있으며 모든 트래픽은 ASG의 오징어 농장을 통해 탄력적 NAT 게이트웨이로 라우팅됩니다. 이 경로를 통해 smtp 포트 25/110을 라우팅해야 합니다. 그러나 나는 이 일이 매우 낯설다. 나는 오징어가 이메일이 아닌 http/s라고 믿습니다. 트래픽을 오징어 농장으로 라우팅하기 위해 각 개인 노드가 프록시(예: 불투명)로 구성된 경우. 제가 이해한 바에 따르면 Squid는 이 포트로 무엇을 해야 할지 모릅니다. 트래픽을 허용하려면 Squid 상자의 IPtables를 업데이트해야 합니까? 실제로 Squid 노드는 관련되지 않으며 IPtables를 통해 수행되고 트래픽이 라우팅됩니다. NAT 게이트웨이로? 이 가정이 맞나요?
답변1
사람들이 이미 지적했듯이 오징어는 http/https 연결을 처리합니다. 하지만 이것이 반드시 이런 방식으로 메일 트래픽을 프록시할 수 없다는 의미는 아닙니다. SMTP 트래픽이 차단되는 것과 비슷한 문제가 있었기 때문에 오징어 프록시를 처리하는 솔루션을 구축한 다음 postfix가 SMTP 릴레이 자체를 진행하도록 했습니다. 나는 이 솔루션을 SMTP 부분에서만 성공적으로 사용했기 때문에 팝에서도 작동할지 확신할 수 없습니다. 팝이 포스트픽스만큼 겸손하다면 알 방법이 없다.
나는 동일한 지침을 추가했습니다.https://www.tornevalls.se/2022/06/03/how-to-proxy-relay-smtp-over-squid-services-with-postfix-and-netcat/하지만 URL은 시간이 지남에 따라 변경되는 경향이 있으므로 여기에도 세부정보를 추가하겠습니다. :)
필요한 것은 netcat과 프록시 연결의 첫 번째 부분을 시작하는 스크립트입니다. 또한 내 smtp 릴레이가 포트 443에서 응답하는지 확인했습니다. 이렇게 하여 일반 포트 25 차단을 우회할 수 있었습니다. Squid는 일반적으로 http/https 트래픽을 허용하므로 이러한 포트를 사용하여 SMTP 릴레이가 이와 같이 실행되는지 확인했습니다. 이와 같이:
#!/bin/bash
cat <(echo "CONNECT SMTP.SERVER.IP:443 HTTP/1.0"; echo "") -|nc squid.server.host 3128
이 스크립트는 netcat을 사용하여 CONNECT 명령을 전송하여 원격 서버에 대한 프록시 연결을 보장합니다. 오징어 프록시가 계속 연결될 수 있도록 추가 라인을 보냅니다. 이 작업이 완료되면 나머지 부분은 이후 대화식으로 인계받는 postfix에 맡길 수 있습니다.
이제 inetd와 유사한 서비스가 필요하지만 더 이상 inetd를 사용하지 않기 때문에 이는 systemd를 통해 수행됩니다. 먼저 소켓을 설정했습니다.
/etc/systemd/system/proxysmtp.socket
[Unit]
Description=ProxySMTP Socket
[Socket]
ListenStream=1588
Accept=yes
[Install]
WantedBy=sockets.target
그런 다음 스크립트가 서비스로 실행될 수 있는지 확인합니다.
/etc/systemd/system/[이메일 보호됨]
[Unit]
Description=SMTP
Requires=proxysmtp.socket
[Service]
ExecStart=-/usr/local/sbin/smtp.sh
StandardInput=socket
DynamicUser=yes
ProtectHome=true
PrivateUsers=true
[Install]
WantedBy=multi-user.target
이제 서비스를 활성화할 차례입니다.
systemctl daemon-reload
systemctl enable proxysmtp
systemctl start proxysmtp.socket
systemctl enable proxysmtp.socket
이 모든 작업을 수행한 후 로컬 포트 1588에 연결하기 위한 릴레이 서버로 postfix를 성공적으로 구성했습니다.
/etc/postfix/main.cf
relayhost = 127.0.0.1:1588
postfix를 다시 로드하면 이메일을 계속 보내는 대신 오징어 프록시를 통해 연결이 시작됩니다.