office365 smtp 메일 발송 오류 (javax.net.ssl.SSLHandshakeException: Remote host terminated the handshake )

익명
2024-10-06T23:52:34+00:00

안녕하세요

smtp 서버 office365 에 포트 587번 사용해서 메일 발송할 때 예외가 발생합니다

타사 도메인 (naver, nate, google, daum 등) 의 경우는 정상 발송되고 있음을 확인하였으나
@office365.com의 도메인으로 발송시에만 해당 오류가 발생하여 확인을 요청드리고자 합니다.

메일발송을 시도하는 저희 IP주소는 : 2********이며, 메일 발송 목적은 세금계산서 발송 목적으로 사용하려고 합니다.

[2024-10-07 08:36:23][ERROR][IBCException.java][319] e.getMessage():Can't send command to SMTP host

errorMessage:

time : 2024-10-07 08:36:23

[2024-10-07 08:36:23][ERROR][IBCException.java][336] 1 : com.sun.mail.smtp.SMTPTransport.sendCommand(SMTPTransport.java:1420)

2 : com.sun.mail.smtp.SMTPTransport.sendCommand(SMTPTransport.java:1408)

3 : com.sun.mail.smtp.SMTPTransport.ehlo(SMTPTransport.java:847)

4 : com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:384)

5 : javax.mail.Service.connect(Service.java:275)

6 : javax.mail.Service.connect(Service.java:156)

javax.mail.MessagingException: Can't send command to SMTP host;

nested exception is:

javax.net.ssl.SSLHandshakeException: Remote host terminated the handshake  

at com.sun.mail.smtp.SMTPTransport.sendCommand(SMTPTransport.java:1420)  

at com.sun.mail.smtp.SMTPTransport.sendCommand(SMTPTransport.java:1408)  

at com.sun.mail.smtp.SMTPTransport.ehlo(SMTPTransport.java:847)  

at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:384)  

at javax.mail.Service.connect(Service.java:275)  

at javax.mail.Service.connect(Service.java:156)  

at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)  

at javax.servlet.http.HttpServlet.service(HttpServlet.java:779)  

at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:466)  

at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:379)  

at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:327)  

at javax.servlet.http.HttpServlet.service(HttpServlet.java:779)  

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)  

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)  

at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)  

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)  

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)  

at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:109)  

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)  

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)  

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:177)  

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)  

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)  

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)  

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)  

at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687)  

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)  

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360)  

at org.apache.coyote.ajp.AjpProcessor.service(AjpProcessor.java:433)  

at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)  

at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:891)  

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1784)  

at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)  

at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)  

at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)  

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)  

at java.lang.Thread.run(Thread.java:750)  

Caused by: javax.net.ssl.SSLHandshakeException: Remote host terminated the handshake

at sun.security.ssl.SSLSocketImpl.handleEOF(SSLSocketImpl.java:1579)  

at sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1409)  

at sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1309)  

at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:440)  

at sun.security.ssl.SSLSocketImpl.ensureNegotiated(SSLSocketImpl.java:822)  

at sun.security.ssl.SSLSocketImpl.access$200(SSLSocketImpl.java:73)  

at sun.security.ssl.SSLSocketImpl$AppOutputStream.write(SSLSocketImpl.java:1184)  

at com.sun.mail.util.TraceOutputStream.write(TraceOutputStream.java:101)  

at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)  

at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140)  

at com.sun.mail.smtp.SMTPTransport.sendCommand(SMTPTransport.java:1418)  

... 41 more  

Caused by: java.io.EOFException: SSL peer shut down incorrectly

at sun.security.ssl.SSLSocketInputRecord.decode(SSLSocketInputRecord.java:167)  

at sun.security.ssl.SSLTransport.decode(SSLTransport.java:109)  

at sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1401)  

... 50 more
Outlook | Windows | Windows용 클래식 Outlook | 가정용

잠긴 질문. 이 질문은 Microsoft 지원 커뮤니티에서 마이그레이션되었습니다. 질문이 도움이 되었는지 여부에 대해 응답할 수는 있지만, 메모나 회신을 추가하거나 질문을 따를 수는 없습니다.

댓글 0개 설명 없음

답변 1개

