¿Usar servidor de correo local/sendmail para correos salientes?

Hay dos formas de enviar correos electrónicos a través de un servidor SMTP local:

  1. Conectarse y autenticarse en el puerto de envío, como 587 con STARTTLS o 465 con TLS implícito/inmediato => solicitud de red, comprobaciones y restricciones aplicadas a través de smtpd
  2. Usar sendmail o similar, que invoca el comando local pickup (en el caso de Postfix), sin realizar ninguna conexión de red y omitiendo todas las comprobaciones y restricciones configuradas para el servicio de envío smtpd.

Este último es más simple y rápido, implementado en sistemas y frameworks de tiempo de ejecución comunes, como PHP mailer y esta biblioteca de correo Ruby utilizada por Discourse. Y la autenticación se omite, no es necesario almacenar credenciales en texto plano en ningún lugar. O en otras palabras: el servidor SMTP no se utiliza en absoluto en este caso, sino solo el cliente SMTP.

Quiero decir, sí, la conexión al puerto de envío no debería tener un impacto significativo en la carga del servidor, en comparación con lo que hace Discourse de lo contrario. Este último punto se puede resolver con, por ejemplo, la regla smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject en el puerto de envío, para permitir envíos desde IPs de loopback (por defecto, configuración de mynetworks) antes de realizar cualquier autenticación. Si la solicitud del contenedor se ve con otra IP, se puede agregar a mynetworks. Supongo que así es como funcionó en el caso del tema que enlacé antes.

Veremos la próxima vez que actualicemos/reconstruyamos nuestro Discourse, cuando se apliquen los ajustes SMTP modificados. Informaré cómo funciona.

Pero aún así sería interesante saber si hay otras formas y qué significa esta configuración de “Método de entrega”.

Postfix se ejecuta en el host, no dentro de un contenedor, pero no haría mucha diferencia, ya que sigue siendo una autenticación basada en red.

Sí, un pensamiento posterior, tiene sentido que sendmail, etc. del host/otro contenedor no puedan funcionar dentro de un contenedor, ya que requiere acceso directo a vastas partes de los ejecutables, bibliotecas y configuraciones de Postfix, supongo. A menos que haya una especie de socket mágico que se pueda montar en el contenedor o algo así :smile:.

2 Me gusta