Configurer la notification par mail dans Nagios

Written by Sebastien Lambot on . Posted in Articles techniques, Réseaux, Unix / Linux

En cas d’alerte dans l’outil de monitoring Nagios, il est possible d’envoyer un mail aux contacts spécifiés grâce au programme postfix.

On va donc installer postfix (qui remplacera sendmail) ainsi qu’un outil pour tester l’envoi de mails: mailx. Ensuite on configurera Nagios pour qu’il envoie ses mails via postfix.

Désactivation de sendmail

On va commencer par arrêter sendmail (utilisez kill si le process est récalcitrant)

# service sendmail forcestop

On le désactive au démarrage

# echo 'sendmail_enable="NONE"' >> /etc/rc.conf

Ainsi que dans le fichier /etc/periodic.conf (s’il n’existe pas, créez-le) auquel on ajoute les lignes

daily_clean_hoststat_enable="NO"
daily_status_mail_rejects_enable="NO"
daily_status_include_submit_mailq="NO"
daily_submit_queuerun="NO"

Installation des programmes nécessaires

On installe postfix, procmail et mailx et on crée un lien symbolique dans /etc/ pour éviter la confusion d’autres applications utilisant postfix

# cd /usr/ports/mail/postfix && make config
... select PCRE, SASL2, and TLS
# make install clean
> Would you like to activate Postfix in /etc/mail/mailer.conf [n]
... Répondez "y"
# postconf -a
> cyrus
> dovecot
... ok les modules SASL sont intégrés à postfix
# cd /usr/ports/mail/procmail && make install clean
# cd /usr/ports/mail/mailx && make install clean
# ln -s /usr/local/etc/postfix /etc/postfix
# ln -s /usr/sbin/mailwrapper /usr/sbin/sendmail

SASL (Secured Anthentication and Security Layer) est nécessaire pour se loguer sur un relais SMTP avec un login et un mot de passe.

Le user « postfix » est automatiquement ajouté dans le fichier /etc/passwd.

On n’oublie pas d’activer postfix au démarrage dans /etc/rc.conf

# echo 'postfix_enable="YES"' >> /etc/rc.conf

Configuration de postfix

On peut configurer postfix en éditant le fichier /usr/local/etc/postfix/main.cf (remplacez les variables mises en évidence) pour qu’il ressemble à ceci:

Afficher: main.cf

Utilisation avec un relais SMTP

Dans mon cas, j’utilise un relais SMTP externe sur un port non-standard exigeant une authentification par login et mot de passe, ce qui est typiquement le cas pour GMail.

Création du fichier db contenant les identifiants

J’ai donc créé le fichier /usr/local/etc/postfix/sasl_passwd contenant les identifiants nécessaires. Si vous le configurez pour GMail, l’identifiant est votre adresse email.


smtp.provider.com:2525     login:password

On restreind ses permissions par soucis de sécurité

chown root:wheel /usr/local/etc/postfix/sasl_passwd && chmod 600 /usr/local/etc/postfix/sasl_passwd
Pourquoi n’attribuons nous aucun droit à l’utilisateur postfix?
> Postfix démarre d’abord avec les droits root, lit tous les fichiers nécessaires, et s’exécute ensuite avec l’utilisateur postfix.

On transforme le fichier plat en database sasl_passwd.db afin que postfix puisse lire plus rapidement les credentials qui y sont contenus

postmap /usr/local/etc/postfix/sasl_passwd

Un moyen de tester est de faire une query vers la db avec le paramètre -q. Si tout est correct, vous recevrez le login et mot de passe

# postmap -q smtp.provider.com:2525 /usr/local/etc/postfix/sasl_passwd
> login:password

Edition de la config de postfix pour prendre en compte les paramètres SMTP

On édite le fichier /usr/local/etc/postfix/main.cf pour lui ajouter les lignes

relayhost = send.one.com:2525
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = smtpd
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/usr/local/etc/postfix/sasl_passwd
smtp_sasl_type = cyrus
smtp_sasl_security_options = noanonymous
smtp_use_tls = no
smtp_cname_overrides_servername = no

On édite le fichier /etc/mail/aliases pour modifier l’adresse email de root

root:     myemail@gmail.com

Et on génère ensuite le fichier .db qui va avec

# newaliases
ou
# makemap hash /etc/mail/aliases.db < /etc/mail/aliases
# postmap -q root /etc/mail/aliases
... affiche l'adresse mail de root ...

Dans le cas où le nom de domaine interne est différent du nom de domaine externe

Si vous laissez la config telle quelle, vous recevrez un mail d’erreur avec le message

Sender address rejected: not owned by user myemail@gmail.com

Votre relais SMTP vous préviens que vous tentez d’envoyer un mail en une adresse de sender qui ne correspond pas à votre compte: « root@monhost.mondomaine.be » au lieu de « myemail@externaldomain.com ».

Pour celà, il faut créer une table de mapping et spécifier à postfix qu’il doit réécrire l’adresse du sender dans le mail header:


# touch /usr/local/etc/postfix/generic
# echo "root@monhost.mondomaine.be     myemail@externaldomain.com" >> /usr/local/etc/postfix/generic
# echo "nagios@monhost.mondomaine.be     myemail@externaldomain.com" >> /usr/local/etc/postfix/generic
# postmap /usr/local/etc/postfix/generic
# echo "smtp_generic_maps = hash:/usr/local/etc/postfix/generic" >> /usr/local/etc/postfix/main.cf

Test d’envoi de mail

On peut finalement tester postfix en le démarrant

# /usr/local/etc/rc.d/postfix onestart

ou en lui demandant de faire un reload de sa config si il est déjà démarré

# postfix reload

On va créer un mail de test dans /tmp/testmail.txt

To: destinataire@mail.be
From: myemail@ecternaldomain.com
Subject: Testmessage
This is a test for sending

et envoyer ce mail de test vers sendmail (postfix en fait)

# sendmail destinataire@mail.be < /tmp/testmail.txt

Vous devriez avoir reçu un mail sur votre adresse destinataire@mail.be

Troubleshooting

Si vous n’avez rien reçu ou si vous recevez un mail « Undelivered mail returned to sender », vérifiez les logs /var/log/messages et /var/log/maillog .
Pour tester l’envoi de mail à partir de Nagios, vous pouvez sélectionner un service et cliquer sur « send custom notification for this service ». Vous devriez recevoir un mail venant de Nagios.

Tags:

Trackback from your site.

Comments (1)

  • Supervision Nagios | White Flag

    |

    […] comment configurer les notifications et l’envoi de mail. Par contre je vous ai déniché un petit article bien sympas qui vous […]

    Reply

Leave a comment

You must be logged in to post a comment.