¿Cómo puedo hacer que Amazon SES sea el método predeterminado para enviar correo desde mi servidor?

14

Me gustaría comenzar a usar Amazon SES para todos los correos electrónicos de nuestro servidor. Tenemos algunos diseñadores independientes con alojamiento PHP, algunas aplicaciones web Django / Python y también algunas utilidades del sistema que envían correos electrónicos.

Por lo tanto, me gustaría tener la función de correo de PHP, el comando de correo de la línea de comandos y nuestras aplicaciones de Python para poder usarlo, preferiblemente sin tener que configurarlos a su manera.

Creo que lo que necesito es tener algo como Postfix ejecutándose en localhost y usando SES para su entrega, pero no sé cómo hacerlo.

Los documentos de Amazon indican que necesito configurar mi agente de transferencia de correo (MTA) para que invoque el script ses-send-email.pl. Tengo el guión pero no estoy seguro de cómo lograrlo.

¿Estoy en el camino correcto? Si es así, ¿cómo puedo configurar Postfix para usar ese script?

Jake
fuente

Respuestas:

14

Aquí hay algunos elementos copiados de la guía para desarrolladores de SES :

Para integrar ses-send-email.pl con Postfix:

  1. Abra el archivo master.cf. En muchos sistemas, este archivo reside en/etc/postfix directorio.
  2. Configure un nuevo transporte de correo agregando las siguientes dos líneas al master.cfarchivo y luego guardando el archivo.

    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}
    

Tenga en cuenta lo siguiente sobre este ejemplo:

  • La línea de banderas comienza con al menos un carácter de espacio en blanco.
  • El parámetro de usuario debe especificar un usuario no root (es decir, un usuario no administrativo). mailuser es solo para fines ilustrativos.
  • los ses-send-email.pl script y el archivo de credenciales residen en el directorio / opt / third-party / amazon.
  • El punto final para comunicarse con Amazon SES es https://email.us-east-1.amazonaws.com

Debe modificar estos parámetros según corresponda.

  1. Abra el archivo main.cf en el mismo directorio que master.cf y modifíquelo de la siguiente manera:

    1. Busque la línea default_transport:

      • Si existe, cámbielo para que se vea así:

        default_transport = aws-email
        
      • Si no existe, agregue una nueva línea con el contenido anterior.

    2. Guarde el archivo main.cf cuando haya terminado.
  2. Reinicie su servidor Postfix.

    /etc/init.d/postfix restart
    

Tenga en cuenta que este comando puede no ser exactamente el mismo en su servidor particular. A partir de este momento, su correo electrónico saliente se envía a través de Amazon SES. Puede probar esto enviando un mensaje de correo electrónico a través de su servidor Postfix y luego verificando que llegue a su destino. Si el mensaje no se entrega, verifique el registro de correo de su sistema en busca de errores. En muchos sistemas, este es el/var/log/mail.log

- Creé un blog simple que reunió todas las cosas que probé recientemente en Amazon Cloud y SES. Aquí está el enlace: http://netwiser.blogspot.com/2011/02/setup-amazon-ses-to-relay-email-by.html

Netwiser
fuente
Genial gracias. Supongo que esto significa que configurar postfix es la forma correcta de resolver mi problema. Lo intentaré y aceptaré tu respuesta pronto.
Jake
1

Dado que aloja aplicaciones de Python / Django en su servidor, es posible que prefiera conectar Postfix al equivalente de Python de los scripts de AWS Perl. Esta guía tiene los detalles:

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

Alternativamente, si desea utilizar los scripts de Perl pero descubrió (como yo) que sus módulos CPAN están horriblemente desactualizados, una ruta más fácil puede ser instalar las dependencias a través del administrador de paquetes de su sistema operativo. Por ejemplo, en ubuntu, puedes hacer esto con:

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