DEV Community

Horacio Degiorgi
Horacio Degiorgi

Posted on

1

Enviar correo con Gmail-Relay

Escenario:
Aplicación corriendo dentro de la intranet sin acceso de salida a internet en forma directa.
La aplicación requiere enviar correo usando una cuenta gmail.
El puerto 465 es inaccesible desde el server.
Tengo un servidor con varios dockers corriendo en una ip a la que si puedo acceder desde la aplicación.
Búsqueda en google me entrega varias alternativas como usar algunas reglas de iptables, un binario que hace de relay pero también un docker que hace todo el trabajo.
https://hub.docker.com/r/namshi/smtp/

Permite correr en una instancia de docker un relay que envía todo el correo que recibe utilizando una cuenta de gmail.
Algo que simplifica todo en una línea de docker o con docker-compose.

version: '3'
services:
smtp:
image: namshi/smtp
container_name: smtp_relay
ports:
- "25:25"
environment:
# # Solo habilitamos a enviar correo desde la ip del server que aloja la aplicación
- RELAY_NETWORKS= :172.22.130.115/32
# # Define el usuario y clave desde donde se enviaran los correos.
- GMAIL_USER=miusuario@gmail.com
- GMAIL_PASSWORD=miclave

Luego solo falta colocar en el archivo .env de laravel lo necesario para apuntar al nuevo relay smtp.
MAILER_HOST= IP-del-server-docker
MAILER_PORT=25 (PUERTO EXPUESTO)

Et voilá todo funcionando.
Usando docker-compose log -f podemos ver el log del relay funcionando

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs