Envoyez des e-mails facilement avec Amazon SES (AWS)
Sommaire
I. Présentation
Qui n'a jamais galéré pour envoyer un e-mail à partir d'une application, d'une imprimante ou même d'un script ? Cette problématique doit parler à beaucoup d'entre vous...! Dans ce tutoriel, je vais vous présenter la solution Amazon Simple Email Service appelé Amazon SES et disponible au travers du Cloud AWS d'Amazon. Ce service sert à envoyer des e-mails transactionnels, des e-mails marketing ou des notifications, de façon très simple.
Ce service du Cloud AWS est accessible gratuitement, dans la limite de 200 e-mails par jour, ce qui peut suffire à répondre à de nombreux besoins pour les PME. Pour aller plus loin, il est possible d'éliminer cette bride en payant. L'objectif de cette limite est de lutter contre les spammeurs, car pour passer en mode débridé, ou plutôt en mode production, il faut faire une demande au support AWS. Cela évite que le service parte en vrille. Au niveau des coûts, c'est très faible puisque l'on est sur 0,10 dollars/1 000 e-mails (sans pièces jointes - voir ici).
Avant de commencer, vous devez créer un compte gratuit sur Amazon AWS en utilisant ce lien ou en accédant au site d'AWS par un autre biais.
J'en profite pour remercier @Merwan, fidèle lecteur d'IT-Connect, pour m'avoir suggéré cette idée d'article !
II. Amazon SES : approuver un domaine
Pour utiliser Amazon SES vous avez deux options : approuver un domaine complet ou approuver une seule ou plusieurs adresses e-mails (ce qui sera plus rapide, mais plus bridé). Dans cet exemple, nous allons voir comment approuver le domaine "it-connect.tech" afin de pouvoir envoyer des e-mails via ce domaine au travers d'Amazon SES.
Note : pour valider une adresse e-mail unique, il suffit d'indiquer l'adresse e-mail et de cliquer sur lien qui sera envoyé par Amazon SES.
Via le portail AWS, recherchez "SES" et cliquez sur "Amazon Simple Email Service".
Ensuite, cliquez sur "Create Identity", mais veillez à choisir la région souhaitée en haut à droite (la région en France, par exemple).
Pour l'Identity Type, choisissez "Domain" pour approuver un domaine complet. Indiquez le nom du domaine, ici "it-connect.tech". L'option "Use a custom MAIL FROM domain" permet d'utiliser un sous-domaine de votre propre domaine pour envoyer les e-mails plutôt que d'avoir une adresse MAIL FROM correspondante à un sous-domaine d'AWS. Elle n'est pas cochée dans cet exemple.
Descendez dans la page... et cliquez sur le bouton "Create Identity". La partie DKIM sera préconfigurée automatiquement, car la création des enregistrements DKIM va permettre de vérifier le domaine.
À gauche, cliquez sur "Verified identifies" et sélectionnez le domaine dans la liste (si vous n'êtes pas directement redirigé vers la page du domaine après la création). On peut voir que "DKIM configuration" est sur l'état "Pending". C'est normal, car nous devons créer les enregistrements DNS de type CNAME affichés sur la page.
Ici, vous devez modifier la zone DNS du domaine que vous souhaitez approuver de manière à créer les 3 enregistrements requis par Amazon SES. La méthode dépend de l'endroit où vous avez acheté votre domaine : OVHcloud, Ionos, Gandi, etc... Une fois que c'est fait, n'hésitez pas à rafraîchir la page Amazon SES de temps en temps, jusqu'à ce que l'état passe sur "Sucessful" comme ceci :
Désormais, le domaine "it-connect.tech" est vérifié, ce qui signifie que l'on va pouvoir l'utiliser au travers d'Amazon SES.
III. Amazon SES : créer des identifiants SMTP
Pour utiliser Amazon SES, il faut s'authentifier via SMTP. De ce fait, nous devons créer des identifiants SMTP. Cliquez sur "SMTP Settings" à gauche puis sur "Create SMTP credentials". J'en profite pour attirer votre attention sur les informations fournies sur cette page : le serveur SMTP, les numéros de port acceptés et le fait que le chiffrement est requis. Ces informations devront être utilisées pour envoyer des e-mails.
Il faut créer un utilisateur IAM qui sera associé à des identifiants SMTP. Donnez-lui un nom ou laissez le nom proposé par AWS. Poursuivez.
Ensuite, cliquez sur la flèche pour afficher les identifiants. AWS génère un nom d'utilisateur et un mot de passe, que vous devez garder au chaud. Il faudra utiliser ces identifiants par la suite au moment d'envoyer les e-mails.
Voilà, la configuration est terminée : nous pouvons tester Amazon SES !
IV. Envoyer un e-mail via Amazon SES
Pour tester, on peut utiliser une application, la ligne de commande Linux ou encore une commande PowerShell. Voici un exemple avec la commande PowerShell Send-MailMessage où l'on précise le serveur SMTP "email-smtp.eu-west-3.amazonaws.com", le numéro de port 587 et le fait d'utiliser une connexion sécurisée (-UseSSL). Sans oublier les identifiants qui seront précisés au niveau du paramètre -Credential et récupéré via Get-Credential.
Send-MailMessage -From "[email protected]" -To "[email protected]" -Subject "Test Amazon SES" -Body "Ceci est un test Amazon SES" -SmtpServer "email-smtp.eu-west-3.amazonaws.com" -Port 587 -UseSsl -Credential (Get-Credential)
Suite à l'exécution de cette commande, l'e-mail est bien arrivé dans ma boite de réception :
V. Amazon SES et le mode sandbox
Si l'on regarde le tableau de bord d'Amazon SES, on constate un message d'avertissement "Your Amazon SES account is in the sandbox in EU (Paris)". C'est à cause de ce mode sandbox, là pour lutter contre la fraude, qu'Amazon SES est bridé à 200 e-mails par période 24 heures. Il y a une autre bride associée au mode sandbox : vous pouvez envoyer des e-mails uniquement aux adresses e-mails vérifiées, ce qui évite d'arroser vers n'importe qui sans avoir un compte vérifié.
Remarque : selon les régions, cette restriction n'est pas présente, notamment aux US.
Pour utiliser Amazon SES en mode production et faire sauter ces deux restrictions, vous devez cliquer sur le bouton "Request production access". Ensuite, vous devez compléter un formulaire pour indiquer dans quel but vous comptez exploiter ce service (e-mails marketing ou e-mail transactionnel). Une fois que le support aura approuvé votre requête, vous allez bénéficier du mode production.
VI. Conclusion
Amazon SES est une solution très intéressante pour envoyer des e-mails à partir d'un domaine vérifié sans se prendre la tête ! Il est possible d'aller plus loin en demandant une adresse IP dédiée, en créant des modèles d'e-mails, etc... Et vous avez aussi le tableau de bord qui donne des statistiques basiques, mais appréciables pour voir le nom d'e-mail envoyé par jour, ainsi qu'éventuellement les e-mails rejetés.
👌🏻😉
Bonjour,
Excellent article !
Il y a une dizaine d’années, j’avais mis utilisé ce service car nous avions développé une application de « jeux » (dans les grandes lignes) qui pouvait générer des milliers de mails par jour.
C’est un Postfix qui envoyait les messages vers Amazon.
Pour les adresses emails erronées retournéees par Amazon, je les stockais dans une DB MySQL.
De fait, si cette adresse email essayait à nouveau d’envoyer du mail, je l’interceptait via Postix pour qu’elle ne pollue pas Amazon.
C’est un peu de la « bidouille », les services on probablement évolués.
Très content de leur service de mail !
Christophe
Bonjour,
J’imagine que le domaine doit être publique afin qu’il soit vérifié ?
Cela peut etre une adresse gmail.com / outlook.com / etc etc,
Si par « domaine » tu entends domaine type active directory, ce n’est pas ca. On parle de domaine .fr .com etc..
merci pour cet article
Merci pour l’explication