Cómo utilizar Amazon Simple Email Service (SES) para reemplazar su servidor de correo electrónico basado en servidor

Un buen día, sin motivo aparente, mi servidor empresarial Ubuntu 18.04 dejó de reenviar correo a mi dirección de Gmail.

Justo el día anterior, los archivos .forward que había creado en los directorios de inicio de las cuentas del servidor local que uso para el correo electrónico, como /home/office/.forward, redirigían alegremente todo el correo dirigido a mis direcciones comerciales a mi -utilizar la cuenta de Gmail. Y luego de repente se detuvieron.

Cuando noté que algo andaba mal, inmediatamente consulté los registros de mi servidor. /var/log/mail.err estaba escupiendo mensajes encantadores que incluían cosas como:

status=deferred (delivery temporarily suspended: connect to alt2.gmail-smtp-in.l.google.com[219.8.202.27]:25: Connection timed out)

Verificar los buzones de correo del servidor me dijo que estaba entrando correo, pero que Postfix no podía establecer una conexión con Gmail para reenviar mensajes a mi dirección.

Naturalmente, reinicié Postfix, pero eso no ayudó.

sudo systemctl restart postfix

Confirmé que no había nada que impidiera que los mensajes salientes salieran de mi servidor en el puerto 25 (SMTP). Luego verifiqué para asegurarme de que mi dominio no había sido incluido en la lista negra (hay numerosas herramientas en línea que lo harán por usted), y eché un vistazo al estado de mis registros MX ejecutando excavar desde la línea de comando:

dig MX bootstrap-it.com

Haciendo nada. Todo pareció salir bien.

Después de algunas frustrantes sesiones de resolución de problemas, me di por vencido y pensé que probaría algo completamente diferente.

Como arquitecto de soluciones de AWS y coautor de dos libros para Wiley / Sybex en AWS (uno es una guía para el examen de Cloud Practitioners y otro para el examen de Solutions Architect Associate), ¿no debería estar dispuesto y ser capaz de crear mi propia pila? de las herramientas de AWS que manejarán las necesidades de mi servidor de correo electrónico en la nube?

Bueno, resulta que estaba dispuesto y, después de una investigación seria y de prueba y error, capaz. Hacerlo requeriría:

  • Creación de un depósito de S3 donde se almacenarán los correos electrónicos entrantes.
  • Creación de un tema de Servicio de notificación simple (SNS) para enviarme un aviso por correo electrónico cada vez que llegue un nuevo correo electrónico.
  • Configurar el Simple Email Service (SES) de Amazon para que se haga cargo de mi dominio de correo electrónico (bootstrap-it.com) y maneje el correo entrante. Eso implica agregar un registro MX a Route 53 (donde se administran mis dominios) y apuntar SES a mi dominio; agregar y verificar cada dirección de correo electrónico que quiero que SES controle; y luego decirle a SES que envíe nuevos mensajes a mi bucket de S3 mientras también activa una alerta para el tema de SNS.
  • Suponiendo que también desee enviar mensajes de correo electrónico a través del servicio, también es una buena idea configurar SES para firmar sus mensajes salientes utilizando DomainKeys Identified Mail (DKIM).

No voy a describir todos esos pasos en detalle aquí. Hay mucha documentación excelente disponible para eso. Pero mencionaré brevemente algunos puntos débiles que puede encontrar.

Tendrá que agregar un registro MX a su zona hospedada de DNS para cada dominio que esté usando. Incluso si sus dominios se administran dentro de la Ruta 53 de Amazon, deberá proporcionar un valor para su registro.

Lo que use para ese valor dependerá de la región de AWS donde se encuentre su recurso SES. En mi caso, se veía así:

10 inbound-smtp.us-east-1.amazonaws.com

Las notificaciones de SNS llegarán en una sola cadena larga de texto que contiene solo un par de breves bocados de información útil pero difícil de leer. Eso será suficiente para identificar el spam, pero normalmente necesitará más información de la que encontrará aquí. Utilizo las notificaciones como un aviso que me dice que hay correo nuevo en mi depósito de S3.

Ver los correos electrónicos dentro de su bucket de S3 a través de la Consola de administración de AWS no es el fin del mundo si solo ocurre una o dos veces al mes. Pero si llegan más rápido que eso, necesitará encontrar una mejor manera de acceder y leer sus mensajes.

Sin embargo, crear un protocolo para automatizar ese proceso es realmente un problema del sistema operativo local que requiere un conjunto de herramientas completamente diferente. Resolví el problema por mí mismo usando la AWS CLI y un script Bash genial. Si desea ver cómo lo hice, haga clic en este artículo.

Hay mucha más bondad de administración en forma de libros, cursos y artículos disponibles en mi bootstrap-it.com.