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

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

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

운영 체제의 명령줄에서 Amazon SES SMTP 인터페이스와 상호 작용할 수 있습니다. 이 단원에서 설명하는 방법은 Amazon SES SMTP 엔드포인트에 대한 연결을 테스트하고, SMTP 자격 증명을 확인하고, 연결 문제를 해결하는 데 사용하기 위한 것입니다. 이러한 절차에서는 가장 일반적인 운영 체제에 포함된 도구 및 라이브러리를 사용합니다.

SMTP 연결 문제 해결에 대한 자세한 내용은 Amazon SES SMTP 문제 단원을 참조하십시오.

Prerequisites

Amazon SES SMTP 인터페이스에 연결할 때 일련의 SMTP 자격 증명을 제공해야 합니다. 이러한 SMTP 자격 증명은 표준 AWS 자격 증명과 다릅니다. 두 유형의 자격 증명을 서로 바꿔 사용할 수 없습니다. SMTP 자격 증명을 받는 방법에 대한 자세한 내용은 Amazon SES SMTP 자격 증명 받기 단원을 참조하십시오.

Amazon SES SMTP 인터페이스와의 연결 테스트

명령줄을 사용하여 메시지를 인증하거나 보내지 않고 Amazon SES SMTP 인터페이스와의 연결을 테스트할 수 있습니다. 기본적인 연결 문제를 해결하는 데 이 절차가 유용합니다.

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

Linux, macOS, or Unix

Amazon SES SMTP 인터페이스를 OpenSSL과 연결하는 두 가지 방법이 있습니다. 포트 587을 통해 명시적 SSL을 사용하거나 포트 465를 통해 암시적 SSL을 사용하는 것입니다.

명시적 SSL을 사용하여 SMTP 인터페이스에 연결하려면

  • 명령줄에 다음 명령을 입력하여 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 다음 URL로 Amazon SES 에 대한 SMTP 끝점 AWS 지역. 자세한 정보는 리전 및 Amazon 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 인터페이스에 연결할 수 있습니다.

암시적 SSL을 사용하여 SMTP 인터페이스에 연결하려면

  • 명령줄에 다음 명령을 입력하여 Amazon SES SMTP 서버에 연결합니다.

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

    앞의 명령에서 email-smtp.us-west-2.amazonaws.com 다음 URL로 Amazon SES 에 대한 SMTP 끝점 AWS 지역. 자세한 정보는 리전 및 Amazon 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

PowerShell의 Test-NetConnection cmdlet를 사용하여 Amazon SES SMTP 서버에 연결할 수 있습니다.

참고

Test-NetConnection cmdlet를 통해 컴퓨터가 Amazon SES SMTP 엔드포인트에 연결할 수 있는지 여부를 확인할 수 있습니다. 하지만 컴퓨터가 SMTP 엔드포인트에 대한 암시적 또는 명시적 SSL 연결을 만들 수 있는지 여부는 테스트하지 않습니다. SSL 연결을 테스트하려면 Windows용 OpenSSL을 설치하거나 명령줄을 사용하여 Amazon SES SMTP 인터페이스를 통해 이메일 전송 단원의 절차를 완료하여 테스트 이메일을 보낼 수 있습니다.

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 URL을 사용하여 Amazon SES 에 대한 SMTP 끝점 AWS 지역 및 대체 587 포트 번호 을(를) 가지고 있습니다. Amazon SES의 리전 엔드포인트에 대한 자세한 내용은 리전 및 Amazon 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 대화라고 합니다. OpenSSL을 사용하여 Amazon SES SMTP 서버에 연결하면 서버가 SMTP 대화가 발생할 것을 예상합니다.

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

SMTP 인터페이스를 통해 명령줄에서 이메일을 보내려면

  1. 명령줄에서 SMTP 사용자 이름을 인코딩하는 다음 명령을 입력하고, SMTPUsername을 SMTP 사용자 이름으로 바꿉니다.

    echo -n "SMTPUsername" | openssl enc -base64

    이 명령의 출력을 기록합니다.

  2. 명령줄에서 SMTP 암호를 인코딩하는 다음 명령을 입력하고, SMTPPassword를 SMTP 암호로 바꿉니다.

    echo -n "SMTPPassword" | openssl enc -base64

    이 명령의 출력을 기록합니다.

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

    EHLO example.com AUTH LOGIN Base64EncodedSMTPUserName Base64EncodedSMTPPassword MAIL FROM: sender@example.com RCPT TO: recipient@example.com DATA X-SES-CONFIGURATION-SET: ConfigSet From: Sender Name <sender@example.com> To: recipient@example.com Subject: Amazon SES SMTP Test This message was sent using the Amazon SES SMTP interface. . QUIT
  4. 이전 단계에서 생성한 파일을 다음과 같이 변경합니다.

    • Replace example.com 을(를) 전송 도메인 와(과) 함께 사용합니다.

    • Replace Base64EncodedSMTPUserName 기본 64 인코딩 SMTP 사용자 이름 을(를) 사용하여

    • Replace Base64EncodedSMTPPassword 기본 64 인코딩 SMTP 암호 를 사용하여

    • Replace sender@example.com 에서 발송하는 이메일 주소. 이 자격 증명은 확인되어야 합니다.

    • Replace recipient@example.com 을(를) 참조하십시오. Amazon SES 계정이 아직 샌드박스 환경에 있을 경우 이 주소를 확인해야 합니다.

    • Replace ConfigSet 의 이름으로 구성 설정됨 이 이메일을 보낼 때 사용할 수 있습니다.

      참고

      구성 세트를 사용하지 않으려면 X-SES-CONFIGURATION-SET로 시작하는 전체 줄을 생략할 수 있습니다.

    작업을 마치면 파일 이름을 input.txt으로 저장합니다.

  5. 명령줄에서 다음 옵션 중 하나를 선택합니다.

    • 포트 587을 통해 명시적 SSL을 사용하여 보내려면 – 다음 명령을 입력합니다.

      openssl s_client -crlf -quiet -starttls smtp -connect email-smtp.us-west-2.amazonaws.com:587 < input.txt
    • 포트 465를 통해 암시적 SSL을 사용하여 보내려면 – 다음 명령을 입력합니다.

      openssl s_client -crlf -quiet -connect email-smtp.us-west-2.amazonaws.com:465 < input.txt
    참고

    Replace email-smtp.us-west-2.amazonaws.com 다음 URL로 Amazon SES 에 대한 SMTP 끝점 AWS 지역. 자세한 정보는 리전 및 Amazon SES 단원을 참조하십시오.

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

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

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

    참고

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

PowerShell

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

참고

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

명시적 SSL을 사용하여 PowerShell을 통해 이메일을 보내려면

  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 다음 URL로 Amazon SES 에 대한 SMTP 끝점 AWS 지역. 자세한 정보는 리전 및 Amazon SES 단원을 참조하십시오.

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

    .\path\to\SendEmail.ps1

    앞의 명령에서 path\to\SendEmail.ps1 1단계에서 생성한 파일의 경로와 함께 사용합니다.

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

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

참고

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

암시적 SSL을 사용하여 PowerShell을 통해 이메일을 보내려면

  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 URL을 사용하여 Amazon SES 에 대한 SMTP 끝점 AWS 지역. 자세한 정보는 리전 및 Amazon SES 단원을 참조하십시오.

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

    .\path\to\SendEmail.ps1

    앞의 명령에서 path\to\SendEmail.ps1 1단계에서 생성한 파일의 경로와 함께 사용합니다.

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