Ce #miniTuto numéro 2 va expliquer comment envoyer tous les emails provenant de votre serveur Web très facilement et de manière sûre et efficace. C’est à dire sans crainte de finir dans les spams ou pire, être blacklisté
Si vous êtes comme moi, vous utilisez votre serveur Web pour envoyer les emails de vos sites web comme des confirmations d’inscription, des notifications ou encore de petites newsletters. Le problème, c’est que votre serveur Web, du-moins votre IP n’est pas un serveur d’envoi reconnu pour envoyer du courrier électronique. Les serveurs SMTP sont les serveurs les plus surveillés au monde afin de lutter contre le spam ou les trojans et autres phishings. Difficile de lutter et de montrer patte blanche quand on a un petit serveur et qu’on héberge quelques sites web. On a beau insérer des règles DNS SPF et des clés DKIM pour les domaines de serveurs d’envoi, ça ne sera pas suffisant pour vous éviter d’atterrir dans les courriers indésirables de vos destinataires ou d’être blacklisté… (D’ailleurs le site MXtoolbox permet de chercher si votre IP est référencée dans les serveurs de blacklists du monde entier, histoire de savoir si vous êtes déjà malchanceux ^^)
Il y a une solution toute simple et gratuite :
Configurer votre serveur pour qu’il transfère l’envoi d’un mail vers Mailjet !
Mailjet est un « Email Service Provider » (ESP) français spécialisé dans l’envoi de newsletters comme Mailchimp, Mailpro et des centaines d’autres. La petite différence c’est que Mailjet permet aussi de s’occuper de l’envoi de tous vos emails sortants de votre serveur. Je vais vous expliquer comment mettre en place l’envoi vers mailjet et paramétrer correctement l’outil au niveau des autorisations. C’est parti !
Pré-requis
Voici les conditions pour ce tutoriel :
- disposer de son propre serveur dédié/VPS/virtuel
- serveur de mail Postfix installé
- Si non, installez le (sudo apt-get install postfix) et pas besoin de le paramétrer
- avoir un compte Mailjet
- Inscrivez-vous gratuitement
Avantages et Inconvénients
Avant de partir sur le tutoriel, je vous présente les aspects positifs et négatifs d’une telle configuration…
Les points forts :
- Un serveur mail rapide et sécurisé
- Extrêmement peu de chance d’aboutir en spam
- Une offre gratuite limitée à 200 mails par jours (6000 par mois)
- L’offre payante minimale de 5€49 propose 1000 mails par jours, mais je suis pas là pour vous vendre des trucs ^^
- Pas de publicité ni de mention du service mailjet dans vos mails (à part la mention du serveur d’envoi dans les paramètres du mail)
- Une interface de gestion très bien faite donnant accès aux rapports de taux d’ouverture, de clic sur les liens, des compteurs permettant de connaitre combien de mails arrivent en boite de réception, en spam (normalement très peu) etc.
Les points faibles :
- Absolument TOUS vos mails envoyés par votre serveur dédié s’enverront par mailjet (en même temps c’est ce qu’on souhaite)
- L’email de l’expéditeur ou son nom de domaine doit absolument être validé dans votre compte mailjet
- Je vous conseille d’activer le ou les noms de domaines de sites hébergés sur votre serveur afin d’utiliser n’importe quel email de leurs propres domaines
- Par exemple, j’ai activé mon propre ndd bxnxg.com, et l’expéditeur de mon formulaire de contact sur mon site est noreply [at] bxnxg.com (vous pourrez toujours mettre « Reply-to » avec l’email de l’émetteur réel, j’explique tout ça par la suite)
- N’oubliez pas que vous utilisez un service privé, qui aura la possibilité d’accéder à vos emails envoyé. Même si leur politique de confidentialité est rassurante : hébergement dans la zone européenne, alerte lorsqu’une administration gouvernementale souhaite accéder à vos données… Le support technique pourrait avoir accès à vos emails gérés par le site uniquement par contre il n’est fait nulle part allusion à l’accès aux emails dits « transactionnels » provenant de votre serveur web…
Voilà je voulais avant tout vous alerter sur ce genre de service à qui on pourrait confier des infos personnelles trop facilement ^^. Éviter d’utiliser ce service pour des sites sensibles ou la confidentialité des données est primordiale par exemple, mais dans 99% des cas ça ira très bien !
Partie Terminal
Connectez vous à votre serveur en SSH :
[cce_bash]sudo nano /etc/postfix/main.cf[/cce_bash]
Recherchez le terme « relayhost », s’il n’existe pas ajoutez ses 3 lignes à la fin de votre fichier :
[cce_bash]relayhost = in-v3.mailjet.com smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd[/cce_bash]
Fermez (Ctrl+X) et enregistrer vos modifications. Créez le fichier suivant :
[cce_bash]sudo nano /etc/postfix/sasl_passwd[/cce_bash]
Utilisez la clé API et la clé secrète de l’API Mailjet que vous trouverez ici. Ajoutez ces clés en une seule ligne de la façon suivante (les clés doivent être espacées de « in-v3.mailjet.com » et séparés entre elles d’un simple « : »)
[cce_bash]in-v3.mailjet.com VOTRE_CLE_API:VOTRE_CLE_SECRETE[/cce_bash]
Fermez (Ctrl+X) et enregistrer vos modifications. Maintenant mettez les droits d’accès suivants :
[cce_bash]sudo chown root:root /etc/postfix/sasl_passwd sudo chmod 600 /etc/postfix/sasl_passwd[/cce_bash]
On valide le transporteur mailjet à postfix et on redémarre le service :
[cce_bash]sudo postmap sasl_passwd /etc/init.d/postfix reload[/cce_bash]
La configuration sur votre serveur est terminée, dorénavant TOUS vos emails seront envoyés par mailjet. Il faut maintenant configurer le(s) nom(s) de domaines sur mailjet…
Partie Admin Mailjet
Vous pouvez soit ajouter des adresses email manuellement, soit des noms de domaines complets. Je vous conseille les noms de domaines, ça vous évitera d’ajouter un à un des emails d’un même domaine. Dans les 2 cas ça se passe ici (rubrique Mon compte > Adresses d’envoi).
Ajoutez votre ou vos noms de domaines… A chaque fois une vérification vous sera demandé en vous demandant d’ajouter un fichier vide à la racine de votre nom de domaine que vous mettrez simplement par ssh (méthode nano) ou par ftp.
Une fois que c’est fait, passez à l’étape recommandée, celle des authentification SPF et DKIM. ça se passe ici (rubrique Mon compte > Expéditeurs et domaines > Configuration de l’authentification SPF/DKIM). Vous trouverez tous vos nouveaux domaines non validés.
Cliquez sur l’icône gérer à droite de chacun d’eux, vous trouverez les paramètres DNS à insérer en mode TXT :
Personnellement mes DNS sont gérés depuis mon serveur dédié avec Bind. Voici ou j’ai placé les deux lignes :
Si vous utilisez Bind, pensez à incrémenter la valeur SERIAL (en haut de votre fichier db), puis de redémarrer le service bind (/etc/init.d/bind9 reload).
Vous pouvez « forcer l’actualisation » sur mailjet pour voir si les nouveaux paramètres DNS sont pris en compte, rien de grave si ce n’est pas le cas, les serveurs versifieront régulièrement tout seul par la suite.
Ajoutez les paramètres DNS TXT pour chacun de vos domaines et ce sera terminé pour mailjet ???? !
Derniers conseils
Les emails sortants de votre serveurs devraient fonctionner maintenant. La façon la plus simple de tester est d’utiliser un de vos formulaire sur vos sites. Attention toutefois, l’expéditeur de chaque email DOIT être un email ayant soit son nom de domaine activé sur mailjet comme expliqué plus haut, soit un email ajouté manuellement ! Un « noreply » ou « contact » @ mondomaine.com est le plus judicieux.
Si vous avez par exemple des formulaires de contacts que vous aviez l’habitude d’envoyer avec en expéditeur l’email de la personne, sachez qu’il ne faut pas faire ça ! JAMAIS ! L’email de la personne aura un nom de domaine complètement différent du votre (et de celui de mailjet), très mauvais et très gros risque d’aller direction les spams (ou encore une fois blacklist). Mettez toujours un expéditeur avec le même nom de domaine que celui du serveur d’email (ou un existant dans vos domaines activés mailjet). L’email de la personne peut être renseigné dans l’objet du mail mais aussi dans le paramètre « Reply-to »…
Petit exemple d’envoi de mail avec PHP utilisant Reply-to :
[cce_php]'.nl2br($_POST['message'])."