Como posso fazer do Amazon SES o método padrão de envio de email do meu servidor?

14

Gostaria de começar a usar o Amazon SES para todos os emails do nosso servidor. Temos alguns designers freelancers com hospedagem PHP, alguns aplicativos da web Django / Python e também alguns utilitários de sistema que enviam emails.

Então, eu gostaria que a função mail do PHP, o comando mail da linha de comando e nossos aplicativos python pudessem usá-lo, de preferência sem precisar configurá-los à sua maneira.

Eu acho que o que eu preciso é ter algo como o Postfix rodando no localhost e usando o SES para sua entrega, mas não sei como fazer isso.

Os documentos da Amazon declaram que preciso configurar meu MTA (agente de transferência de email) para que ele invoque o script ses-send-email.pl. Eu tenho o script, mas não tenho certeza de como conseguir isso.

Estou no caminho certo? Se sim, como posso configurar o Postfix para usar esse script?

Jake
fonte

Respostas:

14

Aqui estão alguns itens copiados do guia do desenvolvedor do SES :

Para integrar ses-send-email.pl com o Postfix:

  1. Abra o arquivo master.cf. Em muitos sistemas, esse arquivo reside no /etc/postfixdiretório
  2. Configure um novo transporte de email adicionando as duas linhas a seguir ao master.cfarquivo e salvando o arquivo.

    aws-email  unix  -       n       n       -       -       pipe
      flags=R user=mailuser argv=/opt/third-party/amazon/ses-send-email.pl -r -k /opt/third-party/amazon/aws-credentials -e https://email.us-east-1.amazonaws.com -f ${sender} ${recipient}
    

Observe o seguinte sobre este exemplo:

  • A linha de sinalizadores começa com pelo menos um caractere de espaço em branco.
  • O parâmetro user deve especificar um usuário não raiz (ou seja, um usuário não administrativo). O usuário mailuseré apenas para fins ilustrativos.
  • O ses-send-email.plscript e o arquivo de credenciais residem no diretório / opt / third-party / amazon.
  • O ponto final para a comunicação com o Amazon SES é https://email.us-east-1.amazonaws.com

Você deve modificar esses parâmetros conforme apropriado.

  1. Abra o arquivo main.cf no mesmo diretório que o master.cf e modifique-o da seguinte maneira:

    1. Procure a linha default_transport:

      • Se existir, altere-o para que fique assim:

        default_transport = aws-email
        
      • Se não existir, adicione uma nova linha com o conteúdo anterior.

    2. Salve o arquivo main.cf quando terminar.
  2. Reinicie seu servidor Postfix.

    /etc/init.d/postfix restart
    

Observe que esse comando pode não ser exatamente o mesmo no seu servidor específico. A partir deste momento, seu e-mail enviado é enviado via Amazon SES. Você pode testá-lo enviando uma mensagem de e-mail através do servidor Postfix e verificando se ele chega ao seu destino. Se a mensagem não for entregue, verifique se há erros no log de mensagens do sistema. Em muitos sistemas, esse é o/var/log/mail.log

- Criei um blog simples para reunir todas as coisas que tentei recentemente no Amazon Cloud e SES. Aqui está o link: http://netwiser.blogspot.com/2011/02/setup-amazon-ses-to-relay-email-by.html

Netwiser
fonte
Incrível, obrigado. Suponho que isso significa que configurar o postfix é o caminho certo para resolver meu problema. Vou tentar e aceitar sua resposta em breve.
Jake
1

Como você está hospedando aplicativos Python / Django em seu servidor, pode ser preferível conectar o Postfix ao equivalente em Python dos scripts do AWS Perl. Este guia possui os detalhes:

http://aws.amazon.com/articles/2405502737055650

Como alternativa, se você deseja usar os scripts Perl, mas descobriu (como eu) que seus módulos CPAN estão terrivelmente desatualizados, uma rota mais fácil pode ser instalar as dependências através do gerenciador de pacotes do seu sistema operacional. Por exemplo, no ubuntu, você pode fazer isso com:

sudo apt-get install libio-socket-ssl-perl libxml-libxml-perl
Tobias McNulty
fonte