En este instructivo, se muestra cómo usar SendGrid para enviar correos electrónicos desde una aplicación que se ejecuta en una instancia de máquina virtual (VM) de Compute Engine.
Envía correos desde tu instancia con Postfix
Completa los siguientes pasos para conectarte a tu instancia de sendgrid-tutorial y ejecutar SendGrid con Postfix.
Conéctate a la instancia de sendgrid-tutorial a través de 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.
Configura SendGrid como una retransmisión de SMTP con Postfix
Ejecuta los siguientes comandos en la terminal de SSH para usar SendGrid como retransmisión de SMTP con Postfix.
Conviértete en superusuario:
sudo su -Establece una máscara de seguridad:
umask 077Instala el agente de transporte de correos Postfix:
Debian
apt update && apt -y install postfix libsasl2-modules
CentOS
yum install postfix cyrus-sasl-plain cyrus-sasl-md5 -y
Si se te solicita, 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 edición. Por ejemplo, para usar el editor de textonano, ingresa el comando siguiente:nano /etc/postfix/main.cfActualiza el archivo:
Comenta las siguientes líneas:
# default_transport = error # relay_transport = error
Agrega 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 aplican la compatibilidad con SSL/TLS y configuran 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 y cierra el archivo.
Genera el mapa de contraseña SASL mediante la clave de API que generaste en la sección Antes de comenzar. Reemplaza
your-api-keypor la clave de API que generaste.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 tengas un archivo
.dbde la manera siguiente:ls -l /etc/postfix/sasl_passwd*-rw------- 1 root root ... /etc/postfix/sasl_passwd -rw------- 1 root root ... /etc/postfix/sasl_passwd.db
Quita el archivo que contiene tus credenciales, ya que no lo necesitarás con el comando siguiente:
rm /etc/postfix/sasl_passwdConfigura los permisos en tu archivo
.dby verifica que el otro archivo se haya quitado de la manera siguiente: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 con los siguientes comandos:
Debian
/etc/init.d/postfix restartCentOS
postfix reloadInstala el paquete
mailutilsomailxcon los comandos siguientes:Debian
apt -y install mailutils
CentOS
yum install mailx -yEnvía un correo electrónico de prueba mediante el siguiente comando:
echo 'message' | mail -s subject email@example.com
Reemplaza lo siguiente:
message: El cuerpo del correo electrónicosubject: El asunto del correo electrónicoemail@example.com: La dirección de correo electrónico a la que deseas enviar un mensaje
Busca en tus registros de sistema una línea de estado que contenga
statusy el código de respuesta correcto del servidor(250):Debian
tail -n 5 /var/log/syslogCentOS
tail -n 5 /var/log/maillog
Envía un correo electrónico con Java en tu instancia
Conéctate a la instancia de sendgrid-tutorial a través de 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.
Crea y envía un mensaje de correo electrónico
En las siguientes instrucciones, se usa la biblioteca cliente de Java de SendGrid para crear y enviar un mensaje de correo electrónico a través de SendGrid. Puedes ver el ejemplo completo en GitHub.
En tu terminal de SSH, realiza los siguientes pasos:
Conviértete en superusuario y establece una máscara de seguridad:
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 ejemplo en el código fuente principal:
cd /root/java-docs-samples/compute/sendgrid/src/main/java/com/example/compute/sendgridAbre
SendEmailServelet.javapara edición.Reemplaza
your-sendgrid-api-keypor la clave de API para tu cuenta de SendGrid.Reemplaza
your-sendgrid-from-emailpor la dirección de correo electrónico desde la que deseas enviar un correo electrónico.Reemplaza
destination-emailpor la dirección de correo electrónico a la que deseas enviar un correo electrónico.
Ve al directorio raíz del código de muestra:
cd /root/java-docs-samples/compute/sendgridEmpaqueta la clase Java:
mvn clean packageVe al directorio
targetnuevo con el comando siguiente:cd targetEstablece permisos que te permitan ejecutar el archivo jar:
chmod +x compute-sendgrid-1.0-SNAPSHOT-jar-with-dependencies.jarEjecuta el selector de versión alternativa de Java con el siguiente comando:
update-alternatives --config javaSelecciona la opción
java-11-openjdk-amd64.Ejecuta el archivo Java con el comando siguiente:
java -jar compute-sendgrid-1.0-SNAPSHOT-jar-with-dependencies.jar
Envía correos electrónicos con Node.js en tu instancia
Para ejecutar este ejemplo, debes tener la versión 7.6 o posterior de Node.js instalada en la instancia de VM.
Conéctate a la instancia de sendgrid-tutorial a través de 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.
Crea y envía un mensaje de correo electrónico
En tu terminal de SSH, realiza los siguientes pasos:
Conviértete en superusuario y establece una máscara de seguridad:
sudo su - umask 077Actualiza los repositorios de tus 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 -Luego, 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 la muestra de SendGrid con el comando siguiente:
cd nodejs-docs-samples/computeCopia el archivo
sendgrid.jscon el comando siguiente:cp sendgrid.js sendmail.jsAbre
sendmail.jspara edición.Reemplaza
your-sendgrid-api-keypor la clave de API para tu cuenta de SendGrid.Reemplaza
from-email@example.compor la dirección de correo electrónico desde la que deseas enviar un correo electrónico.Reemplaza
to-email@example.compor la dirección de correo electrónico a la que deseas enviar un correo electrónico.
Ejecuta el programa para enviar un mensaje de correo electrónico a través de SendGrid:
node sendmail.js
Envía correos electrónicos desde un servidor de transporte perimetral de Exchange
Puedes configurar Microsoft Exchange para enviar correos electrónicos salientes con SendGrid mediante la configuración de un conector de envío saliente. Para obtener más detalles, consulta Implementa Microsoft Exchange Server 2016 en Compute Engine.