Mailjet es un servicio de correo electrónico global de terceros que ofrece a los usuarios de Compute Engine un nivel gratuito con 6,000 correos electrónicos cada mes. Además, Mailjet ofrece las siguientes características:
- Una API, una interfaz de usuario y la retransmisión de SMTP para enviar correos electrónicos transaccionales y de marketing
- Cumplimiento de las normas europeas de protección de datos
- Funciones de correo electrónico y capacidad de entrega, como configuración de prioridad personalizable y administración de regulación automatizada
- Una biblioteca de recursos API en Go, PHP, Nodejs, Java, Python y Ruby para administrar cuentas secundarias, autenticación, contactos, campañas, cargas útiles personalizadas, estadísticas, eventos en tiempo real y análisis mediante la API de Eventos
- Un marco de trabajo MJML integrado para crear plantillas de correo electrónico HTML responsivas.
- Asistencia las 24 horas, todos los días, en cualquier lugar del mundo y en más de 4 idiomas
- La capacidad para enviar mensajes de correo electrónico desde dominios que no sean
gmail.com
En este documento, se describe cómo configurar tu instancia de VM para enviar correos electrónicos mediante Mailjet con los siguientes métodos:
- Mediante una retransmisión SMTP con uno de estos servidores:
- Postfix
- Nodemailer en Node.js
- De manera directa a través de la API de Mailjet que usa Java
Para obtener una amplia documentación sobre otras soluciones de correo electrónico, incluidos ejemplos de integración con los servidores SMTP, las bibliotecas y los marcos de trabajo más comunes, consulta la documentación de Mailjet .
Antes de comenzar
Crea una cuenta de Mailjet nueva en la página de socio de Google* de Mailjet. Cuando te registres, proporciona el dominio y la dirección de correo electrónico desde la que deseas enviar los mensajes de correo electrónico.
Asegúrate de que la dirección desde la que deseas enviar los correos electrónicos se haya validado.
Configura una regla de firewall para permitir el tráfico de TCP en el puerto 2525.
* Google recibe compensaciones por los clientes que se registran para una cuenta no gratuita.
Configura Mailjet como una retransmisión de SMTP
La configuración de Mailjet como servicio de retransmisión de correo te permite reenviar mensajes de correo electrónico a Mailjet para la entrega remota.
Usa Postfix
Conéctate a tu VM mediante SSH y reemplaza
instance-name
por el nombre de la instancia desde la que deseas enviar los mensajes de correo electrónico:gcloud compute ssh instance-name
En la VM, instala el agente de transporte de correos de Postfix. Cuando se te solicite, acepta las opciones predeterminadas para los nombres de dominio, pero selecciona la configuración
Local Only
.Debian
sudo apt update && sudo apt -y install postfix libsasl2-modules
CentOS
sudo yum install postfix cyrus-sasl-plain cyrus-sasl-md5 -y
Modifica las opciones de configuración de Postfix. Las opciones de configuración de Postfix se establecen en el archivo
main.cf
. Abre el archivo con el editor de texto que prefieras:sudo vi /etc/postfix/main.cf
Actualiza el archivo:
Comenta las siguientes líneas:
# default_transport = error # relay_transport = error
Agrega las siguientes líneas al final del archivo:
relayhost = in-v3.mailjet.com:2525 smtp_tls_security_level = encrypt smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous
En estas líneas, se aplica la compatibilidad con SSL/TLS y se configura la autenticación SMTP para estas solicitudes. Un módulo simple de acceso y capa de seguridad (SASL) maneja la autenticación en la configuración de Postfix.
Guarda los cambios y cierra el archivo.
Crea el mapa de contraseñas SASL con el editor de texto que prefieras:
sudo vi /etc/postfix/sasl_passwd
Agrega las siguientes líneas al archivo
sasl_passwd
a fin de proporcionar las credenciales para Mailjet:in-v3.mailjet.com:2525 YOUR_API_KEY:YOUR_SECRET_KEY
Usa la utilidad
postmap
para generar un archivo.db
:sudo postmap /etc/postfix/sasl_passwd sudo ls -l /etc/postfix/sasl_passwd*
Deberías recibir la siguiente respuesta:
-rw------- 1 root root 68 Jun 1 10:50 /etc/postfix/sasl_passwd -rw------- 1 root root 12288 Jun 1 10:51 /etc/postfix/sasl_passwd.db
A continuación, quita el archivo que contiene tus credenciales porque ya no es necesario:
sudo rm /etc/postfix/sasl_passwd
Establece los permisos en tu archivo
.db
:sudo chmod 600 /etc/postfix/sasl_passwd.db sudo ls -la /etc/postfix/sasl_passwd.db
Por último, vuelve a cargar tu configuración para cargar los parámetros modificados:
Debian
sudo /etc/init.d/postfix restart
CentOS
sudo postfix reload
Prueba la configuración. Instala el paquete
mailx
omailutils
y prueba tu configuración.Debian
sudo apt -y install mailutils
CentOS
sudo yum install mailx -y
Envía un mensaje de prueba:
echo 'Test passed.' | mail -s 'Test-Email' -aFrom:from-email destination-email
Reemplaza lo siguiente:
from-email
: Una dirección de correo electrónico que se validódestination-email
: La dirección a la que se envía el mensaje de correo electrónico
Busca en los registros del sistema una línea de estado que contenga
status
y el código de respuesta correcto del servidor(250)
:Debian
sudo tail -n 5 /var/log/syslog
En CentOS
sudo tail -n 5 /var/log/maillog
Si tienes problemas para configurar Postfix con Mailjet, consulta las instrucciones de configuración de Postjet de Mailjet.
Con Nodemailer
En las siguientes instrucciones, se describe cómo usar Mailjet con Node.js en Debian Wheezy.
-
Conéctate a la instancia mediante SSH:
gcloud compute ssh instance-name
-
Actualiza los repositorios de tus paquetes:
user@test-wheezy:~# sudo apt update
-
Instala las dependencias de Node.js:
user@test-wheezy:~# sudo apt -y install git-core curl build-essential openssl libssl-dev
-
Clona el repositorio de Node.js desde github:
user@test-wheezy:~# git clone https://github.com/nodejs/node
-
Cambia el directorio al árbol fuente de Node.js:
user@test-wheezy:~# cd node
-
Configura el software de nodo para este SO y máquina virtual:
user@test-wheezy:~# ./configure
-
Compila Node.js, npm y objetos relacionados:
user@test-wheezy:~# sudo make
Esto puede tardar unos minutos en completarse.
-
Instala Node.js, npm y otro software en la ubicación predeterminada:
user@test-wheezy:~# sudo make install
-
Instala el paquete de correo electrónico:
user@test-wheezy:~# npm install nodemailer nodemailer-smtp-transport
-
En el directorio
node
, crea un archivo nuevo con el nombresendmail.js
que contenga el siguiente JavaScript: -
Ejecuta el programa para enviar un mensaje de correo electrónico a través de Mailjet:
user@test-wheezy:~# node sendmail.js
- Conéctate a la instancia mediante SSH:
gcloud compute ssh instance-name
-
Actualiza los repositorios de paquetes:
user@test-centos:~# sudo yum update -y
-
Instala las dependencias de Node.js:
user@test-centos:~# sudo yum install git-core curl openssl openssl-dev -y ... user@test-centos:~# sudo yum groupinstall "Development Tools" -y ...
-
Clona el repositorio de Node.js desde github:
user@test-centos:~# git clone https://github.com/nodejs/node
-
Cambia el directorio al árbol fuente de Node.js:
user@test-centos:~# cd node
-
Configura el software de nodo para este SO y máquina virtual:
user@test-centos:~# ./configure
-
Compila Node.js, npm y objetos relacionados:
user@test-centos:~# sudo make
Esto puede tardar unos minutos en completarse.
-
Instala Node.js, npm y otro software en la ubicación predeterminada:
user@test-centos:~# sudo make install
-
Instala el paquete de correo electrónico:
user@test-centos:~# npm install npm install nodemailer nodemailer-smtp-transport
-
En el directorio
node
, crea un archivo nuevo con el nombresendmail.js
que contenga el siguiente JavaScript: -
Ejecuta el programa para enviar un mensaje de correo electrónico a través de Mailjet:
user@test-centos:~# node sendmail.js
Envía correos electrónicos con la API de Mailjet con Java
Para obtener más ejemplos del uso de la API de Mailjet, consulta la documentación oficial de Mailjet.
-
Conéctate a la instancia mediante SSH:
gcloud compute ssh instance-name
-
Actualiza los repositorios de paquetes y, luego, instala los paquetes obligatorios:
user@test-instance:~# sudo apt update && sudo apt install git-core openjdk-8-jdk maven
-
Clona el repositorio de Java desde GitHub:
user@test-instance:~# git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
-
Ve al código fuente principal para obtener el ejemplo, ubicado aquí:
/root/java-docs-samples/compute/mailjet/src/main/java/com/example/compute/mailjet
-
Establece tu configuración de Mailjet. Consulta la documentación de Authentication de Mailjet para reemplazar las siguientes variables:
your-mailjet-api-key
: Una clave de API para tu cuenta de Mailjet.your-mailjet-secret-key
: La clave secreta correspondiente para tu cuenta de Mailjet.
-
Desde el directorio
mailjet
, usa Maven para empaquetar la clase como un archivo JAR:user@test-instance:~# mvn clean package
-
Asegúrate de usar OpenJDK 8:
user@test-instance:~# sudo update-alternatives --config java
-
Para enviar un correo electrónico, desde el directorio de destino, ejecuta el archivo JAR con tus direcciones de correo electrónico de destinatario y remitente como argumentos:
user@test-instance:~# java -jar compute-mailjet-1.0-SNAPSHOT-jar-with-dependencies.jar recipient-email sender-email
- Conéctate a la instancia mediante SSH:
gcloud compute ssh instance-name
-
Actualiza los repositorios de paquetes y, luego, instala los paquetes obligatorios:
user@test-centos:~# sudo yum update && sudo yum install git-core openjdk-8-jdk maven
-
Clona el repositorio de Java desde GitHub:
user@test-centos:~# git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
-
Ve al código fuente principal para obtener el ejemplo, ubicado aquí:
/root/java-docs-samples/compute/mailjet/src/main/java/com/example/compute/mailjet
-
Establece tu configuración de Mailjet. Para obtener información sobre cómo reemplazar las siguientes variables, consulta la documentación de Authentication de Mailjet:
your-mailjet-api-key
: Una clave de API para tu cuenta de Mailjet.your-mailjet-secret-key
: La clave secreta correspondiente para tu cuenta de Mailjet.
- Desde el directorio
mailjet
, usa Maven para empaquetar la clase como un archivo JAR:user@test-centos:~# mvn clean package
-
Asegúrate de usar OpenJDK 8:
user@test-centos:~# sudo alternatives --config java
-
Para enviar un correo electrónico, desde el directorio de destino, ejecuta el archivo JAR con tus direcciones de correo electrónico de destinatario y remitente como argumentos:
user@test-centos:~# java -jar compute-mailjet-1.0-SNAPSHOT-jar-with-dependencies.jar recipient-email sender-email
Configuración SMTP de Mailjet
Esta es una referencia rápida a la configuración SMTP específica de Mailjet que se usa para configurar los clientes:
- Host: in-v3.mailjet.com
- Puerto: 2525
¿Qué sigue?
Explora arquitecturas de referencia, diagramas y prácticas recomendadas sobre Google Cloud. Consulta nuestro Cloud Architecture Center.