저는 제 전용 송신 전용 서버를 사용하여 이메일을 보내려고 합니다. TLS를 사용하기 위해 SMTP 게이트웨이를 실행 중이며, 이로 인해 이메일을 보내는 데 사용하는 클라이언트에 인증서가 필요합니다. 이메일 전송에 postfix/ssmtp를 사용한다면 자체 서명 인증서를 매우 쉽게 구성할 수 있지만, discourse 이메일 클라이언트에서 사용자 지정 인증서를 어떻게 사용할 수 있는지 확실하지 않습니다.
간략한 개요를 이해하시려면:
쉬운 시나리오:
Discourse —send—mail—> mailgun —send–mail—> 사용자
제 시나리오:
Discourse —send–mail–> SMTP 게이트웨이를 실행 중인 제 서버 —relay-mail-using-aws-ses-API—> 사용자
@itsbhanusharma AWS SES는 월 60,000건의 이메일을 무료로 제공하며, 제 지론에 따르면 이러한 이메일 호출은 EC2 인스턴스에서 요청해야 정상적으로 작동하고, 그렇지 않으면 일반 요금으로 청구됩니다. 제 Discourse 인스턴스는 DigitalOcean 드롭렛에 호스팅되어 있습니다. 제 이해가 틀렸을 수도 있지만, 이것이 제 해석과 그 근거입니다.
따라서 SES API가 DigitalOcean IP에서 온 이메일을 수신하더라도 과금 대상이 됩니다. DO 드롭렛과 AWS SES 사이의 브릿지로 exim을 EC2 인스턴스에 설정해 사용하거나 다른 서비스를 사용하는 것도 고려해볼 수 있습니다. 작동하지 않을 것 같지만 시도해볼 수는 있습니다.
EC2에서 로컬 SMTP 서버를 실행하여 SMTP 요청을 SES로 전달하는 방식으로 중계 문제를 이미 해결했습니다. 문제는 Discourse가 이 SMTP 서버와 TLS 핸드셰이크에서 실패하는 반면, Postfix/SWAKS와 같은 다른 애플리케이션은 정상적으로 작동한다는 점입니다.
맞습니다. 하지만 여기서 Discourse는 SES와 아무 관련이 없습니다. Discourse는 SMTP 서버와 통신하는데, 이 서버는 어떤 것이든 될 수 있습니다(현재는 릴레이 서비스입니다). 같은 DO VPC 내에서 postfix/swaks 등은 해당 SMTP 서버와 정상적으로 작동하는데, 왜 Discourse만 그렇지 않은지 궁금했습니다. 해당 변수를 설정한 후에는 잘 작동합니다. 그래도 Discourse에서 SMTP 핸드셰이크에 어떤 라이브러리를 사용하는지 알고 싶습니다. 그래야 Discourse에서 개선할 수 있는 부분이 있는지 직접 확인해 볼 수 있을 것 같습니다.