IT & Engineering

Des alertes de serveur Linux fiables avec Mailgun

Cet article a été rédigé par Major Hayden, Principal Architect chez Rackspace. Le monde multi-cloud d'aujourd'hui offre beaucoup de flexibilité, mais l'étalement de l'infrastructure crée de sérieux défis pour la livraison des emails. Les clients de Mailgun savent déjà comment la plateforme peut les aider à envoyer des emails professionnels critiques, tels que des reçus, des newsletters et des promotions. Qu'en est-il de tous ces autres emails que les serveurs doivent envoyer en cas de problème ?
Image pour Des alertes de serveur Linux fiables avec Mailgun

Cet article a été rédigé par Major Hayden, Principal Architect chez Rackspace.

Le monde multi-cloud d’aujourd’hui offre beaucoup de flexibilité, mais l’étalement de l’infrastructure crée de sérieux défis pour la livraison des emails. Mailgun les clients savent déjà comment la plateforme peut les aider à envoyer des emails professionnels critiques, tels que des reçus, des newsletters et des promotions. Qu’en est-il de tous ces autres emails que les serveurs doivent envoyer en cas de problème ?

Les serveurs doivent souvent envoyer une alerte par email lorsqu’un problème survient ou qu’un administrateur doit être informé d’une modification. Par exemple, la plupart des échecs de tâches cron finissent par générer des emails qui sont envoyés à une personne sur le système. Ces emails atterrissent souvent dans la messagerie de l’utilisateur root.

Pour certains serveurs, la messagerie de root est un trou noir, car le compte n’est pas configuré pour transférer l’email ailleurs. Pour d’autres, un administrateur système peut configurer une autre adresse pour recevoir l’email de l’utilisateur root. Faire livrer cet email en dehors du serveur s’avère complexe dans les environnements cloud pour de nombreuses raisons :

  • De nombreuses adresses IP sur les plateformes cloud sont déjà dans des listes de blocage d’emails 
  • Le reverse DNS n’est pas toujours configuré correctement par les administrateurs dans les environnements cloud
  • Maintien enregistrements SPF pour des environnements en constante fluctuation est difficile
  • La distribution de configurations DomainKeys de manière fiable est également difficile
  • Certains emails d’alerte peuvent atterrir dans les dossiers spam en raison de leur contenu, et ce, malgré une configuration parfaite du serveur d’emails
  • Certains fournisseurs cloud bloquent les connexions sortantes sur les ports SMTP courants (comme 25, 465 et 587)

Mailgun peut livrer ces emails importants de manière fiable sur presque tous les systèmes disposant d’un accès à Internet. Des MTA courants tels que postfix ou sendmail peuvent se connecter au service de Mailgun Relais SMTP et envoyer un email avec très peu de configuration. De plus, tous ces emails peuvent être livrés en toute sécurité avec SSL/TLS.

J’ai rendu ce processus un peu plus facile en créant un rôle Ansible appelé ansible-mailgun qui installera postfix et le configurera pour utiliser Mailgun comme relais SMTP. Ce rôle peut être facilement ajouté à tout playbook Ansible existant :

Il n’y a que trois variables à configurer pour que le rôle fonctionne. Tout d’abord, les valeurs mailgunusername et mailgunpassword apparaissent dans le tableau de bord Mailgun pour chaque domaine, sous la rubrique Domain Information . La variable rootforward_ doit être configurée sur une adresse email capable de recevoir l’email pour l’utilisateur root sur chaque serveur.

Voici comment cela fonctionne lorsqu’un email d’alerte est généré sur l’un des serveurs sur lesquels le rôle ansible_mailgun est appliqué :

  1. L’email d’alerte est déposé dans la file d’attente de livraison de postfix pour root
  2. Postfix se connecte à Mailgun via SMTP pour transférer l’email (l’adresse configurée en tant que rootforward_ dans le rôle Ansible)
  3. Mailgun livre l’email à l’utilisateur configuré pour recevoir l’email de root

Ce chemin de livraison des emails garantit que vos alertes sont livrées de manière fiable, quel que soit l’endroit où elles sont générées.