Una de las principales necesidades que tiene un pequeño negocio o una startup que está empezando es disponer de un sistema de correo fiable con un dominio propio que nos diferencie a nosotros mismos y a nuestro sitio web corporativo en Internet. Aunque hay muchos planes de hosting que ofrecen cuentas de correo gratuitas e incluso podríamos montar nuestro propio servidor de correo, es probable que ya estemos acostumbrados a servicios de correo como GMail y nos gustaría seguir utilizándolo para gestionar el correo de nuestro propio dominio sin tener que recurrir a soluciones de pago como G Suite (antes Google Apps), que aunque son económicas para las prestaciones que ofrecen, suponen un coste adicional que nuestro incipiente proyecto no se puede permitir.
Si es tu caso te alegrará saber que gracias a la capa gratuita que ofrece AWS en algunos de sus servicios como Amazon SES y Lambda , podemos montar sin coste un sistema de correo que se integre perfectamente con nuestra cuenta gratuita de GMail, y que al mismo tiempo permita enviar y recibir correo desde múltiples cuentas de nuestro propio dominio.
El procedimiento que indico a continuación no es exclusivo para cuentas de GMail. Cualquier otro servicio de correo que ofrezca la posibilidad de enviar correo eligiendo el nombre y la dirección que queremos que aparezca en el remitente nos servirá. Para la recepción de correo de nuestro dominio ni siquiera hace falta ninguna característica adicional, por lo que cualquier servicio de correo, ya sea Office 365 Outlook, Yahoo o iCloud Mail servirá.
IMPORTANTE : Consulta los límites de la capa gratuita de AWS y los costes en los que incurrirás si superas éstos, pues aunque son bastante amplios para el propósito que aquí se indica, podrían suponerte un perjuicio económico que no tenías previsto. Recuerda que si llevas a cabo este procedimiento lo haces bajo tu entera responsabilidad.
1. Crear nueva zona DNS para nuestro dominio en Amazon Route 53
El primer paso será crear una zona DNS pública (Public Hosted Zone) para nuestro dominio en Amazon Route 53 si todavía no disponemos de ella. Para ello accederemos a través de la consola de AWS al servicio Route 53 - > Hosted zones -> Create Hosted Zone. Podemos aprovechar este paso para añadir algunas entradas DNS que necesitemos, como registros A que apunten a nuestro sitio web, o en el caso del correo, un registro SPF como medida de seguridad para evitar que usurpen nuestras direcciones de correo o que nuestros destinatarios consideren nuestro correo como spam.
Zona DNS pública básica recién creada en Amazon Route 53
Ejemplo de zona DNS con registro SPF
2. Verificar nuestro dominio en Amazon SES
Abriremos otra pestaña en nuestro navegador y accederemos de nuevo a través de la consola de AWS al servicio Amazon SES. Desde la opción Domains del menú verificaremos nuestro dominio, lo cual provocará que se añadan nuevas entradas DNS en nuestra zona de Route 53 como se puede ver en las siguientes imágenes:
Verificación de dominio en Amazon SES
Resultado tras verificación de dominio en Amazon SES
Nuevos registros DNS añadidos a nuestra zona
IMPORTANTE: Las zonas DNS de Route 53 tienen un coste de 0.50 USD/mes por dominio. Si no quieres incurrir en este gasto puedes, llegados a este punto, replicar todos los registros DNS que aparecen en la última captura de pantalla en el panel de control de zonas DNS de tu proveedor actual con el que registraste el dominio. Si prefieres utilizar el servicio Route 53 tendrás que actualizar los servidores DNS de tu dominio para poner los de Amazon (registros NS de la última captura) y no los de tu proveedor de dominios.
3. Crear función Lambda para redirigir el correo entrante a nuestra cuenta de GMail
Este punto incluye dos pasos. En el primero de ellos crearemos una función Lambda abriendo en una nueva pestaña del navegador la página principal del servicio Lambda de Amazon, y haciendo clic en Create a Lambda function. Seleccionaremos una función en blanco (Blank Function) y nos saltaremos el paso de configurar disparadores (Configure triggers). En las capturas de pantalla de más abajo se pueden ver las opciones que en necesario rellenar en el formulario de creación de la nueva función Lambda.
El código fuente en Node.js de la función Lambda se basa en este repositorio de GitHub: https://github.com/arithmetric/aws-lambda-ses-forwarder. Resumo a continuación los únicos cambios que he realizado en dicho código para ilustrar mi ejemplo y que he probado que funcionan satisfactoriamente:
var defaultConfig = {
fromEmail: "info@example.com",
subjectPrefix: "",
emailBucket: "example-com-mailbox",
//emailKeyPrefix: "emailsPrefix/",
emailKeyPrefix: "",
forwardMapping: {
"info@example.com": [
"example@gmail.com"
]
}
};
El segundo paso consiste en modificar las políticas de seguridad asociadas al rol IAM que se genera automáticamente al crear nuestra función Lambda, ya que necesitamos añadirles dos nuevas políticas: una para que se permita acceder al bucket de S3 que crearemos posteriormente para almacenar nuestros mensajes de correo, y otra para poder acceder a los recursos del servicio Amazon SES. Para ello, una vez creada la función Lambda abriremos en una nueva pestaña del navegador el servicio IAM y haremos clic en las siguientes opciones: Roles - > example-com-forwarding -> Policy Name AWSLambdaBasicExecutionRole-99b88501-cad9-4f48-ba03-75b13f98dae0 -> Edit Policy. En esta última página añadiremos el código JSON que aparece señalado en azul en las siguientes capturas de pantalla:
Configuración función Lambda para reenvío de correo
Edición de política IAM
Resumen política IAM
4. Crear nueva regla de recepción de correo en Amazon SES
De nuevo desde la página principal del servicio Amazon SES haremos clic en la opción del menú Rule Sets y a continuación en el botón Create a Receipt Rule , lo cual iniciará un procedimiento de 4 pasos muy simples que culminará con la creación de una nueva regla de recepción de correo para nuestro dominio. El primero de estos pasos será crear uno o varios destinatarios de correo. Aquí podremos introducir una única dirección de correo de nuestro dominio, o directamente el nombre del dominio sin más, lo cual nos permitirá recibir correo para cualquier dirección.
Creación de regla de recepción en Amazon SES - paso 0
Creación de receptores - paso 1
A continuación crearemos 2 acciones que se ejecutarán cada vez que Amazon SES reciba un correo para nuestro dominio: almacenar el correo en un bucket S3 y ejecutar nuestra función Lambda para que sea redirigido a nuestra cuenta de GMail:
Creación de acciones para nuestra regla de recepción
Creación de nuevo bucket S3
Creación de nueva acción basada en nuestra función Lambda
Tras realizar estos pasos la regla de recepción de correo ha quedado completamente configurada, pero quizás no haya sido activada y sea necesario volver hacia atrás y activarla. Por tanto, una vez configurada y activa si enviamos un email a la cuenta o cuentas de nuestro dominio que hayamos creado (en nuestro ejemplo cualquier dirección de nuestro dominio, por ejemplo info@example.com), veremos como se almacena el mensaje en el bucket de S3 que acabamos de crear:
Regla de recepción de Amazon SES configurada
Listado de mensajes de correo electrónico almacenados en S3
5. Verificación de nuestra dirección de GMail y creación de usuario SMTP
Para que Amazon SES acepte correo saliente procedente de nuestra cuenta de GMail es necesario verificarla y además crear un usuario SMTP :
Verificación de direcciones de correo de nuestro dominio
Datos de configuración correo saliente SMTP
Creación de credenciales de usuario SMTP
En un primer momento nuestro recién configurado servicio de Amazon SES será puesto en cuarentena (sandbox) por parte de Amazon como medida de protección ante posibles abusos y envíos de spam. Para sacarlo de la cuarentena y permitir el envío normal de correo es necesario que abramos un ticket de soporte a Amazon para solicitarlo, o si no veremos como nuestros correos enviados rebotan con el siguiente mensaje de error:
554 Message rejected: Email address is not verified. The following identities failed the check in region EU-WEST-1: <a href="mailto:myexample@gmail.com" rel="noopener noreferrer" target="_blank">myexample@gmail.com</a>
A continuación se muestra la página desde la que podemos solicitar que se nos saque de la cuarentena y un ejemplo del mensaje de solicitud. En nuestro ejemplo solicitamos unos límites más altos porque también vamos a utilizar el servicio de Amazon SES para el envío de una newsletter semanal a nuestros suscriptores:
Aviso cuarentena (sandbox) y botón para solicitar aumento del límite de envíos
Ejemplo de mensaje de solicitud de aumento del límite de envíos soporte Amazon
6. Configuración de GMail para envío de correo con la dirección de nuestro dominio
Llegamos a la recta final. Ya sólo queda configurar GMail para enviar correo poniendo la dirección de nuestro dominio como remitente. Para recibir correo no hay que hacer nada, pues de eso se encarga el servicio SES y no precisa de ninguna configuración adicional. Entre las dos capturas de pantalla siguientes hay un paso intermedio que consiste en introducir los datos de configuración SMTP que obtuvimos en el paso 5:
Añadir otra dirección de correo a GMail
Código de verificación nueva dirección
7. Depuración de errores y estadísticas de envío
Por último, si las cosas no han ido bien y no conseguimos que nuestros correos se redirijan correctamente podemos obtener información de depuración de errores y mensajes de log de nuestra función Lambda gracias al servicio CloudWatch. También podemos obtener estadísticas de envío y recepción de correo por parte del servicio SES (ver imagen apartado 5) y estadísticas de funcionamiento de nuestra función Lambda :
Depuración mensajes de log en CloudWatch
Estadísticas de redirección de correos función Lambda



Comentarios
Enviar comentario