curl로 HTTP 프록시를 통해 메일 보내기
보내기를 시도하기 전에 CONNECT 권한, SMTP TLS, 그리고 프록시와 메일 서비스의 별도 자격 증명을 확인하세요.
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 인사말이 도착하기 전에 거부된 터널과 다른 해결책이 필요합니다.