Teste de sua conexão com a interface SMTP do Amazon SES usando a linha de comando - Amazon Simple Email Service

Teste de sua conexão com a interface SMTP do Amazon SES usando a linha de comando

Você pode usar os métodos descritos nesta seção a partir da linha de comando para testar sua conexão com o endpoint SMTP do Amazon SES, validar suas credenciais SMTP e solucionar problemas de conexão. Esses procedimentos usam ferramentas e bibliotecas que estão incluídas nos sistemas operacionais mais comuns.

Para obter informações adicionais sobre como solucionar problemas de conexão SMTP, consulte Problemas de SMTP do Amazon SES.

Pré-requisitos

Ao conectar-se à interface SMTP do Amazon SES, é necessário fornecer um conjunto de credenciais SMTP. Essas credenciais de SMTP são diferentes das suas credenciais padrão da AWS. Os dois tipos de credenciais não são intercambiáveis. Para obter mais informações sobre como obter as credenciais de SMTP, consulte Obtenção de credenciais SMTP do Amazon SES.

Como testar sua conexão com a interface SMTP do Amazon SES

É possível usar a linha de comando para testar sua conexão com a interface SMTP do Amazon SES sem autenticar e sem enviar nenhuma mensagem. Esse procedimento é útil para solucionar problemas básicos de conectividade.

Esta seção inclui procedimentos para testar sua conexão usando tanto o OpenSSL (que está incluído na maioria das distribuições Linux, macOS e Unix e também está disponível para Windows) como o cmdlet Test-NetConnection no PowerShell (que está incluído nas versões mais recentes do Windows).

Linux, macOS, or Unix

Há duas maneiras de se conectar à interface SMTP do Amazon SES com OpenSSL: usando SSL explícito na porta 587 ou usando SSL implícito na porta 465.

Como se conectar à interface SMTP usando SSL explícito

  • Na linha de comando, insira o seguinte comando para se conectar ao servidor SMTP do Amazon SES:

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

    No comando anterior, substitua email-smtp.us-west-2.amazonaws.com pelo URL do endpoint SMTP do Amazon SES pata a região da AWS você que deseja usar. Para mais informações, consulte Regiões e o Amazon SES.

    Se a conexão for bem-sucedida, você verá um resultado semelhante a este:

    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

    A conexão se fecha automaticamente após cerca de 10 segundos de inatividade.

Como alternativa, é possível usar SSL implícito para se conectar à interface SMTP pela porta 465.

Como conectar-se à interface SMTP usando SSL implícito

  • Na linha de comando, insira o seguinte comando para se conectar ao servidor SMTP do Amazon SES:

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

    No comando anterior, substitua email-smtp.us-west-2.amazonaws.com pelo URL do endpoint SMTP do Amazon SES pata a região da AWS você que deseja usar. Para mais informações, consulte Regiões e o Amazon SES.

    Se a conexão for bem-sucedida, você verá um resultado semelhante a este:

    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

    A conexão se fecha automaticamente após cerca de 10 segundos de inatividade.

PowerShell

É possível usar o cmdlet Test-NetConnection no PowerShell para se conectar ao servidor SMTP do Amazon SES.

nota

O cmdlet Test-NetConnection pode determinar se o computador pode se conectar ao endpoint SMTP do Amazon SES. No entanto, isso não testa se o computador pode estabelecer uma conexão SSL implícita ou explícita com o endpoint SMTP. Para testar uma conexão SSL, é possível instalar o OpenSSL para Windows ou concluir o procedimento no Uso da linha de comando para enviar e-mail usando a interface SMTP do Amazon SES para enviar um e-mail de teste.

Como conectar-se à interface SMTP usando o cmdlet Test-NetConnection

  • No PowerShell, insira o seguinte comando para se conectar ao servidor SMTP do Amazon SES:

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

    No comando anterior, substitua email-smtp.us-west-2.amazonaws.com pelo URL do endpoint SMTP do Amazon SES para a região da AWS e substitua 587 pelo número da porta. Para obter mais informações sobre endpoints regionais no Amazon SES, consulte Regiões e o Amazon SES.

    Se a conexão foi bem-sucedida, é exibida uma saída semelhante a este exemplo:

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

Uso da linha de comando para enviar e-mail usando a interface SMTP do Amazon SES

Também é possível usar a linha de comando para enviar mensagens usando a interface SMTP do Amazon SES. Esse procedimento é útil para testar credenciais SMTP e para testar a capacidade de destinatários específicos receberem mensagens enviadas usando o Amazon SES.

Linux, macOS, or Unix

Quando um remetente de e-mail se conecta a um servidor SMTP, o cliente envia um conjunto padrão de solicitações e o servidor responde a cada solicitação com uma resposta padrão. Esta série de solicitações e respostas é chamada de conversa SMTP. Quando você se conecta ao servidor SMTP do Amazon SES usando o OpenSSL, o servidor espera que ocorra uma conversa SMTP.

Ao usar o OpenSSL para se conectar à interface SMTP, é necessário codificar suas credenciais SMTP usando a codificação em base64. Esta seção inclui procedimentos para a codificação das credenciais usando base64.

