Ce tutoriel explique comment utiliser SendGrid pour envoyer des e-mails depuis une application s'exécutant sur une instance de machine virtuelle (VM) Compute Engine.
Envoyer des messages depuis votre instance avec Postfix
Pour vous connecter à votre instance sendgrid-tutorial et exécuter SendGrid avec Postfix, procédez comme suit.
Se connecter à une instance sendgrid-tutorial à l'aide 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.
Configurer SendGrid en tant que relais SMTP avec Postfix
Pour utiliser SendGrid en tant que relais SMTP avec Postfix, exécutez les commandes suivantes dans votre terminal SSH.
Devenez un superutilisateur :
sudo su -
Définissez un "umask" sécurisé :
umask 077
Installez l'agent de transfert de messages Postfix :
Debian
apt update && apt -y install postfix libsasl2-modules
CentOS
yum install postfix cyrus-sasl-plain cyrus-sasl-md5 -y
À l'invite, sélectionnez la configuration Uniquement en local et acceptez le nom de domaine par défaut.
Modifiez les options de configuration de Postfix. Ouvrez
/etc/postfix/main.cf
pour y apporter des modifications. Par exemple, pour utiliser l'éditeur de textenano
, saisissez la commande suivante :nano /etc/postfix/main.cf
Mettez à jour le fichier :
Passez les lignes suivantes en commentaire :
# default_transport = error # relay_transport = error
Ajoutez les lignes suivantes à la fin du fichier :
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
Les lignes ci-dessus appliquent la compatibilité des protocoles SSL/TLS et configurent l'authentification SMTP pour ces requêtes. Un module de couche de sécurité et d'authentification simple (SASL, Simple Authentication and Security Layer) gère l'authentification dans la configuration de Postfix.
Enregistrez et fermez le fichier.
Générez la carte de mot de passe SASL à l'aide de la clé API créée dans la section Avant de commencer. Remplacez
your-api-key
par la clé API que vous avez générée.echo [smtp.sendgrid.net]:2525 apikey:your-api-key >> /etc/postfix/sasl_passwd
Avec l'utilitaire
postmap
, générez un fichier.db
:postmap /etc/postfix/sasl_passwd
Vérifiez que vous disposez d'un fichier
.db
:ls -l /etc/postfix/sasl_passwd*
-rw------- 1 root root ... /etc/postfix/sasl_passwd -rw------- 1 root root ... /etc/postfix/sasl_passwd.db
Supprimez le fichier contenant vos informations d'identification, car il n'est plus nécessaire :
rm /etc/postfix/sasl_passwd
Définissez les autorisations sur votre fichier
.db
et vérifiez que l'autre fichier a été supprimé :chmod 600 /etc/postfix/sasl_passwd.db ls -la /etc/postfix/sasl_passwd*
-rw------- 1 root root ... /etc/postfix/sasl_passwd.db
Rechargez votre configuration pour charger les paramètres modifiés :
Debian
/etc/init.d/postfix restart
CentOS
postfix reload
Installez le package
mailutils
oumailx
:Debian
apt -y install mailutils
CentOS
yum install mailx -y
Envoyez un e-mail test :
echo 'message' | mail -s subject email@example.com
Remplacez l'élément suivant :
message
: corps de l'e-mail.subject
: objet de l'e-mail.email@example.com
: adresse e-mail à laquelle vous souhaitez envoyer un message.
Dans vos journaux système, recherchez une ligne d'état contenant
status
et le code de réponse du serveur indiquant le succès de l'opération(250)
:Debian
tail -n 5 /var/log/syslog
CentOS
tail -n 5 /var/log/maillog
Envoyer des e-mails avec Java sur votre instance
Se connecter à une instance sendgrid-tutorial à l'aide 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.
Créer et envoyer un message électronique
Les instructions suivantes utilisent la bibliothèque cliente Java SendGrid pour créer et envoyer un message électronique via SendGrid. L'exemple complet est disponible sur GitHub.
Dans votre terminal SSH :
Devenez un superutilisateur et définissez un "umask" sécurisé :
sudo su - umask 077
Installez Java et Maven :
apt -y update && apt -y install git-core openjdk-11-jdk maven
Clonez le dépôt GitHub :
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
Accédez au code source principal de l'exemple :
cd /root/java-docs-samples/compute/sendgrid/src/main/java/com/example/compute/sendgrid
Ouvrez
SendEmailServelet.java
pour y apporter des modifications.Remplacez
your-sendgrid-api-key
par la clé API de votre compte SendGrid.Remplacez
your-sendgrid-from-email
par l'adresse e-mail à partir de laquelle vous souhaitez envoyer des e-mails.Remplacez
destination-email
par l'adresse e-mail à laquelle vous souhaitez envoyer des e-mails.
Accédez au répertoire racine de l'exemple de code :
cd /root/java-docs-samples/compute/sendgrid
Réalisez le package de la classe Java :
mvn clean package
Accédez au nouveau répertoire
target
:cd target
Définissez les autorisations pour exécuter le fichier jar :
chmod +x compute-sendgrid-1.0-SNAPSHOT-jar-with-dependencies.jar
Exécutez le sélecteur de version Java alternatif :
update-alternatives --config java
Cochez l'option
java-11-openjdk-amd64
.Exécutez le fichier Java :
java -jar compute-sendgrid-1.0-SNAPSHOT-jar-with-dependencies.jar
Envoyer un e-mail avec Node.js sur votre instance
Pour exécuter cet exemple, Node.js
doit être installé sur votre instance de VM dans sa version 7.6 ou une version ultérieure.
Se connecter à une instance sendgrid-tutorial à l'aide 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.
Créer et envoyer un message électronique
Dans votre terminal SSH :
Devenez un superutilisateur et définissez un "umask" sécurisé :
sudo su - umask 077
Mettez à jour vos dépôts de packages :
Debian
apt update
CentOS
yum update -y
Installez les dépendances 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
Installez Node.js. Par défaut, npm est également installé :
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 -
Ensuite, installez Node.js :
yum -y install nodejs
Installez le client SendGrid Node.js :
npm install sendgrid
Clonez l'exemple de dépôt :
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
Accédez au répertoire contenant l'exemple SendGrid :
cd nodejs-docs-samples/compute
Copiez le fichier
sendgrid.js
:cp sendgrid.js sendmail.js
Ouvrez
sendmail.js
pour y apporter des modifications.Remplacez
your-sendgrid-api-key
par la clé API de votre compte SendGrid.Remplacez
from-email@example.com
par l'adresse e-mail à partir de laquelle vous souhaitez envoyer des e-mails.Remplacez
to-email@example.com
par l'adresse e-mail à laquelle vous souhaitez envoyer des e-mails.
Exécutez le programme pour envoyer un message électronique via SendGrid :
node sendmail.js
Envoyer des e-mails depuis un serveur de transport Edge Exchange
Vous pouvez configurer Microsoft Exchange pour envoyer des e-mails sortants avec SendGrid en configurant un connecteur d'envoi sortant. Pour plus d'informations, consultez la section Déployer Microsoft Exchange Server 2016 sur Compute Engine.