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 Google Cloud 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 077Instala 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.cfpara editarlo. Por ejemplo, para usar el editor de textonano, introduce el siguiente comando:nano /etc/postfix/main.cfPara 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 = noanonymousLas 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-keypor la clave de API que has generado.echo [smtp.sendgrid.net]:2525 apikey:your-api-key >> /etc/postfix/sasl_passwd
Usa la utilidad
postmappara generar un archivo.db:postmap /etc/postfix/sasl_passwdVerifica 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_passwdDefine los permisos de tu archivo
.dby 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 restartCentOS
postfix reloadInstala el paquete
mailutilsomailx:Debian
apt -y install mailutils
CentOS
yum install mailx -yEnví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
statusy el código de respuesta del servidor(250):Debian
tail -n 5 /var/log/syslogCentOS
tail -n 5 /var/log/maillog
Enviar correos con Java en tu instancia
Conéctate a tu instancia sendgrid-tutorial mediante SSH
- In the Google Cloud 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 077Instala Java y Maven:
apt -y update && apt -y install git-core openjdk-11-jdk mavenClona el repositorio de GitHub:
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.gitVe al código fuente principal del ejemplo:
cd /root/java-docs-samples/compute/sendgrid/src/main/java/com/example/compute/sendgridAbre
SendEmailServelet.javapara editarlo.Sustituye
your-sendgrid-api-keypor la clave de API de tu cuenta de SendGrid.Sustituye
your-sendgrid-from-emailpor la dirección de correo desde la que quieras enviar mensajes.Sustituye
destination-emailpor 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/sendgridEmpaqueta la clase Java:
mvn clean packageVe al nuevo directorio
target:cd targetDefine los permisos que te permitan ejecutar el archivo JAR:
chmod +x compute-sendgrid-1.0-SNAPSHOT-jar-with-dependencies.jarEjecuta el selector de la versión alternativa de Java:
update-alternatives --config javaSelecciona 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 Google Cloud 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 077Actualiza los repositorios de paquetes:
Debian
apt updateCentOS
yum update -yInstala las dependencias de Node.js:
Debian
apt -y install git-core curl build-essential openssl libssl-devCentOS
yum install git-core curl openssl openssl-devel -y yum groupinstall "Development Tools" -yInstala 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 nodejsCentOS
curl --silent --location https://rpm.nodesource.com/setup_14.x | bash -A continuación, instala Node.js:
yum -y install nodejsInstala el cliente Node.js de SendGrid:
npm install sendgridClona el repositorio de muestra:
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.gitVe al directorio que contiene el ejemplo de SendGrid:
cd nodejs-docs-samples/computeCopia el archivo
sendgrid.js:cp sendgrid.js sendmail.jsAbre
sendmail.jspara editarlo.Sustituye
your-sendgrid-api-keypor la clave de API de tu cuenta de SendGrid.Sustituye
from-email@example.compor la dirección de correo desde la que quieras enviar mensajes.Sustituye
to-email@example.compor 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).