Para enviar um e-mail da linha de comando usando a interface SMTP

  1. Na linha de comando, insira o seguinte comando para codificar seu nome de usuário de SMTP, substituindo SMTPUsername pelo seu nome de usuário de SMTP:

    echo -n "SMTPUsername" | openssl enc -base64

    Anote o resultado de saída desse comando.

  2. Na linha de comando, insira o seguinte comando para codificar a senha de SMTP, substituindo SMTPPassword por sua senha de SMTP:

    echo -n "SMTPPassword" | openssl enc -base64

    Anote o resultado de saída desse comando.

  3. Em um editor de texto, crie um novo arquivo. Cole o seguinte código no arquivo:

    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. Faça as seguintes alterações no arquivo que você criou na etapa anterior:

    • Substitua example.com pelo seu domínio de envio.

    • Substitua Base64EncodedSMTPUserName pelo seu nome de usuário SMTP codificado com base64.

    • Substitua Base64EncodedSMTPPassword pela sua senha SMTP codificada com base64.

    • Substitua sender@example.com pelo endereço de e-mail que você está usando como remetente. Essa identidade deve ser verificada.

    • Substitua recipient@example.com pelo endereço de e-mail do destinatário. Se sua conta do Amazon SES ainda estiver na sandbox, este endereço deve ser verificado.

    • Substitua ConfigSet pelo nome do conjunto de configurações que você deseja usar ao enviar esse e-mail.

      nota

      Se não desejar usar um conjunto de configurações, você poderá omitir toda a linha que começa com X-SES-CONFIGURATION-SET.

    Ao concluir, salve o arquivo como input.txt.

  5. Na linha de comando, escolha uma das seguintes opções:

    • Para enviar usando SSL explícito pela porta 587: insira o seguinte comando:

      openssl s_client -crlf -quiet -starttls smtp -connect email-smtp.us-west-2.amazonaws.com:587 < input.txt
    • Para enviar usando SSL implícito pela porta 465: insira o seguinte comando:

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

    Substitua email-smtp.us-west-2.amazonaws.com pelo URL do endpoint SMTP do Amazon SES para a sua região da AWS. Para mais informações, consulte Regiões e o Amazon SES.

    Se a mensagem tiver sido aceita pelo Amazon SES, você verá uma saída semelhante ao seguinte exemplo:

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

    A sequência de números e texto que se segue a 250 Ok é o ID de mensagem do e-mail.

    nota

    A conexão é fechada automaticamente após cerca de 10 segundos de inatividade.

PowerShell

É possível usar a classe Net.Mail.SmtpClient para enviar e-mail usando SSL explícito na porta 587.

nota

A classe Net.Mail.SmtpClient está oficialmente obsoleta e a Microsoft recomenda o uso de bibliotecas de terceiros. Este código destina-se somente para fins de teste e não deve ser usado para cargas de trabalho de produção.

Enviar um e-mail pelo PowerShell usando SSL explícito

  1. Em um editor de texto, crie um novo arquivo. Cole o seguinte código no arquivo:

    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

    Ao concluir, salve o arquivo como SendEmail.ps1.

  2. Faça as seguintes alterações no arquivo que você criou na etapa anterior:

    • Substitua sender@example.com pelo endereço de e-mail do qual você deseja enviar a mensagem.

    • Substitua recipient@example.com pelo endereço de e-mail para o qual você deseja enviar a mensagem.

    • Substitua email-smtp.us-west-2.amazonaws.com pelo URL do endpoint SMTP do Amazon SES para a sua região da AWS. Para mais informações, consulte Regiões e o Amazon SES.

  3. No PowerShell, insira o seguinte comando:

    .\path\to\SendEmail.ps1

    No comando anterior, substitua path\to\SendEmail.ps1 pelo caminho para o arquivo criado na Etapa 1.

  4. Quando solicitado, insira o nome de usuário e senha do SMTP.

Como alternativa, é possível usar a classe System.Web.Mail.SmtpMail para enviar e-mail usando SSL implícito na porta 465.

nota

A classe System.Web.Mail.SmtpMail está oficialmente obsoleta e a Microsoft recomenda o uso de bibliotecas de terceiros. Este código destina-se somente para fins de teste e não deve ser usado para cargas de trabalho de produção.

Para enviar um e-mail pelo PowerShell usando SSL implícito

  1. Em um editor de texto, crie um novo arquivo. Cole o seguinte código no arquivo:

    [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

    Ao concluir, salve o arquivo como SendEmail.ps1.

  2. Faça as seguintes alterações no arquivo que você criou na etapa anterior:

    • Substitua sender@example.com pelo endereço de e-mail do qual você deseja enviar a mensagem.

    • Substitua recipient@example.com pelo endereço de e-mail para o qual você deseja enviar a mensagem.

    • Substitua email-smtp.us-west-2.amazonaws.com pelo URL do endpoint SMTP do Amazon SES para a sua região da AWS. Para mais informações, consulte Regiões e o Amazon SES.

  3. No PowerShell, insira o seguinte comando:

    .\path\to\SendEmail.ps1

    No comando anterior, substitua path\to\SendEmail.ps1 pelo caminho para o arquivo criado na Etapa 1.

  4. Quando solicitado, insira o nome de usuário e senha do SMTP.