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.
Objectifs
- Utiliser SendGrid avec Postfix sur une instance Compute Engine.
- Utiliser SendGrid en code Java exécuté sur une instance Compute Engine.
- Utiliser SendGrid en code Node.js exécuté sur une instance Compute Engine.
- Utiliser SendGrid avec un serveur de transport Microsoft Exchange Edge sur une instance Compute Engine.
Pour en savoir plus sur la configuration de SendGrid, consultez la documentation SendGrid destinée aux développeurs.
Coûts
Dans ce document, vous utilisez les composants facturables de Google Cloudsuivants :
- Compute Engine
Vous pouvez obtenir une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût.
Avant de commencer
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- In the Google Cloud console, go to the Create an instance page.
-
Set Name to
sendgrid-tutorial. - In the OS and Storage section, click Change to begin configuring your boot disk.
- Dans l'onglet Public images, sélectionnez a Debian or CentOS image version.
- Cliquez sur Sélectionner.
- Pour créer la VM, cliquez sur Créer.
-
Inscrivez-vous au service de messagerie SendGrid via Google Cloud Marketplace. Notez vos informations d'identification de compte SMTP SendGrid, y compris le nom d'utilisateur, le mot de passe et le nom d'hôte. Votre nom d'utilisateur et votre mot de passe SMTP sont les mêmes que ceux utilisés pour vous inscrire au service. Le nom d'hôte SendGrid est
smtp.sendgrid.net. - Créez une clé API :
- Connectez-vous à Sendgrid et accédez à Paramètres > Clés API.
- Créez une clé API.
- Sélectionnez les autorisations pour la clé. La clé a besoin au minimum de l'autorisation d'envoi d'e-mails pour envoyer des e-mails.
- Cliquez sur Enregistrer pour créer la clé.
- SendGrid génère une nouvelle clé. Il s'agit de la seule copie de la clé. Assurez-vous de la copier et de l'enregistrer pour plus tard.
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 à l'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 077Installez 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.cfpour y apporter des modifications. Par exemple, pour utiliser l'éditeur de textenano, saisissez la commande suivante :nano /etc/postfix/main.cfMettez à 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 = noanonymousLes 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-keypar 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_passwdVé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_passwdDéfinissez les autorisations sur votre fichier
.dbet 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 restartCentOS
postfix reloadInstallez le package
mailutilsoumailx:Debian
apt -y install mailutils
CentOS
yum install mailx -yEnvoyez 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
statuset le code de réponse du serveur indiquant le succès de l'opération(250):Debian
tail -n 5 /var/log/syslogCentOS
tail -n 5 /var/log/maillog
Envoyer des e-mails avec Java sur votre instance
Se connecter à l'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 e-mail
Les instructions suivantes utilisent la bibliothèque cliente Java de SendGrid pour créer et envoyer un e-mail 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 077Installez Java et Maven :
apt -y update && apt -y install git-core openjdk-11-jdk mavenClonez le dépôt GitHub :
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.gitAccédez au code source principal de l'exemple :
cd /root/java-docs-samples/compute/sendgrid/src/main/java/com/example/compute/sendgridOuvrez
SendEmailServelet.javapour y apporter des modifications.Remplacez
your-sendgrid-api-keypar la clé API de votre compte SendGrid.Remplacez
your-sendgrid-from-emailpar l'adresse e-mail à partir de laquelle vous souhaitez envoyer l'e-mail.Remplacez
destination-emailpar 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/sendgridRéalisez le package de la classe Java :
mvn clean packageAccédez au nouveau répertoire
target:cd targetDéfinissez les autorisations pour exécuter le fichier jar :
chmod +x compute-sendgrid-1.0-SNAPSHOT-jar-with-dependencies.jarExécutez le sélecteur de version Java alternatif :
update-alternatives --config javaCochez 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 à l'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 e-mail
Dans votre terminal SSH :
Devenez un superutilisateur et définissez un "umask" sécurisé :
sudo su - umask 077Mettez à jour vos dépôts de packages :
Debian
apt updateCentOS
yum update -yInstallez les dépendances 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" -yInstallez 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 nodejsCentOS
curl --silent --location https://rpm.nodesource.com/setup_14.x | bash -Ensuite, installez Node.js :
yum -y install nodejsInstallez le client SendGrid Node.js :
npm install sendgridClonez l'exemple de dépôt :
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.gitAccédez au répertoire contenant l'exemple SendGrid :
cd nodejs-docs-samples/computeCopiez le fichier
sendgrid.js:cp sendgrid.js sendmail.jsOuvrez
sendmail.jspour y apporter des modifications.Remplacez
your-sendgrid-api-keypar la clé API de votre compte SendGrid.Remplacez
from-email@example.compar l'adresse e-mail à partir de laquelle vous souhaitez envoyer l'e-mail.Remplacez
to-email@example.compar l'adresse e-mail à laquelle vous souhaitez envoyer l'e-mail.
Exécutez le programme pour envoyer un e-mail 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 Déployer Microsoft Exchange Server 2016 sur Compute Engine.
Effectuer un nettoyage
Pour éviter que les ressources utilisées dans ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez chaque ressource individuellement.
Supprimer le projet
Le moyen le plus simple d'empêcher la facturation est de supprimer le projet que vous avez créé pour ce tutoriel.
Pour supprimer le projet :
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Supprimer votre instance Compute Engine
Pour supprimer une instance Compute Engine :
- In the Google Cloud console, go to the VM instances page.
-
Select the checkbox for
your
sendgrid-tutorialinstance. - To delete the instance, click More actions, click Delete, and then follow the instructions.
Étapes suivantes
Découvrez des architectures de référence, des schémas et des bonnes pratiques concernant Google Cloud. Consultez notre Cloud Architecture Center.