====== Mail-Queue via NRPE checken ======
Dieses kleine HowTo soll zeigen, wie sich eine Mail-Queue auf einem entfernten Host via NRPE überwachen lässt.
===== Aufgabenstellung =====
Einrichten eines Checks zur Überwachung einer Mail-Queue auf einem Linux-Server im Netzwerk.
**Problem:** Der Nagios-User hat auf die Queue keine Zugriffsrechte (was aus Sicherheitsgründen auch sinnvoll ist und nicht geändert werden sollte)
===== Lösungsansatz =====
Der Nagios-User darf mit Hilfe von **sudo** das Plugin **check_mailq** mit root-Rechten ausführen und hat somit lesenden Zugriff auf die Mail-Queue.
===== HowTo =====
==== Voraussetzungen ====
* Funktionierende NRPE-Installation
* Das Programm sudo
==== Lösungsschritte ====
1. Mittels des Editors visudo (eine erweiterte Version des Editors vi) die Datei /etc/sudoers bearbeiten und folgende Zeile hinzufügen
nagios ALL=(root) NOPASSWD: //check_mailq
2. Im Pluginverzeichnis eine Datei mit Namen **check_mailq_sudo** und folgendem Inhalt anlegen:
#!/bin/bash
//sudo //check_mailq $@
3. Der eben erstellten Datei executable-Rechte geben
chmod 755 check_mailq_sudo
4. In die **nrpe.cfg** muss nun noch folgende Zeile hinzugefügt werden
command[check_mailq]=//check_mailq_sudo -M -w -c
5. Ebenfalls muss eine Pfadangabe in der Datei **check_mailq** angepasst werden.
use lib "/" ;
6. Nun muss noch der NRPE-Daemon neu gestartet werden und der Überwachung steht nichts mehr im Wege ;-)
===== Troubleshooting =====
**NRPE unable to read output**
Problem: check_mailq_sudo funktioniert lokal auf dem entfernten Host, der Service auf dem Nagios Server liefert aber "NRPE unable to read output".
Lösung: Mit visudo die sudoers-Datei bearbeiten und folgenden Eintrag entfernen oder kommentieren, der sudo nur für interaktive Sessions erlaubt.
Defaults requiretty
===== Ergänzung =====
Ich hatte den Fehler ERROR: is not executable by (uid *:gid(* *))
Das Problem lag daran das zur Zeit der Plugin Kompilierung, der Mailserver nicht installiert war und daher der Eintrag $PATH_TO_MAILQ = "/usr/bin/mailq"; in //utils.pm nicht eingetragen war.