명령줄을 사용하여 Amazon SES SMTP 인터페이스에 대한 연결 테스트 - Amazon Simple Email Service

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

명령줄을 사용하여 Amazon SES SMTP 인터페이스에 대한 연결 테스트

명령줄에서 이 섹션에 설명된 방법을 사용하여 Amazon SES SMTP 엔드포인트에 대한 연결을 테스트하고, SMTP 보안 인증을 검증하고, 연결 문제를 해결할 수 있습니다. 이러한 절차에서는 가장 일반적인 운영 체제에 포함된 도구 및 라이브러리를 사용합니다.

SMTP 연결 문제 해결에 대한 자세한 내용은 섹션을 참조하세요Amazon SES SMTP 문제.

사전 조건

Amazon SES SMTP 인터페이스에 연결할 때 자격 SMTP 증명 세트를 제공해야 합니다. 이러한 SMTP 자격 증명은 표준 AWS 자격 증명과 다릅니다. 두 유형의 자격 증명을 서로 바꿔 사용할 수 없습니다. SMTP 보안 인증 획득에 대한 자세한 내용은 섹션을 참조하세요Amazon SES SMTP 자격 증명 가져오기.

Amazon SES SMTP 인터페이스에 대한 연결 테스트

명령줄을 사용하여 인증하거나 메시지를 보내지 않고도 Amazon SES SMTP 인터페이스에 대한 연결을 테스트할 수 있습니다. 기본적인 연결 문제를 해결하는 데 이 절차가 유용합니다. 테스트 연결에 실패하는 경우 SMTP 문제 섹션을 참조하세요.

이 섹션에는 OpenSSL(대부분의 Linux, macOS 및 Unix 배포에 포함되고 Windows에도 사용 가능)과 의 Test-NetConnection cmdlet PowerShell (최신 버전의 Windows에 포함됨)을 모두 사용하여 연결을 테스트하는 절차가 포함되어 있습니다.

Linux, macOS, or Unix

Open을 사용하여 Amazon SES SMTP 인터페이스에 연결하는 방법은 포트 587SSL에서 명시적SSL을 사용하거나 포트 465SSL에서 암시적을 사용하는 두 가지가 있습니다.

명시적 를 사용하여 SMTP 인터페이스에 연결하려면 SSL
  • 명령줄에 다음 명령을 입력하여 Amazon SES SMTP 서버에 연결합니다.

    openssl s_client -crlf -quiet -starttls smtp -connect email-smtp.us-west-2.amazonaws.com:587

    앞의 명령에서 를 바꿉니다.email-smtp.us-west-2.amazonaws.com 해당 AWS 리전의 Amazon SES SMTP 엔드포인트URL에 대한 를 사용합니다. 자세한 내용은 지역 및 아마존 SES 단원을 참조하십시오.

    연결이 성공하면 다음과 비슷한 출력이 보입니다.

    depth=2 C = US, O = Amazon, CN = Amazon Root CA 1 verify return:1 depth=1 C = US, O = Amazon, OU = Server CA 1B, CN = Amazon verify return:1 depth=0 CN = email-smtp.us-west-2.amazonaws.com verify return:1 250 Ok

    비활성 시간이 약 10초 이상 지속되면 연결이 자동으로 닫힙니다.

또는 암시적 SSL 을 사용하여 포트 465를 통해 SMTP 인터페이스에 연결할 수 있습니다.

암시를 사용하여 SMTP 인터페이스에 연결하려면 SSL
  • 명령줄에 다음 명령을 입력하여 Amazon SES SMTP 서버에 연결합니다.

    openssl s_client -crlf -quiet -connect email-smtp.us-west-2.amazonaws.com:465

    앞의 명령에서 를 바꿉니다.email-smtp.us-west-2.amazonaws.com 해당 AWS 리전의 Amazon SES SMTP 엔드포인트URL에 대한 를 사용합니다. 자세한 내용은 지역 및 아마존 SES 단원을 참조하십시오.

    연결이 성공하면 다음과 비슷한 출력이 보입니다.

    depth=2 C = US, O = Amazon, CN = Amazon Root CA 1 verify return:1 depth=1 C = US, O = Amazon, OU = Server CA 1B, CN = Amazon verify return:1 depth=0 CN = email-smtp.us-west-2.amazonaws.com verify return:1 220 email-smtp.amazonaws.com ESMTP SimpleEmailService-d-VCSHDP1YZ A1b2C3d4E5f6G7h8I9j0

    비활성 시간이 약 10초 이상 지속되면 연결이 자동으로 닫힙니다.

PowerShell

Test-NetConnectioncmdlet PowerShell 을 사용하여 Amazon SES SMTP 서버에 연결할 수 있습니다.

참고

