En este tutorial se muestra cómo usar SendGrid para enviar correos desde una aplicación que se ejecuta en una instancia de máquina virtual de Compute Engine.
Enviar correo desde tu instancia con Postfix
Sigue estos pasos para conectarte a tu instancia sendgrid-tutorial y ejecutar SendGrid con Postfix.
Conéctate a tu instancia sendgrid-tutorial mediante SSH
- In the Cloud de Confiance console, go to the VM instances page.
- In the list of virtual machine instances, click SSH in the row of the instance that you want to connect to.
Configurar SendGrid como relay SMTP con Postfix
Ejecuta los siguientes comandos en tu terminal SSH para usar SendGrid como relay SMTP con Postfix.
Conviértete en superusuario:
sudo su -
Define una umask segura:
umask 077
Instala el agente de transporte de correo Postfix:
Debian
apt update && apt -y install postfix libsasl2-modules
CentOS
yum install postfix cyrus-sasl-plain cyrus-sasl-md5 -y
Si se te pide, selecciona la configuración Solo local y acepta el nombre de dominio predeterminado.
Modifica las opciones de configuración de Postfix. Abre
/etc/postfix/main.cf
para editarlo. Por ejemplo, para usar el editor de textonano
, introduce el siguiente comando:nano /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 = [smtp.sendgrid.net]:2525 smtp_tls_security_level = encrypt smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd header_size_limit = 4096000 smtp_sasl_security_options = noanonymous
Las líneas anteriores obligan a usar 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 y cierra el archivo.
Genera el mapa de contraseñas SASL con la clave de API que has generado en la sección Antes de empezar. Sustituye
your-api-key
por la clave de API que has generado.echo [smtp.sendgrid.net]:2525 apikey:your-api-key >> /etc/postfix/sasl_passwd
Usa la utilidad
postmap
para generar un archivo.db
:postmap /etc/postfix/sasl_passwd
Verifica que tienes un archivo
.db
:ls -l /etc/postfix/sasl_passwd*
-rw------- 1 root root ... /etc/postfix/sasl_passwd -rw------- 1 root root ... /etc/postfix/sasl_passwd.db
Elimina el archivo que contiene tus credenciales, ya que no es necesario:
rm /etc/postfix/sasl_passwd
Define los permisos de tu archivo
.db
y comprueba que el otro archivo se ha eliminado:chmod 600 /etc/postfix/sasl_passwd.db ls -la /etc/postfix/sasl_passwd*
-rw------- 1 root root ... /etc/postfix/sasl_passwd.db
Vuelve a cargar la configuración para cargar los parámetros modificados:
Debian
/etc/init.d/postfix restart
CentOS
postfix reload
Instala el paquete
mailutils
omailx
:Debian
apt -y install mailutils
CentOS
yum install mailx -y
Envía un correo de prueba:
echo 'message' | mail -s subject email@example.com
Haz los cambios siguientes:
message
: el cuerpo del correo.subject
: el asunto del correo.email@example.com
: la dirección de correo a la que quieres enviar un mensaje.
Busca en los registros del sistema una línea de estado que contenga
status
y el código de respuesta del servidor(250)
:Debian
tail -n 5 /var/log/syslog
CentOS
tail -n 5 /var/log/maillog
Enviar correos con Java en tu instancia
Conéctate a tu instancia sendgrid-tutorial mediante SSH
- In the Cloud de Confiance console, go to the VM instances page.
- In the list of virtual machine instances, click SSH in the row of the instance that you want to connect to.
Redactar y enviar un mensaje de correo
En las siguientes instrucciones se usa la biblioteca de cliente Java de SendGrid para crear y enviar un mensaje de correo a través de SendGrid. Puedes ver el ejemplo completo en GitHub.
En tu terminal SSH:
Conviértete en superusuario y define una umask segura:
sudo su - umask 077
Instala Java y Maven:
apt -y update && apt -y install git-core openjdk-11-jdk maven
Clona el repositorio de GitHub:
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
Ve al código fuente principal del ejemplo:
cd /root/java-docs-samples/compute/sendgrid/src/main/java/com/example/compute/sendgrid
Abre
SendEmailServelet.java
para editarlo.Sustituye
your-sendgrid-api-key
por la clave de API de tu cuenta de SendGrid.Sustituye
your-sendgrid-from-email
por la dirección de correo desde la que quieras enviar mensajes.Sustituye
destination-email
por la dirección de correo a la que quieras enviar el correo.
Ve al directorio raíz del código de ejemplo:
cd /root/java-docs-samples/compute/sendgrid
Empaqueta la clase Java:
mvn clean package
Ve al nuevo directorio
target
:cd target
Define los permisos que te permitan ejecutar el archivo JAR:
chmod +x compute-sendgrid-1.0-SNAPSHOT-jar-with-dependencies.jar
Ejecuta el selector de la versión alternativa de Java:
update-alternatives --config java
Selecciona la opción
java-11-openjdk-amd64
.Ejecuta el archivo Java:
java -jar compute-sendgrid-1.0-SNAPSHOT-jar-with-dependencies.jar
Enviar correos con Node.js en tu instancia
Para ejecutar este ejemplo, debes tener instalada la versión 7.6 o posterior de Node.js
en la instancia de VM.
Conéctate a tu instancia sendgrid-tutorial mediante SSH
- In the Cloud de Confiance console, go to the VM instances page.
- In the list of virtual machine instances, click SSH in the row of the instance that you want to connect to.
Redactar y enviar un mensaje de correo
En tu terminal SSH:
Conviértete en superusuario y define una umask segura:
sudo su - umask 077
Actualiza los repositorios de paquetes:
Debian
apt update
CentOS
yum update -y
Instala las dependencias de Node.js:
Debian
apt -y install git-core curl build-essential openssl libssl-dev
CentOS
yum install git-core curl openssl openssl-devel -y yum groupinstall "Development Tools" -y
Instala Node.js. De forma predeterminada, la instalación también instala npm:
Debian
curl -sL https://deb.nodesource.com/setup_14.x | sudo bash - sudo apt -y install nodejs
CentOS
curl --silent --location https://rpm.nodesource.com/setup_14.x | bash -
A continuación, instala Node.js:
yum -y install nodejs
Instala el cliente Node.js de SendGrid:
npm install sendgrid
Clona el repositorio de muestra:
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
Ve al directorio que contiene el ejemplo de SendGrid:
cd nodejs-docs-samples/compute
Copia el archivo
sendgrid.js
:cp sendgrid.js sendmail.js
Abre
sendmail.js
para editarlo.Sustituye
your-sendgrid-api-key
por la clave de API de tu cuenta de SendGrid.Sustituye
from-email@example.com
por la dirección de correo desde la que quieras enviar mensajes.Sustituye
to-email@example.com
por la dirección de correo a la que quieras enviar el correo.
Ejecuta el programa para enviar un mensaje de correo a través de SendGrid:
node sendmail.js
Enviar correo desde un servidor de transporte perimetral de Exchange
Puedes configurar Microsoft Exchange para enviar correos salientes con SendGrid configurando un conector de envío saliente. Para obtener más información, consulta el artículo Deploying Microsoft Exchange Server 2016 on Compute Engine (Desplegar Microsoft Exchange Server 2016 en Compute Engine).