HTTP 프록시는 메일 서버의 포트로 CONNECT 터널을 허용하면 SMTP 연결을 전달할 수 있습니다. 이 허용 여부는 같은 프록시로 웹페이지가 로드되는지보다 더 중요합니다.

STARTTLS를 사용하는 SMTP 제출은 대체로 이런 형태입니다.

curl --proxy http://203.0.113.10:8080 --proxytunnel \
  --url smtp://mail.example.com:587 --ssl-reqd \
  --user mail-user \
  --mail-from [email protected] \
  --mail-rcpt [email protected] \
  --upload-file message.eml

주소는 자리 표시자입니다. 사용 권한이 있는 메일 서비스와 발신자를 사용하세요. 사용자 옵션에 사용자 이름만 있으면 curl이 비밀번호를 묻습니다. 메시지 파일에는 적절한 메일 헤더, 빈 줄, 본문이 필요하며 수신자 주소만으로는 충분하지 않습니다.

연결과 로그인이 별도라고 예상하세요

HTTP 터널 옵션은 curl이 프록시에 SMTP 대상으로의 연결을 요청하게 합니다. 프록시는 curl의 프록시 인증 옵션을 통한 자체 자격 증명을 요구할 수 있습니다. 그런 다음 SMTP 서비스가 그 연결 안에서 메일 사용자를 인증합니다.

--ssl-reqd 은 이 SMTP URL에 TLS 업그레이드를 요구합니다. 의도한 메일 호스트 이름에 대해 인증서 검증을 켜 둔 상태로 유지하세요. 프록시 인증 성공이 TLS나 메일 로그인의 성공을 보장하지는 않습니다.

많은 범용 HTTP 프록시는 CONNECT 포트를 제한합니다. 포트 587의 거부는 의도된 정책일 수 있습니다. 관련 없는 포트를 반복해서 시도하거나 제한을 장애로 취급하지 말고 승인된 경로를 요청하세요.

메일 서비스는 경로가 동작한 뒤에도 발신자 권한과 제출 정책을 적용할 수 있습니다. SMTP 응답을 읽으세요. 인증 후 거부된 메시지는 SMTP 인사말이 도착하기 전에 거부된 터널과 다른 해결책이 필요합니다.

관련 글