정렬 기준: 가장 유용함
  1. 익명
    2024-10-10T09:22:18+00:00

    이 응답은 자동 번역되었습니다. 따라서 문법적 오류나 이상한 표현이 있을 수 있습니다.

    안녕하세요 송원선 씨입니다.

    좋은 하루. 커뮤니티에 게시해 주셔서 감사합니다!

    불편을 끼쳐 드려 대단히 죄송합니다. 발생하는 오류는 일반적으로 보내는 서버와 Microsoft의 Office 365 SMTP 서버 간의 SSL(Secure Socket Layer) 핸드셰이크가 실패했음을 나타냅니다. 특정 도메인으로 이메일을 보내려고 할 때 몇 가지 요인이 이 문제에 기여할 수 있습니다.javax.net.ssl.SSLHandshakeException: Remote host terminated the ******@office365.com

    1. TLS 요구 사항: Office 365 엄격한 보안 조치를 적용하고 TLS(전송 계층 보안)를 사용하도록 설정해야 합니다. 보내는 서버가 호환되는 TLS 버전(일반적으로 TLS 1.2 이상)을 사용하도록 제대로 구성되지 않은 경우 연결이 종료될 수 있습니다.
    2. 인증서 문제: 보내는 서버의 SSL 인증서가 Office 365 서버에서 유효한 것으로 인식되지 않을 수 있습니다. 인증서가 자체 서명되었거나 신뢰할 수 없는 공급자의 인증서인 경우 핸드셰이크가 실패합니다.
    3. 차단된 IP 주소: 보내는 IP 주소는 Microsoft의 스팸 방지 조치에 의해 차단되거나 플래그가 지정될 수 있습니다. 이는 IP에서 보낸 이전 통신이 의심스럽거나 스팸으로 식별된 경우에 발생할 수 있습니다.
    4. 방화벽/네트워크 구성: 잘못 구성된 네트워크 방화벽 또는 보안 어플라이언스는 SMTP 연결을 중단하여 핸드셰이크 실패로 이어질 수 있습니다.
    5. 인증 문제: SMTP 서버에서 사용하는 자격 증명(사용자 이름 및 암호)이 올바야 하며 지정된 도메인을 대신하여 이메일을 보내는 데 필요한 권한이 있어야 합니다.

    아래 단계에 따라 문제를 해결하십시오.

    • TLS 구성 확인: 메일 서버가 TLS 버전 1.2 이상을 사용하도록 구성되어 있는지 확인합니다. SSL 및 TLS와 관련된 모든 설정은 일반적으로 메일 서버의 구성 패널에서 찾을 수 있습니다.
    • SSL 인증서 확인: 보내는 메일 서버에 설치된 SSL 인증서를 검토합니다. 필요한 경우 자체 서명된 인증서를 공인된 인증 기관의 인증서로 교체합니다.
    • IP 주소 확인: 이 도구를 사용하여 보내는 IP 주소가 Microsoft에 의해 블랙리스트에 있거나 차단되었는지 확인합니다. 그렇다면 Microsoft 지원에 문의하여 가능한 목록을 삭제할 수 있는지 확인합니다.
    • 방화벽 검토: 방화벽 또는 프록시 설정을 확인하여 SMTP 트래픽을 방해하지 않는지 확인합니다. SMTP 포트(특히 Office 365의 경우 포트 587)에 대한 아웃바운드 연결이 허용되는지 확인합니다.
    • 로그 분석: 핸드셰이크 실패의 특정 특성을 나타낼 수 있는 자세한 오류 메시지에 대한 자세한 내용은 메일 서버 로그를 확인합니다.

    이 오류는 특히 전자 메일을 보내고 다른 도메인이 제대로 작동할 때 발생하며, 이로 인해 보내는 도메인 또는 IP와 관련하여 Office 365 쪽에서 구성 또는 정책 문제가 발생할 가능성이 높아집니다. 조사를 위해 이 문제를 Microsoft 지원에 보고하여 귀중한 통찰력과 해결 방법을 얻을 수도 있습니다.@office365.com

    문제가 지속되면 Microsoft 365 관리자에게 문의하고 이 문서의 단계를 따르는 것이 좋습니다. 지원 받기 - Microsoft 365 관리자 | Microsoft Learn을 사용하여 Microsoft에 대한 지원 티켓을 만듭니다.

    다음을 통해 MS 지원에 전화할 수도 있습니다. 글로벌 고객 서비스 전화 번호 - Microsoft 지원

    여러분의 귀중한 시간과 협력에 진심으로 감사드립니다.

    솔직히

    MD 아샤불 하케 | Microsoft 커뮤니티 중재자

    이 대답이 도움이 되었나요?

    댓글 0개 설명 없음