Integração do Amazon SES com o Sendmail - Amazon Simple Email Service

Integração do Amazon SES com o Sendmail

O Sendmail foi lançado no início dos anos 1980 e vem ganhando continuamente melhorias. Ele é um agente de transferência de mensagens (MTA) flexível e configurável com uma grande comunidade de usuários. O Sendmail foi adquirido pela Proofpoint em 2013, mas a Proofpoint continua oferecendo uma versão de código aberto do Sendmail. Você pode fazer download da versão de código aberto do Sendmail no site da Proofpoint ou por meio dos gerenciadores de pacote da maioria das distribuições do Linux.

As instruções nesta seção mostram como configurar o Sendmail para enviar e-mails por meio do Amazon SES. Este procedimento foi testado em um servidor que executa o Ubuntu 18.04.2 LTS.

nota

O Sendmail é uma aplicação de terceiros e não é desenvolvido nem suportado pela Amazon Web Services. Os procedimentos nesta seção são fornecidos apenas para fins informativos e estão sujeitos a alterações sem aviso prévio.

Pré-requisitos

Antes de concluir o procedimento desta seção, você deverá concluir as seguintes etapas:

  • Instalar o pacote do Sendmail no servidor.

    nota

    Dependendo da distribuição do sistema operacional que você usa, talvez também seja necessário instalar os seguintes pacotes: sendmail-cf, m4 e cyrus-sasl-plain.

  • Verificar uma identidade para usar como seu endereço de remetente. Para mais informações, consulte Criação da identidade de um endereço de e-mail.

    Se sua conta for na sandbox do Amazon SES, você também deve verificar os endereços aos quais envia e-mails. Para mais informações, consulte Saída da sandbox do Amazon SES.

Se estiver usando o Amazon SES para enviar e-mails de uma instância do Amazon EC2, você também deve realizar as seguintes etapas:

  • Você pode precisar atribuir um endereço de IP elástico à sua instância do Amazon EC2 para os provedores de e-mail receptores aceitarem seu e-mail. Para obter mais informações, consulte Endereços de IP elástico do Amazon EC2 no Guia do usuário do Amazon EC2 para instâncias do Linux.

  • O Amazon Elastic Compute Cloud (Amazon EC2) restringe o tráfego de e-mail pela porta 25 por padrão. Para evitar erros de tempo limite ao enviar e-mails pelo endpoint SMTP do Amazon EC2, você pode solicitar que essas restrições sejam removidas. Para obter mais informações, consulte Como remover a restrição da porta 25 na minha instância do Amazon EC2 ou função do AWS Lambda? na Central de Conhecimento da AWS.

    Como alternativa, você pode modificar o procedimento nesta seção para usar a porta 587 em vez da porta 25.

Configurar o Sendmail

Conclua as etapas nesta seção para configurar o Sendmail para enviar e-mail usando o Amazon SES.

Importante

O procedimento descrito nesta seção pressupõe que você deseja usar o Amazon SES na Região da AWS Oeste dos EUA (Oregon). Se você quiser usar uma região diferente, substitua todas as instâncias de email-smtp.us-west-2.amazonaws.com neste procedimento pelo endpoint SMTP da região desejada. Para obter uma lista de URLs de endpoints SMTP para as Regiões da AWS onde o Amazon SES está disponível, consulte Amazon Simple Email Service (Amazon SES) na Referência geral da AWS.

