Recevoir des mails provenant de son serveur
Trucs de geek Alexandre 19 septembre 2014

La surveillance d'un serveur peut s'avérer très chronophage. Du coup, pour éviter de passer sa journée devant des fichiers de journalisation, il est possible de se faire envoyer des mails par son serveur. Certains démons, comme celui qui gère le RAID, envoie une alerte par mail à l'utilisateur root dès qu'il y a un problème. C'est pratique, mais l'utilisateur root ne dispose pas, par défaut, d'une adresse externe (Gmail, Yahoo, LaPoste, etc).

Avant de configurer un démon pour qu'il envoie des mails, il faut permettre aux mails de sortir de votre système ; pour cela, deux possibilités :

  1. Créer un serveur mail directement sur le serveur : à proscrire pour la simple raison que la mise en oeuvre d'un serveur mail n'est pas à la portée de tous et qu'il peut devenir rapidement compliqué à dépanner en cas de problème. On peut rajouter à ceci que la pérénité des mails n'est pas assurée.
  2. Utiliser un autre serveur mail, par exemple celui d'OVH, sur lequel on dispose d'un compte : cette méthode est appelée relais.

Dans la suite de cet article, je vous explique comment mettre en place la deuxième possibilité que l'on peut schématiser comme ceci :

Avant de commencer

Quelques pré-requis :

  • un serveur sous Debian
  • un accès SSH
  • les droits root
  • une adresse mail d’envoi

Il est possible d’utiliser trois paquets différents pour mettre en place un relais : exim4, postfix et ssmtp. Le paquet exim4 est pré-installé sous Debian, toutefois je préfère utiliser ssmtp. Ce choix est justifié par le fait que ssmtp est très simple à configurer et qu’il ne sait faire que du relais de mails.

Afin d’envoyer les mails en mode relais, il faut créer une adresse chez qui vous voulez : OVH, Free, Google, Yahoo, etc.

Bon, on y va !

La première étape est d'installer ssmtp :

Shell en root

apt-get install ssmtp
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés :
  libgnutls-openssl27
Les paquets suivants seront ENLEVÉS :
  exim4 exim4-base exim4-config exim4-daemon-light
Les NOUVEAUX paquets suivants seront installés :
  libgnutls-openssl27 ssmtp
0 mis à jour, 2 nouvellement installés, 4 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 279 ko dans les archives.
Après cette opération, 3 518 ko d'espace disque seront libérés.
Souhaitez-vous continuer [O/n] ? o

Comme on peut le voir, le paquet exim4 et ses dépendances sont automatiquement enlevés.
Nous allons maintenant configurer ssmtp en lui même pour qu'il sache utiliser l'adresse mail préalablement créée chez un fournisseur.

Shell en root

nano /etc/ssmtp/ssmtp.conf

Les parties à personnaliser sont en gras :

#
# Config file for sSMTP sendmail
#
# La personne qui recevra tous les mails pour utilisateurs ayant un ID < 1000
# Laisser vide pour désactiver la réécriture.
root=mail@pour_log_et_root.ext

# L'endroit où iront les mails. Le nom actuel de machine n'est pas requis.
# L'enregistrement MX  est consulté. Communément, le serveur mail est appelé mail.domain.com
mailhub=smtp.mon_fournisseur.ext:port_si_besoin

# L'adresse mail d'où provienne les mails ?
rewriteDomain=nom_serveur.local

# Le nom complet du serveur
hostname=localhost

# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
FromLineOverride=NO

# Username and password for Google's Gmail servers
# From addresses are settled by Mutt's rc file, so
# with this setup one can still achieve multi-user SMTP
AuthUser=adresse@creee_pour_l_occasion.ext
AuthPass=mot_de_passe_associe

Attention : pour utiliser une adresse Gmail, il faut ajouter ce qui suit à la fin du fichier de configuration :

# Spécifique à Gmail
UseTLS=YES
UseSTARTTLS=YES
AuthMethod=LOGIN

Sécurisons le fichier de configuration :

Shell en root

chmod 640 /etc/ssmtp/ssmtp.conf
chown root:mail /etc/ssmtp/ssmtp.conf

Maintenant, il faut indiquer quels utilisateurs ont le droit d'utiliser l'adresse mail :

Shell en root

nano /etc/ssmtp/revaliases

En restant cohérent avec mes exemples, le fichier ressemble à ceci :

# sSMTP aliases
#
# Format:       local_account:outgoing_address:mailhub
#
# Example: root:your_login@your.domain:mailhub.your.domain[:port]
# where [:port] is an optional port number that defaults to 25.
root:adresse@creee_pour_l_occasion.ext:ns0.ovh.net:587
alex:adresse@creee_pour_l_occasion.ext:ns0.ovh.net:587

Envoyer un mail via le terminal est un bon moyen de s'assurer du bon fonctionnement de la configuration :

Shell en root

echo "J'essaie d'envoyer un mail...." | mail -v -s "Test d'envoi" mail@pour_log_et_root.ext
[<-] 220 ns0.ovh.net ssl0.ovh.net. You connect to mail406.ha.ovh.net ESMTP
[->] EHLO nom_serveur.nom_domain.ext
[<-] 250 SIZE 109000000
[->] AUTH LOGIN
[<-] 334 VXNlcm5hbWU6
[->] cmFmaWtpQGVnYXJpbS5mcg==
[<-] 334 UGFzc3dvcmQ6
[<-] 235 ok, go ahead (#2.0.0)
[->] MAIL FROM:<adresse@creee_pour_l_occasion.ext>
[<-] 250 ok
[->] RCPT TO:<mail@pour_log_et_root.ext>
[<-] 250 ok
[->] DATA
[<-] 354 go ahead
[->] Received: by adresse@creee_pour_l_occasion.ext (sSMTP sendmail emulation); Mon, 27 Jan 2014 15:51:17 +0100
[->] From: "alex" <mail@pour_log_et_root.ext>
[->] Date: Mon, 27 Jan 2014 15:51:17 +0100
[->] To: <destination@amoi.fr>
[->] Subject: Test d'envoi
[->]
[->] J'essaie d'envoyer un mail....
[->] .
[<-] 250 ok 1390834562 qp 23620
[->] QUIT
[<-] 221 ns0.ovh.net ssl0.ovh.net. You connect to mail406.ha.ovh.net

Si tout s'est bien passé, un mail est arrivé dans la boite mail@pour_log_et_root.ext. Si ce n'est pas le cas, l'erreur est clairement affichée après la commande. La plupart du temps, l'erreur vient d'une faute de frappe dans le fichier de configuration.

Références

Écrire un commentaire

Quelle est la deuxième lettre du mot bswj ?