Email

La funcionalidad de email de Trellis ha sido separada entre desarrollo local y staging/producción, ya que esperamos distintos comportamientos entre estos entornos.

Local

Lidiar con emails localmente nunca es divertido. Existen dos soluciones frecuentes:

  • Ignorarlo y cruzar los dedos para que funcione correctamente en producción
  • Configurar credenciales SMTP reales para enviar emails

Ingrese a MailHog. Es una herramienta simple que captura los correos salientes y permite verlos desde una UI web. Luego de eso pueden ser opcionalmente "liberados", para finalmente ser enviados.

Mailhog está automáticamente configurado para desarrollo local. Puedes acceder en http://yourdevelopmentdomain.test:8025 (reemplazando el dominio por el definido por usted como el sitio WP).

Notese que el mail automáticamente será capturado, pero no lo verá, al menos que acceda a la UI de Mailhog en la dirección indicada arriba.

Otro de los beneficios de utilizar Mailhog es que usted está utilizando credenciales reales de SMTP en desarrollo, por lo que puedes estar seguro que no enviarás emails a direcciones reales que pueden existir en tu base de datos.

⚠️ NOTA: Este no es el caso si tienes activado un plugin de WordPress instalado con el propósito de enviar correos. Deberás deshabilitar el plugin localmente para asegurarte que no enviarás correos automáticamente desde tu dirección de correo electrónico real. También puedes hacer un hook en phpmailer_init en sitios WordPress fuera del entorno de producción para prevenir que los correos se envíen. Utliza un servicio como Mailtrap como opción alternativa.

Trellis utiliza el rol de Mailhog en Ansible Galaxy. Lea el README para cualquier opción de configuración adicional. De todos modos, ninguna es requerida ya que Trellis las integra automáticamente.

MailHog y SSL con HSTS

Si tu sitio WordPress tiene habilitado SSL con HSTS (actualmente una opción predeterminada), necesitarás deshabilitar HSTS para acceder al sitio de MailHog en group_vars/development/wordpress_sites.yml:

ssl:
  enabled: true
  hsts_max_age: 0

Luego de eso, reprovisiona tu Vagrant box para poder acceder a Mailhog en http://yourdevelopmentdomain.test:8025.

Servidores remotos (staging/producción)

Los roles sSMTP se encargan de los correos salientes. sSMTP es un relay SMTP liviano, básicamente. Para poder enviar correos, deberás tener configurado un servidor SMTP.

Siempre sugerimos utilizar un servicio externo de correo en vez de configurar uno propio, ya que resulta difífil configurar un servidor de correo propio.

Algunos servicios sugeridos:

Todos estos servicios ofrecen alrededor de 10k+ emails gratis por mes. Una vez que tienes las credenciales SMTP, configúralas en group_vars/all/mail.yml.

  • mail_smtp_server: hostname:port
  • mail_hostname: hostname para envío
  • mail_user: username
  • mail_password: password o API key (definida en group_vars/all/vault.yml)

Ejemplo

mail_smtp_server: smtp.example.com:587
mail_hostname: example.com
mail_user: admin@example.com
mail_password: "{{ vault_mail_password }}" # Defina esto en group_vars/all/vault.yml

Si la configuración SMTP es errónea, WordPress devolverá el siguiente mensaje de error:

Could not instantiate mail function.

Para resolver este error, actualiza la configuración SMTP con los datos correctos y luego re-provisiona el servidor remoto.