Mailjet es un servicio de correo electrónico global de terceros que ofrece a los usuarios de Compute Engine un nivel gratuito con 6000 correos al mes. Además, Mailjet también ofrece lo siguiente:
- Una API, una interfaz de usuario y un relay SMTP para enviar correos transaccionales y de marketing.
- Cumplimiento de la normativa de privacidad de datos europea.
- Funciones de correo y de entrega, como ajustes de prioridad personalizables y gestión automática de la limitación.
- Biblioteca de recursos de la API en Go, PHP, Node.js, Java, Python y Ruby para gestionar subcuentas, autenticación, contactos, campañas, cargas útiles personalizadas, estadísticas, eventos en tiempo real y análisis a través de la API Event.
- Framework MJML integrado para crear plantillas de correo HTML adaptables.
- Asistencia las 24 horas en más de 4 idiomas.
- Posibilidad de enviar mensajes de correo desde dominios distintos a
gmail.com
.
En este documento se describe cómo configurar tu instancia de VM para enviar correo a través de Mailjet mediante los siguientes métodos:
- A través de un relay SMTP con:
- Postfix
- Nodemailer en Node.js
- Directamente a través de la API de Mailjet con Java
Para consultar documentación detallada sobre otras soluciones de correo electrónico, incluidos ejemplos de integración con los servidores, bibliotecas y frameworks SMTP más habituales, consulta la documentación de Mailjet.
Antes de empezar
Crea una cuenta de Mailjet en la página de partner de Google* de Mailjet. Cuando te registres, indica el dominio y la dirección de correo desde los que quieras enviar mensajes.
Asegúrate de que la dirección de correo desde la que quieres enviar correos se haya validado.
Configura una regla de cortafuegos para permitir el tráfico TCP en el puerto 2525.
* Google recibe una compensación por los clientes que se registran en una cuenta de pago.
Configurar Mailjet como relay SMTP
Configurar Mailjet como un relay de correo te permite reenviar mensajes de correo a Mailjet para que se entreguen de forma remota.
Usar Postfix
Conéctate a tu VM mediante SSH y sustituye
instance-name
por el nombre de la instancia desde la que quieras enviar mensajes de correo:gcloud compute ssh instance-name
En la VM, instala el agente de transporte de correo Postfix. Cuando se te pida, acepta las opciones predeterminadas para los nombres de dominio, pero selecciona la
Local Only
configuración.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 definen en el archivo
main.cf
. Abre el archivo con el editor de texto que prefieras:sudo vi /etc/postfix/main.cf
Para actualizar el archivo, sigue estos pasos:
Comenta las siguientes líneas:
# default_transport = error # relay_transport = error
Añade 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
Estas líneas aplican la compatibilidad con SSL/TLS y configuran la autenticación SMTP para estas solicitudes. Un módulo de nivel de seguridad y acceso simples (SASL) gestiona 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
En el archivo
sasl_passwd
, añade las siguientes líneas para proporcionar las credenciales de 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, elimina el archivo que contiene tus credenciales, ya que no es necesario:
sudo rm /etc/postfix/sasl_passwd
Define los permisos del archivo
.db
:sudo chmod 600 /etc/postfix/sasl_passwd.db sudo ls -la /etc/postfix/sasl_passwd.db
Por último, vuelve a cargar la configuración para cargar los parámetros modificados:
Debian
sudo /etc/init.d/postfix restart
CentOS
sudo postfix reload
Prueba tu 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
Haz los cambios siguientes:
from-email
: una dirección de correo que se haya validado.destination-email
: la dirección a la que se enviará el mensaje de correo.
Busca en los registros de tu sistema una línea de estado que contenga
status
y el código de respuesta del servidor correcto(250)
:Debian
sudo tail -n 5 /var/log/syslog
CentOS
sudo tail -n 5 /var/log/maillog
Si tienes problemas para configurar Postfix con Mailjet, consulta las instrucciones de configuración de Postfix de Mailjet.
Usar Nodemailer
En las siguientes instrucciones se describe cómo usar Mailjet con Node.js en Debian Wheezy.
-
Conéctate a tu instancia mediante SSH:
gcloud compute ssh instance-name
-
Actualiza los repositorios de 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 de GitHub:
user@test-wheezy:~# git clone https://github.com/nodejs/node
-
Cambia el directorio al árbol de origen de Node.js:
user@test-wheezy:~# cd node
-
Configura el software de nodo para este SO y esta máquina virtual:
user@test-wheezy:~# ./configure
-
Compila Node.js, npm y los objetos relacionados:
user@test-wheezy:~# sudo make
Este proceso 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 mailer:
user@test-wheezy:~# npm install nodemailer nodemailer-smtp-transport
-
En el directorio
node
, crea un archivo llamadosendmail.js
que contenga el siguiente código JavaScript: -
Ejecuta el programa para enviar un correo a través de Mailjet:
user@test-wheezy:~# node sendmail.js
- Conéctate a tu 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 de GitHub:
user@test-centos:~# git clone https://github.com/nodejs/node
-
Cambia el directorio al árbol de origen de Node.js:
user@test-centos:~# cd node
-
Configura el software de nodo para este SO y esta máquina virtual:
user@test-centos:~# ./configure
-
Compila Node.js, npm y los objetos relacionados:
user@test-centos:~# sudo make
Este proceso 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 mailer:
user@test-centos:~# npm install npm install nodemailer nodemailer-smtp-transport
-
En el directorio
node
, crea un archivo llamadosendmail.js
que contenga el siguiente código JavaScript: -
Ejecuta el programa para enviar un correo a través de Mailjet:
user@test-centos:~# node sendmail.js
Enviar correos a través de la API de Mailjet con Java
Para ver más ejemplos de uso de la API de Mailjet, consulta la documentación oficial de Mailjet.
-
Conéctate a tu instancia mediante SSH:
gcloud compute ssh instance-name
-
Actualiza los repositorios de paquetes e instala los paquetes necesarios:
user@test-instance:~# sudo apt update && sudo apt install git-core openjdk-8-jdk maven
-
Clona el repositorio de Java de GitHub:
user@test-instance:~# git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
-
Ve al código fuente principal del ejemplo, que se encuentra en:
/root/java-docs-samples/compute/mailjet/src/main/java/com/example/compute/mailjet
-
Configura los ajustes de Mailjet. Consulta la documentación de autenticación de Mailjet para saber cómo sustituir las siguientes variables:
your-mailjet-api-key
: una clave de API para tu cuenta de Mailjet.your-mailjet-secret-key
: la clave secreta correspondiente a tu cuenta de Mailjet.
-
En el directorio
mailjet
, usa Maven para empaquetar la clase como un archivo JAR:user@test-instance:~# mvn clean package
-
Asegúrate de que estás usando OpenJDK 8:
user@test-instance:~# sudo update-alternatives --config java
-
Para enviar un correo, desde el directorio de destino, ejecuta el archivo JAR con
las direcciones de correo del destinatario y del remitente como argumentos:
user@test-instance:~# java -jar compute-mailjet-1.0-SNAPSHOT-jar-with-dependencies.jar recipient-email sender-email
- Conéctate a tu instancia mediante SSH:
gcloud compute ssh instance-name
-
Actualiza los repositorios de paquetes e instala los paquetes necesarios:
user@test-centos:~# sudo yum update && sudo yum install git-core openjdk-8-jdk maven
-
Clona el repositorio de Java de GitHub:
user@test-centos:~# git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
-
Ve al código fuente principal del ejemplo, que se encuentra en:
/root/java-docs-samples/compute/mailjet/src/main/java/com/example/compute/mailjet
-
Configura los ajustes de Mailjet. Para obtener información sobre cómo sustituir las siguientes variables, consulta la documentación de autenticación de Mailjet:
your-mailjet-api-key
: una clave de API para tu cuenta de Mailjet.your-mailjet-secret-key
: la clave secreta correspondiente a tu cuenta de Mailjet.
-
En el directorio
mailjet
, usa Maven para empaquetar la clase como un archivo JAR:user@test-centos:~# mvn clean package
-
Asegúrate de que estás usando OpenJDK 8:
user@test-centos:~# sudo alternatives --config java
-
Para enviar un correo, desde el directorio de destino, ejecuta el archivo JAR con las direcciones de correo del destinatario y del remitente como argumentos:
user@test-centos:~# java -jar compute-mailjet-1.0-SNAPSHOT-jar-with-dependencies.jar recipient-email sender-email
Configuración de SMTP de Mailjet
A continuación, se incluye una referencia rápida a los ajustes SMTP específicos de Mailjet que se utilizan para configurar clientes:
- Host: in-v3.mailjet.com
- Puerto: 2525
Siguientes pasos
Consulta arquitecturas de referencia, diagramas y prácticas recomendadas sobre Google Cloud. Consulta nuestro Centro de arquitectura de Cloud.