본문 바로가기
JAVA

메일 발송

by oncerun 2021. 11. 6.
반응형

 

내부망에서 SMTP 서버의 접근 권한을 얻었고 이제 사용자들에게 메일 발송 로직을 작성했는데

생각보다 막히는 부분이 많았다.

 

1. SMTP 인증하는 부분에서 ID 및 PASSWORD가 없으니 25번 포트로 진행하라는 답변을 인프라팀에게 전달받았다.

 

 

그래서 테스트를 진행하는 과정에서 오류가 난다. 디버깅을 통해 도대체 어느 부분에서 오류가 발생하는지 확인하기 위해 찾아봤더니..

 

Authenticator auth = new SMTPAuthenticator(user, pwd);
Session session = Session.getInstance(props, auth);


//이걸루 변경
Session session = Session.getInstance(props);

세션을 얻는 과정에서 오류가 발생했다. 

 

test 해야 할 부분

 

1. mail.smtp.debug true설정했지만 mail 라이브러리의 loggging이 작동하지 않음. 

 : mail.debug로 변경해서 실행해봐야 함.

 

2.  통상적으로 25번 포트는 non-ssl, 465는 ssl, 587은 tls용이다. 

mail.smtp.auth

mail.smtp.ssl.enable

mail.smtp.starttls.enable

mail.smtp.host

해당 속성 값 확인

 

예상 시나리오는 다음과 같다.

 

1. mail.smtp.auth 설정이 false이어야 하는데 true로 설정되어서 권한 관련 문제

 

2. mail.smtp.ssl.enable 설정이 true로 설정되어 mail.smtp.port가 25로 설정되었지만 실제 통신은 465 포트로 진행하다가 에러가 발생한 경우

 

3. mail.smtp.starttls.enable 설정이 true로 설정되어 mail.smtp.port 25번 포트가 아닌 587 포트로 진행하다가 에러 발생

 

4. telnet으로 해당 SMTP 서버 접속 후 EHLO 원본 도메인 입력 OR EHLO localhost로  응답 값 확인하고 

만약 AUTH LOGIN PLAIN 발견 시 진짜 ID, PWD가 없는지 재 문의

 

보통 SMTP Relay 설정이 되어 있는데 AUTH LOGIN PLAIN를 통한 릴레이 권한을 획득하는 경우가 있고

OPEN Relay 서버일 수 도 있다. Open Relay서버인지 다시 한번 확인할 필요가 있다.

 

5. 혹시 우리 서버가 DNS 서버에서 IP주소를 못 받아 온다라는 생각도 함.

 

 

 

반응형

'JAVA' 카테고리의 다른 글

JDK Dynamic Proxy  (0) 2022.01.22
Server Networking Proxy  (0) 2021.11.14
JavaMail API  (0) 2021.10.24
[JAVA] CLASS 클래스  (0) 2020.04.23
JAVA 연산자 -3  (0) 2020.02.20

댓글