Test-NetConnection cmdlet은 컴퓨터가 Amazon SES SMTP 엔드포인트에 연결할 수 있는지 여부를 결정할 수 있습니다. 그러나 컴퓨터가 SMTP 엔드포인트에 암시적 또는 명시적 SSL 연결을 할 수 있는지는 테스트하지 않습니다. SSL 연결을 테스트하려면 Windows용 OpenSSL을 설치하여 테스트 이메일을 보낼 수 있습니다.

Test-NetConnection cmdlet을 사용하여 SMTP 인터페이스에 연결하려면
  • 에 다음 명령을 PowerShell입력하여 Amazon SES SMTP 서버에 연결합니다.

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

    앞의 명령에서 를 바꿉니다.email-smtp.us-west-2.amazonaws.com 해당 AWS 리전에 대한 Amazon SES SMTP 엔드포인트URL의 를 사용하여 를 교체하고 587 포트 번호를 사용합니다. Amazon 의 리전 엔드포인트에 대한 자세한 내용은 섹션을 SES참조하세요지역 및 아마존 SES.

    연결이 성공하면 다음 예제와 유사한 출력이 표시됩니다.

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

명령줄을 사용하여 Amazon SES SMTP 인터페이스를 사용하여 이메일 전송

명령줄을 사용하여 Amazon SES SMTP 인터페이스를 사용하여 메시지를 보낼 수도 있습니다. 이 절차는 SMTP 자격 증명을 테스트하고 Amazon 를 사용하여 보내는 메시지를 수신하는 특정 수신자의 기능을 테스트하는 데 유용합니다SES.

Linux, macOS, or Unix

이메일 발신자가 SMTP 서버에 연결되면 클라이언트는 표준 요청 세트를 발급하고 서버는 표준 응답으로 각 요청에 회신합니다. 이 일련의 요청 및 응답을 SMTP 대화라고 합니다. 열기 를 사용하여 Amazon SES SMTP 서버에 연결하면 SSL서버가 SMTP 대화가 발생할 것으로 예상합니다.

OpenSSL을 사용하여 SMTP 인터페이스에 연결하는 경우 base64 인코딩을 사용하여 SMTP 보안 인증을 인코딩해야 합니다. 이 단원에는 base64를 사용하여 자격 증명을 인코딩하는 절차가 나와 있습니다.

SMTP 인터페이스를 사용하여 명령줄에서 이메일을 보내려면
  1. 명령줄에 다음을 입력하고 바꿉니다.email-smtp.us-west-2.amazonaws.com 에 대한 Amazon SES SMTP 엔드포인트URL의 를 사용합니다 AWS 리전. 자세한 내용은 섹션을 참조하세요지역 및 아마존 SES.

    #!/bin/bash # Prompt user to provide following information read -p "Configuration set: " CONFIGSET read -p "Enter SMTP username: " SMTPUsername read -p "Enter SMTP password: " SMTPPassword read -p "Sender email address: " MAILFROM read -p "Receiver email address: " RCPT read -p "Email subject: " SUBJECT read -p "Message to send: " DATA echo # Encode SMTP username and password using base64 EncodedSMTPUsername=$(echo -n "$SMTPUsername" | openssl enc -base64) EncodedSMTPPassword=$(echo -n "$SMTPPassword" | openssl enc -base64) # Construct the email Email="EHLO example.com AUTH LOGIN $EncodedSMTPUsername $EncodedSMTPPassword MAIL FROM: $MAILFROM RCPT TO: $RCPT DATA X-SES-CONFIGURATION-SET: $CONFIGSET From: $MAILFROM To: $RCPT Subject: $SUBJECT $DATA . QUIT" echo "$Email" | openssl s_client -crlf -quiet -starttls smtp -connect email-smtp.us-west-2.amazonaws.com:587
  2. 각 변수에 대한 프롬프트에서 값을 입력합니다.

    • 포트 465SSL를 통해 암시를 사용하여 전송하려면 다음을 사용합니다.

      openssl s_client -crlf -quiet -connect email-smtp.us-west-2.amazonaws.com:465

    Amazon 에서 메시지를 수락SES한 경우 다음 예제와 유사한 출력이 표시됩니다.

    250 Ok 01010160d7de98d8-21e57d9a-JZho-416c-bbe1-8ebaAexample-000000

    250 Ok 뒤에 나오는 숫자 및 텍스트 문자열이 이메일의 메시지 ID입니다.

    참고

    비활성 시간이 약 10초 이상 지속되면 연결이 자동으로 닫힙니다.

PowerShell

Net.Mail.SmtpClient 클래스를 사용하여 포트 587을 SSL 통해 명시적 를 사용하여 이메일을 보낼 수 있습니다.

참고

Net.Mail.SmtpClient 클래스는 공식적으로 사용되지 않으므로 타사 라이브러리를 사용하는 것이 좋습니다. 이 코드는 테스트 목적으로만 사용되며 프로덕션 워크로드에 사용해서는 안 됩니다.