Para configurar o Sendmail

  1. Em um editor de arquivo, abra o arquivo /etc/mail/authinfo. Se o arquivo não existir, crie-o.

    Adicione a linha a seguir a /etc/mail/authinfo:

    AuthInfo:email-smtp.us-west-2.amazonaws.com "U:root" "I:smtpUsername" "P:smtpPassword" "M:PLAIN"

    No exemplo anterior, faça as seguintes alterações:

    • Substitua email-smtp.us-west-2.amazonaws.com pelo endpoint SMTP do Amazon SES que deseja usar.

    • Substitua SMTPUserName pelo seu nome de usuário SMTP do Amazon SES.

    • Substitua smtpPassword por sua senha SMTP do Amazon SES.

    nota

    Seu nome de usuário e senha SMTP são diferentes do seu ID da chave de acesso e à chave de acesso secreta da AWS. Para obter mais informações sobre como obter o nome de usuário e a senha SMTP, consulte Obtenção de credenciais SMTP do Amazon SES.

    Quando terminar, salve authinfo.

  2. Na linha de comando, digite o comando a seguir para gerar o arquivo /etc/mail/authinfo.db:

    sudo sh -c 'makemap hash /etc/mail/authinfo.db < /etc/mail/authinfo'
  3. Na linha de comando, digite o comando a seguir para adicionar o suporte à retransmissão para o endpoint SMTP do Amazon SES.

    sudo sh -c 'echo "Connect:email-smtp.us-west-2.amazonaws.com RELAY" >> /etc/mail/access'

    No comando anterior, substitua email-smtp.us-west-2.amazonaws.com pelo endereço do endpoint SMTP do Amazon SES que deseja usar.

  4. Na linha de comando, digite o comando a seguir para gerar novamente /etc/mail/access.db:

    sudo sh -c 'makemap hash /etc/mail/access.db < /etc/mail/access'
  5. Na linha de comando, digite o comando a seguir para criar backups dos arquivos sendmail.cf e sendmail.mc:

    sudo sh -c 'cp /etc/mail/sendmail.cf /etc/mail/sendmail_cf.backup && cp /etc/mail/sendmail.mc /etc/mail/sendmail_mc.backup'
  6. Adicione as seguintes linhas ao arquivo /etc/mail/sendmail.mc antes de qualquer definição do MAILER().

    define(`SMART_HOST', `email-smtp.us-west-2.amazonaws.com')dnl define(`RELAY_MAILER_ARGS', `TCP $h 25')dnl define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl FEATURE(`authinfo', `hash -o /etc/mail/authinfo.db')dnl MASQUERADE_AS(`example.com')dnl FEATURE(masquerade_envelope)dnl FEATURE(masquerade_entire_domain)dnl

    No texto anterior, faça o seguinte:

    • Substitua email-smtp.us-west-2.amazonaws.com pelo endpoint SMTP do Amazon SES que deseja usar.

    • Substitua example.com pelo domínio a ser usado para enviar e-mail.

    Ao concluir, salve o arquivo.

    nota

    O Amazon EC2 restringe as comunicações pela porta 25 por padrão. Se estiver usando o Sendmail em uma instância do instância do Amazon EC2, preencha a Solicitação para remover limitações de envio de e-mail.

  7. Na linha de comando, digite o comando a seguir para tornar sendmail.cf gravável:

    sudo chmod 666 /etc/mail/sendmail.cf
  8. Na linha de comando, digite o comando a seguir para gerar novamente sendmail.cf:

    sudo sh -c 'm4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf'
    nota

    Se você encontrar erros como "Comando não encontrado" e "Este arquivo ou diretório não existe", verifique se os pacotes m4 e sendmail-cf estão instalados em seu sistema.

  9. Na linha de comando, digite o comando a seguir para redefinir as permissões de sendmail.cf como somente leitura:

    sudo chmod 644 /etc/mail/sendmail.cf
  10. Na linha de comando, digite o comando a seguir para reiniciar o Sendmail:

    sudo /etc/init.d/sendmail restart

    Dependendo da versão do Linux ou do Sendmail, se o indicado acima não funcionar, tente fazer o seguinte:

    sudo su service sendmail restart
  11. Conclua as etapas a seguir para enviar um e-mail de teste:

    1. Na linha de comando, insira o seguinte comando:

      /usr/sbin/sendmail -vf sender@example.com recipient@example.com

      Substitua remetente@exemplo.com pelo endereço de e-mail do remetente. Substitua recipient@example.com pelo endereço do destinatário. Quando terminar, pressione Enter.

    2. Insira o conteúdo de mensagem a seguir. Pressione Enter ao final de cada linha.

      From: sender@example.com To: recipient@example.com Subject: Amazon SES test email This is a test message sent from Amazon SES using Sendmail.

      Quando terminar de inserir o conteúdo do e-mail, pressione Ctrl+D para enviá-lo.

  12. Verifique o cliente de e-mail do destinatário para o e-mail. Se você não encontrar o e-mail, verifique a pasta de spam. Se você ainda não conseguir localizar o e-mail, verifique o log do Sendmail no servidor de e-mail. O log geralmente está localizado em /var/log/mail.log ou em /var/log/maillog.