Framework/Spring
[Error]EC2 Gmail SMTP 발송 오류
SHXL2
2023. 9. 8. 19:00
반응형
최근 Gmail을 이용해 메일을 보내는 기능을 추가했는데 로컬 단계에서 잘 작동하는 기능이 클라우드 서버에 올라가면 안되는 현상이 발생했습니다.
처음에는 AWS의 보안 설정을 의심했으나 Smtp port를 인바운드에 등록해도 해결되지 않았습니다.
로그에 찍힌 에러 메세지를 키워드로 원인을 찾기 시작했습니다.
could not convert socket to TLS
결론은 Gmail TLS 버전과 관련이 있었습니다.
기존 메일 서비스에는 TLS 보안인증이 활성화(prop.put("mail.smtp.starttls.enable", "true"))가 되어있습니다.
구글에서는 TLS 1.0, 1.1의 지원을 종료하겠다는 내용을 발표했는데 현재 사용 중인 javax.mail 라이브러리의 버전에서 TLS 1.1 이하를 기본으로 사용하는 것을 의심했고 TLS .1.2 버전을 강제하도록 했습니다.
private Session init() {
Properties prop = System.getProperties();
prop.put("mail.smtp.starttls.enable", "true");
prop.put("mail.smtp.host", "smtp.gmail.com");
prop.put("mail.smtp.auth", "true");
prop.put("mail.smtp.port", "587");
Authenticator auth = new EmailAuth();
return Session.getDefaultInstance(prop, auth);
}
아래와 같이 옵션을 추가하고나니 메일이 정상적으로 전송되는 것을 확인했습니다.
prop.put("mail.smtp.ssl.trust", "smtp.gmail.com");
prop.put("mail.smtp.ssl.protocols", "TLSv1.2");
참고문서
반응형