Amazon SES와 관련된 SMTP 연결 또는 시간 초과 문제를 해결하려면 어떻게 해야 하나요?

3분 분량
0

Amazon Simple Email Service(Amazon SES)와 Simple Mail Transfer Protocol(SMTP)이 시간 초과됩니다. Amazon SES와 관련된 SMTP 연결 또는 시간 초과 오류를 해결하려면 어떻게 해야 하나요?

간략한 설명

시간 초과 연결은 일반적으로 클라이언트가 퍼블릭 Amazon SES 엔드포인트에 대해 TCP 연결을 설정할 수 없음을 나타냅니다. Amazon SES의 SMTP 연결 또는 시간 초과 오류를 해결하려면 우선 애플리케이션의 TCP 연결 문제를 해결합니다. TCP 연결이 성공하면 SSL/TLS 협상 문제를 해결합니다.

중요: Amazon Elastic Compute Cloud(Amazon EC2)는 기본적으로 모든 Amazon EC2 인스턴스에 대해 포트 25의 Amazon Virtual Private Cloud(VPC) 송신 트래픽을 제한합니다. 애플리케이션에 SMTP 포트 25의 트래픽이 필요한 경우 이 제한을 제거하도록 요청할 수 있습니다.

해결 방법

애플리케이션의 TCP 연결 문제 해결

1.    다음 telent, netcat(nc) 또는 Test-NetConnection 명령을 실행합니다. email-smtp.us-east-1.amazonaws.com을 사용 중인 Amazon SES SMTP 엔드포인트로 교체하세요.

telnet email-smtp.us-east-1.amazonaws.com 587
telnet email-smtp.us-east-1.amazonaws.com 25
telnet email-smtp.us-east-1.amazonaws.com 465

nc -vz email-smtp.us-east-1.amazonaws.com 587
nc -vz email-smtp.us-east-1.amazonaws.com 25
nc -vz email-smtp.us-east-1.amazonaws.com 465

-또는-

PowerShell에서 다음 명령을 실행하여 Amazon SES SMTP 서버에 연결하세요.

Test-NetConnection -Port 587 -ComputerName email-smtp.us-west-2.amazonaws.com

2.    출력을 기록해 둡니다. 연결에 성공하면 SSL/TLS 협상 문제 해결 섹션으로 이동합니다. 연결에 실패한 경우 3단계로 진행합니다.

연결 성공

telnet 명령은 다음과 비슷한 출력을 반환합니다.

Trying 35.170.126.22...
Connected to email-smtp.us-east-1.amazonaws.com.
Escape character is '^]'.
220 email-smtp.amazonaws.com ESMTP SimpleEmailService-d-A12BCD3EF example0mJncW410pSau

PowerShell 명령은 다음과 비슷한 출력을 반환합니다.

ComputerName     : email-smtp.us-west-2.amazonaws.com
RemoteAddress    : 198.51.100.126
RemotePort       : 587
InterfaceAlias   : Ethernet
SourceAddress    : 203.0.113.46
TcpTestSucceeded : True

연결 실패(시간 초과)

telnet 명령은 다음과 비슷한 출력을 반환합니다.

Trying 18.232.32.150...
telnet: connect to address 18.232.32.150: Connection timed out

PowerShell 명령은 다음과 비슷한 출력을 반환합니다.

WARNING: Ping to 52.39.11.136 failed with status: TimedOut

ComputerName           : email-smtp.us-west-2.amazonaws.com
RemoteAddress          : 35.155.47.104
RemotePort             : 587
InterfaceAlias         : Ethernet 2
SourceAddress          : 10.0.0.140
PingSucceeded          : False
PingReplyDetails (RTT) : 0 ms
TcpTestSucceeded       : False

3.    연결에 실패한 경우 로컬 방화벽 규칙, 라우트 및 액세스 제어 목록(ACL)이 사용 중인 SMTP 포트의 트래픽을 허용하는지 확인하세요. 또한 전송 애플리케이션이 인터넷에 액세스할 수 있는지 확인하세요.

예를 들어 EC2 인스턴스를 사용하여 이메일을 전송하고 SMTP 엔드포인트에 연결하는 경우 다음을 확인합니다.

SSL/TLS 협상 문제 해결

TCP 연결이 성공했는데도 연결 또는 시간 초과 문제가 계속 발생하면 SSL/TLS에 문제가 있는지 확인하세요.

1.    EC2 리눅스 인스턴스에서 openssl 명령을 실행합니다. Amazon EC2 Windows 인스턴스의 경우 명령줄을 사용하여 Amazon SES SMTP 인터페이스에 대한 연결 테스트를 참조하고 PowerShell 탭을 선택합니다.

openssl s_client -crlf -connect email-smtp.us-east-1.amazonaws.com:465 
openssl s_client -crlf -starttls smtp -connect email-smtp.us-east-1.amazonaws.com:587

참고: email-smtp.us-east-1.amazonaws.com을 사용 중인 Amazon SES SMTP 엔드포인트로 교체하세요. 기본 인증 기관(CA)의 위치를 수정하면 이전 명령을 실행할 때 문제가 발생할 수 있습니다. OpenSSL을 설치할 때 기본 CA 번들 파일의 위치를 식별해야 합니다.

2.    출력을 기록해 둡니다. 예상되는 응답은 SMTP 220 및 SMTP 250입니다.

3.    예상 출력을 얻지 못하면 다음을 확인하세요.

  • SSL/TLS 인증서 저장소가 올바르게 구성되어 있는지 확인합니다.
  • 전송 애플리케이션이 인증서에 대한 올바른 경로를 가지고 있는지 확인합니다.
  • Amazon SES 인증서가 서버에 설치되어 있는지 확인합니다.

참고: 올바른 인증서가 설치되어 있는지 테스트할 수 있습니다. 지침을 보려면 Amazon Trust Services Migration로 이동하여 인증서 섹션을 검토하세요.


관련 정보

Amazon SES SMTP 인터페이스를 사용하여 이메일 보내기