Enviar correos electrónicos con Mailgun


Google Cloud colabora con Mailgun para ofrecer un servicio de correo electrónico que incluye una API programática, retención de registros, personalización de correos, analíticas y validación de correos.

En las siguientes instrucciones se explica cómo configurar Mailgun como relay de correo con Postfix.

Antes de empezar

  1. Regístrate y crea una cuenta de Mailgun en Google Cloud Marketplace.

  2. Obtén tus credenciales. Para seguir las instrucciones, debes conocer tu nombre de usuario, contraseña y nombre de host de SMTP de Mailgun. Obtén tu nombre de usuario y contraseña en el panel de control de Mailgun, en la sección Domains (Dominios).

    En función de cómo se configure el dominio en Mailgun, el nombre de host SMTP será smtp.mailgun.org o smtp.eu.mailgun.org.

  3. Configura tus reglas de cortafuegos para permitir el tráfico saliente en el puerto TCP 2525.

Configurar Mailgun como un relay de correo con Postfix

Configurar Mailgun como un relay de correo permite que el agente de transferencia de correo Postfix reenvíe los correos destinados a la entrega remota.

  1. Conéctate a tu instancia mediante SSH.

    gcloud compute ssh [INSTANCE_NAME]
    

    donde [INSTANCE_NAME] es el nombre de la instancia de VM desde la que quieres enviar el correo.

  2. Conviértete en superusuario y define una umask segura.

    user@test-instance:~$ sudo su -
    
    root@test-instance:~# umask 077
    
  3. Instala el agente de transporte de correo Postfix.

    Debian

    root@test-instance:~# apt update && apt -y install postfix libsasl2-modules
    

    CentOS

    root@test-instance:~# yum install postfix cyrus-sasl-plain cyrus-sasl-md5 -y
    

  4. Cuando se te pida, selecciona la configuración Local Only y acepta las opciones predeterminadas para los nombres de dominio.

  5. Modifica las opciones de configuración de Postfix. Las opciones de configuración de Postfix se definen en el archivo main.cf. Abre el archivo con el editor de texto que prefieras.

    root@test-instance:~# vi /etc/postfix/main.cf
    
  6. Si existen, comenta las siguientes líneas.

    # default_transport = error
    # relay_transport = error
    
  7. Añade el servicio SMTP de Mailgun añadiendo la siguiente línea al final del archivo.

    relayhost = [smtp.mailgun.org]:2525
    
  8. Para aplicar la compatibilidad con SSL/TLS y configurar la autenticación SMTP para estas solicitudes, añade las siguientes líneas al final del archivo. Un módulo de nivel de seguridad y acceso simples (SASL) gestiona la autenticación en la configuración de Postfix.

    smtp_tls_security_level = encrypt
    smtp_sasl_auth_enable = yes
    smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
    smtp_sasl_security_options = noanonymous
    
  9. Guarda los cambios y cierra el archivo.

  10. Genera el mapa de contraseñas SASL.

    1. Crea un archivo de contraseñas nuevo que esté listo para la entrada estándar.

      root@test-instance:~# cat > /etc/postfix/sasl_passwd << EOF
      
    2. Cuando se te pida, introduce los detalles del servicio y sustituye YOUR_SMTP_LOGIN y YOUR_SMTP_PASSWORD por tus credenciales. Consulta la ayuda de Mailgun para obtener instrucciones sobre cómo ver o cambiar tus credenciales por dominio.

      > [smtp.mailgun.org]:2525 YOUR_SMTP_LOGIN:YOUR_SMTP_PASSWORD
      
    3. Cierra y guarda el archivo escribiendo el delimitador, EOF.

      > EOF
      
  11. Usa la utilidad postmap para generar un archivo .db.

    root@test-instance:~# postmap /etc/postfix/sasl_passwd
    
    root@test-instance:~# ls -l /etc/postfix/sasl_passwd*
    
    -rw------- 1 root root    68 Jun  1 10:50 /etc/postfix/sasl_passwd
    -rw------- 1 root root 12288 Jun  1 10:51 /etc/postfix/sasl_passwd.db
    
  12. A continuación, elimina el archivo que contiene tus credenciales, ya que no es necesario.

    root@test-instance:~# rm /etc/postfix/sasl_passwd
    
  13. Define los permisos del archivo .db.

    root@test-instance:~# chmod 600 /etc/postfix/sasl_passwd.db
    
    root@test-instance:~# ls -la /etc/postfix/sasl_passwd.db
    
    -rw------- 1 root root 12288 Aug 31 18:51 /etc/postfix/sasl_passwd.db
    
  14. Por último, vuelve a cargar la configuración para cargar los parámetros modificados.

    Debian

    root@test-wheezy:~# /etc/init.d/postfix restart
    

    CentOS

    [root@test-centos ~]# postfix reload
    

  15. Prueba tu configuración. Instala el paquete mailx o mailutils y prueba tu configuración.

    Debian

    root@test-wheezy:~# apt -y install mailutils
    

    CentOS

    [root@test-centos ~]# yum install mailx -y
    

    Envía un mensaje de prueba.

    root@test-instance:~# echo 'Test passed.' | mail -s 'Test-Email' EMAIL@EXAMPLE.COM
    

    Busca en los registros de tu sistema una línea de estado que contenga status y el código de respuesta del servidor correcto (250).

    Debian

    root@test-wheezy:~# tail -n 5 /var/log/syslog
    

    CentOS

    [root@test-centos ~]# tail -n 5 /var/log/maillog
    

Para ver ejemplos detallados e información sobre otros temas, como el seguimiento y el enrutamiento de mensajes, consulta la documentación de Mailgun.

Consulta arquitecturas de referencia, diagramas y prácticas recomendadas sobre Google Cloud. Consulta nuestro Centro de arquitectura de Cloud.