PowerShell 명시적 SSL
  1. 텍스트 편집기에서 새로운 파일을 생성합니다. 다음 코드를 파일에 붙여넣습니다.

    function SendEmail($Server, $Port, $Sender, $Recipient, $Subject, $Body) { $Credentials = [Net.NetworkCredential](Get-Credential) $SMTPClient = New-Object Net.Mail.SmtpClient($Server, $Port) $SMTPClient.EnableSsl = $true $SMTPClient.Credentials = New-Object System.Net.NetworkCredential($Credentials.Username, $Credentials.Password); try { Write-Output "Sending message..." $SMTPClient.Send($Sender, $Recipient, $Subject, $Body) Write-Output "Message successfully sent to $($Recipient)" } catch [System.Exception] { Write-Output "An error occurred:" Write-Error $_ } } function SendTestEmail(){ $Server = "email-smtp.us-west-2.amazonaws.com" $Port = 587 $Subject = "Test email sent from Amazon SES" $Body = "This message was sent from Amazon SES using PowerShell (explicit SSL, port 587)." $Sender = "sender@example.com" $Recipient = "recipient@example.com" SendEmail $Server $Port $Sender $Recipient $Subject $Body } SendTestEmail

    작업을 마치면 파일 이름을 SendEmail.ps1(으)로 저장합니다.

  2. 이전 단계에서 생성한 파일을 다음과 같이 변경합니다.

    • Replace sender@example.com 메시지를 보내려는 이메일 주소를 사용합니다.

    • Replace recipient@example.com 메시지를 보낼 이메일 주소를 포함합니다.

    • Replace email-smtp.us-west-2.amazonaws.com 해당 AWS 리전의 Amazon SES SMTP 엔드포인트URL에 대한 를 사용합니다. 자세한 내용은 지역 및 아마존 SES 단원을 참조하십시오.

  3. 에 다음 명령을 PowerShell입력합니다.

    .\path\to\SendEmail.ps1

    앞의 명령에서 를 바꿉니다.path\to\SendEmail.ps1 1단계에서 생성한 파일의 경로가 있습니다.

  4. 메시지가 표시되면 SMTP 사용자 이름과 암호를 입력합니다.

또는 System.Web.Mail.SmtpMail 클래스를 사용하여 포트 465를 SSL 통해 암시를 사용하여 이메일을 보낼 수 있습니다.

참고

System.Web.Mail.SmtpMail 클래스는 공식적으로 사용되지 않으므로 타사 라이브러리를 사용하는 것이 좋습니다. 이 코드는 테스트 목적으로만 사용되며 프로덕션 워크로드에 사용해서는 안 됩니다.

암시를 PowerShell 사용하여 를 통해 이메일을 보내려면 SSL
  1. 텍스트 편집기에서 새로운 파일을 생성합니다. 다음 코드를 파일에 붙여넣습니다.

    [System.Reflection.Assembly]::LoadWithPartialName("System.Web") > $null function SendEmail($Server, $Port, $Sender, $Recipient, $Subject, $Body) { $Credentials = [Net.NetworkCredential](Get-Credential) $mail = New-Object System.Web.Mail.MailMessage $mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserver", $Server) $mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", $Port) $mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl", $true) $mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", $Credentials.UserName) $mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", $Credentials.Password) $mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout", $timeout / 1000) $mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusing", 2) $mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", 1) $mail.From = $Sender $mail.To = $Recipient $mail.Subject = $Subject $mail.Body = $Body try { Write-Output "Sending message..." [System.Web.Mail.SmtpMail]::Send($mail) Write-Output "Message successfully sent to $($Recipient)" } catch [System.Exception] { Write-Output "An error occurred:" Write-Error $_ } } function SendTestEmail(){ $Server = "email-smtp.us-west-2.amazonaws.com" $Port = 465 $Subject = "Test email sent from Amazon SES" $Body = "This message was sent from Amazon SES using PowerShell (implicit SSL, port 465)." $Sender = "sender@example.com" $Recipient = "recipient@example.com" SendEmail $Server $Port $Sender $Recipient $Subject $Body } SendTestEmail

    작업을 마치면 파일 이름을 SendEmail.ps1(으)로 저장합니다.

  2. 이전 단계에서 생성한 파일을 다음과 같이 변경합니다.

    • Replace sender@example.com 메시지를 보내려는 이메일 주소를 사용합니다.

    • Replace recipient@example.com 메시지를 보내려는 이메일 주소를 사용합니다.

    • Replace email-smtp.us-west-2.amazonaws.com 리전 AWS 에 대한 Amazon SES SMTP 엔드포인트URL의 를 사용합니다. 자세한 내용은 지역 및 아마존 SES 단원을 참조하십시오.

  3. 에 다음 명령을 PowerShell입력합니다.

    .\path\to\SendEmail.ps1

    앞의 명령에서 를 바꿉니다.path\to\SendEmail.ps1 1단계에서 생성한 파일의 경로가 있습니다.

  4. 메시지가 표시되면 SMTP 사용자 이름과 암호를 입력합니다.