コマンドラインを使用して Amazon SESSMTPインターフェイスへの接続をテストする - Amazon Simple Email Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

コマンドラインを使用して Amazon SESSMTPインターフェイスへの接続をテストする

コマンドラインからこのセクションで説明する方法を使用して、Amazon SESSMTPエンドポイントへの接続をテストし、SMTP認証情報を検証し、接続の問題をトラブルシューティングできます。以下の手順では、代表的なオペレーティングシステムに搭載されているツールやライブラリを使用します。

SMTP 接続問題のトラブルシューティングの詳細については、「」を参照してくださいAmazon SES SMTP の問題

前提条件

Amazon SESSMTPインターフェイスに接続するときは、一連のSMTP認証情報を指定する必要があります。これらのSMTP認証情報は、標準の AWS 認証情報とは異なります。2 つのタイプの認証情報は、一方をもう一方の代わりに使用することはできません。SMTP 認証情報の取得の詳細については、「」を参照してくださいAmazon SESSMTP認証情報の取得

Amazon SESSMTPインターフェイスへの接続のテスト

コマンドラインを使用して、メッセージを認証または送信せずに Amazon SESSMTPインターフェイスへの接続をテストできます。この手順は、基本的な接続問題のトラブルシューティングに役立ちます。テスト接続に失敗した場合は、「SMTP に関する問題」を参照してください。

このセクションでは、OpenSSL (ほとんどの Linux、macOS、Unix ディストリビューションに含まれ、Windows でも利用可能) と Test-NetConnection の コマンドレット PowerShell (Windows の最新バージョンに含まれます) の両方を使用して接続をテストする手順について説明します。

Linux, macOS, or Unix

Open を使用して Amazon SESSMTPインターフェイスに接続するには、ポート 587 SSL経由で明示的SSLを使用するか、ポート 465 SSL経由で暗黙的を使用するという 2 つの方法があります。

明示的な を使用してSMTPインターフェイスに接続するには SSL
  • コマンドラインで、次のコマンドを入力して Amazon SESSMTPサーバーに接続します。

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

    前のコマンドで、 を置き換えます。email-smtp.us-west-2.amazonaws.com AWS リージョンURLの Amazon SESSMTPエンドポイントの を使用します。詳細については、「リージョンと 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 秒間何もしないと、接続は自動的に終了します。

または、暗黙的にポート 465 経由でSMTPインターフェイスSSLに接続することもできます。

暗黙的な を使用してSMTPインターフェイスに接続するには SSL
  • コマンドラインで、次のコマンドを入力して Amazon SESSMTPサーバーに接続します。

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

    前のコマンドで、 を置き換えます。email-smtp.us-west-2.amazonaws.com AWS リージョンURLの Amazon SESSMTPエンドポイントの を使用します。詳細については、「リージョンと 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

テストNetConnectionコマンドレットを使用して Amazon SESSMTPサーバー PowerShell に接続できます。

注記

コマンドレットは、コンピュータが Amazon Test-NetConnection SESSMTPエンドポイントに接続できるかどうかを判断できます。ただし、コンピュータがSMTPエンドポイントに暗黙的または明示的なSSL接続を行えるかどうかをテストしません。SSL 接続をテストするには、OpenSSL for Windows をインストールしてテストメールを送信できます。

Test-NetConnection コマンドレットを使用してSMTPインターフェイスに接続するには
  • で PowerShell、次のコマンドを入力して Amazon SESSMTPサーバーに接続します。

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

    前のコマンドで、 を置き換えます。email-smtp.us-west-2.amazonaws.com を AWS リージョンの Amazon SESSMTPエンドポイントURLの に置き換えます。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 SESSMTPインターフェイスを使用して E メールを送信する

コマンドラインを使用して、Amazon SESSMTPインターフェイスを使用してメッセージを送信することもできます。この手順は、SMTP認証情報をテストしたり、Amazon を使用して送信したメッセージを受信する特定の受信者の機能をテストしたりするのに役立ちますSES。

Linux, macOS, or Unix

E メール送信者がSMTPサーバーに接続すると、クライアントは標準のリクエストセットを発行し、サーバーは各リクエストに標準のレスポンスで返信します。この一連のリクエストとレスポンスは、SMTP会話 と呼ばれます。Open を使用して Amazon SESSMTPサーバーに接続するとSSL、サーバーはSMTP会話が発生することを期待します。

OpenSSL を使用してSMTPインターフェイスに接続する場合は、base64 エンコードを使用してSMTP認証情報をエンコードする必要があります。このセクションでは、base64 を使用して認証情報をエンコードする手順を示します。

SMTP インターフェイスを使用してコマンドラインから E メールを送信するには
  1. コマンドラインで以下を入力し、置き換えます。email-smtp.us-west-2.amazonaws.com の Amazon SESSMTPエンドポイントURLの を使用します AWS リージョン。詳細については、「」を参照してくださいリージョンと Amazon 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. 各変数のプロンプトで、値を入力します。

    • ポート 465 SSLで暗黙的に を送信するには、以下を使用します。

      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 に続く数字の文字列とテキストは、E メールのメッセージ ID です。

    注記

    約 10 秒間何もしないと、接続は自動的に終了します。

PowerShell

Net.Mail.SmtpClient クラスを使用して、明示的SSLなポート 587 を使用して E メールを送信できます。

注記

Net.Mail.SmtpClient クラスは正式に廃止されており、Microsoft はサードパーティー製のライブラリを使用することを推奨しています。このコードはテスト専用であり、本番環境用のワークロードには使用しないでください。

明示的な PowerShell を使用して E メールを送信するには 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. 前のステップで作成したファイルを次のように変更します。

    • 置換 sender@example.com メッセージを送信する E メールアドレス。

    • 置換 recipient@example.com メッセージを送信する E メールアドレス。

    • 置換 email-smtp.us-west-2.amazonaws.com リージョンURL AWS の Amazon SESSMTPエンドポイントの を使用します。詳細については、「リージョンと Amazon SES」を参照してください。

  3. で PowerShell、次のコマンドを入力します。

    .\path\to\SendEmail.ps1

    前のコマンドで、 を置き換えます。path\to\SendEmail.ps1 ステップ 1 で作成したファイルへのパス。

  4. プロンプトが表示されたら、SMTPユーザー名とパスワードを入力します。

または、System.Web.Mail.SmtpMail クラスを使用して、暗黙的にポート 465 SSL経由で E メールを送信することもできます。

注記

System.Web.Mail.SmtpMail クラスは正式に廃止されており、Microsoft はサードパーティー製のライブラリを使用することを推奨しています。このコードはテスト専用であり、本番環境用のワークロードには使用しないでください。

暗黙的な PowerShell を使用して E メールを送信するには 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. 前のステップで作成したファイルを次のように変更します。

    • 置換 sender@example.com メッセージを送信する E メールアドレス。

    • 置換 recipient@example.com メッセージを送信する E メールアドレス。

    • 置換 email-smtp.us-west-2.amazonaws.com リージョンURL AWS の Amazon SESSMTPエンドポイントの を使用します。詳細については、「リージョンと Amazon SES」を参照してください。

  3. で PowerShell、次のコマンドを入力します。

    .\path\to\SendEmail.ps1

    前のコマンドで、 を置き換えます。path\to\SendEmail.ps1 ステップ 1 で作成したファイルへのパス。

  4. プロンプトが表示されたら、SMTPユーザー名とパスワードを入力します。