Exim: monitorizar la cola de correo en Big Brother

Hoy vamos a ver la forma de integrar en el sistema de monitorización Big Brother la supervisión del estado de la cola de correos de exim. Todo ello gracias al script bb-exim.sh creado por Carl C. Inglis.

Es un script fácil de entender, modificar y personalizar a nuestros requerimientos. Lo más básico a conocer es que podemos realizar y monitorizar lo siguiente:

# Tests are:
#               RUN - Test if the daemon is running
#               QUEUE - Check the size of the queue (see below)
#               REJECT - Check to see if the reject log is > 0 bytes long
#               PANIC - Check to see if the panic log is > 0 bytes long
#               FROZEN - Check to see if there are any frozen messages
#                 IGNOREFROZENERRS - Ignore frozen messages with a sender
#                                    of "<>".  (i.e., error responses.)
TESTRUN="y"
TESTQUEUE="y"
TESTREJECT="n"
TESTPANIC="y"
TESTFROZEN="y"
IGNOREFROZENERRS="y"

Como veis, por defecto revisa que el demonio de exim está corriendo, así como el tamaño de la cola de correo, el tamaño de los logs panic y reject (no por defecto para el reject)así como el número de correo en estado frozen o sin destinatario válido. Después, hay dos variables para seleccionar el umbral de aviso para warning y panic con el número de correos en cola:

TESTQUEUEALERT="50"
TESTQUEUEPANIC="100"

Revisad también que la ruta al binario de exim es la correcta, a los logs, etc:

EXIMBINARY="/usr/sbin/exim"
EXIMREJECT="/var/log/exim/rejectlog"
EXIMPANIC="/var/log/exim/paniclog"

La instalación es igual que cualquier extensión de Big Brother, ubicáis el script en la carpeta ext/, le asignais permisos de ejecución para el usuario y después lo añadís en el fichero bb-bbext y reiniciamos Big Brother:

# vim /ruta_a_big_brother/ext/bb-exim.sh
# chmod 0750 /ruta_a_big_brother/ext/bb-exim.sh
# chown usuariobb. /ruta_a_big_brother/ext/bb-exim.sh
# vim /ruta_a_big_brother/etc/bb-bbexttab
localhost :  : bb-exim.sh

Personalmente he realizado unas cuantas modificaciones para adecuarlo a mis necesidades. Entre ellas la necesidad de usar sudo ya que el usuario Big Brother no tiene privilegios, otra de ellas la visualización de la cola de correo. En lugar de mostrar la lista de mensajes como se vería con un exim -bp, la parseo mediante exiqsumm -c para que sea agradable a la vista y más rápido de visualizar y claro:

# exim -bp
 2h  5.9K xx-0000ko-HA 
          xxx_70@xxx.com

 2h  6.0K xx-0000kt-OZ 
          xxx_70@xxx.com

76m  9.3K xx-0003Ee-OO 
          xxx@xxx.org

51m  7.8K xx-0005cQ-Te 
          xxx.xxx@xxx.org
# exim -bp | exiqsumm -c

Count Volume Oldest Newest Domain
----- ------ ------ ------ ------

279 23MB 63h 30m xxx.org
2 12KB 2h 2h xxx.com
2 272KB 14h 12h xxx.com

---------------------------------------------------------------
289 28MB 63h 20m TOTAL

El resultado final, podría ser algo así:

Exim Big Brother

Podéis descargar el script original aquí.

7 comentarios en “Exim: monitorizar la cola de correo en Big Brother

  1. Hola, tengo un problemilla como conseguiste arreglar el tema de los permisos?, sucede que el servidor que quiero chequear es un cpanel, y veo que en los logs me muestra error de permiso, pero no a la extensión si no al binario, ya que en el chequeo no muestra nada en la cola.

    Gracias y excelente tuto.
    Saludoss.

      • Gracias por tu respuesta, eso hice, en la línea del script donde muestra los resultados, le antepuse sudo y no funciona, mira esa línea quedo asi:

        if test «$LISTQUEUE» = «y» -o «$LISTQUEUE» = «Y»
        then
        RETURNLINE=»$RETURNLINE
        `sudo $EXIMBINARY $EXIMLIST | sed ‘s//\]/g’`»
        fi

        # Build the line
        LINE=»status $MACHINE.$TEST $RETURNCOLOUR `date`
        $RETURNLINE
        »

        # Send the date
        $BB $BBDISP «$LINE»

        Es la única que he modificado, aparte de la ruta del binario de exim claro.

        Necesito hacer algún cambio más? les estaré muy agradecido, un saludo.

        • Y el usuario que ejecuta el script tiene permitido el uso de sudo? No se, habría que ver la salida de errores del script para ver que sucede.

          Saludos

          • Eso no estoy seguro, donde puedo verlo?, por otro lado la salida del logo del script es esta:

            ./ext/bb-exim.sh: line 236: test: -ge: unary operator expected
            ./ext/bb-exim.sh: line 242: test: -ge: unary operator expected
            exim: permission denied
            sudo: sorry, you must have a tty to run sudo

            Un saludo.

          • Gracias por la ayuda, he otorgado permiso de ejecución a ese binario como root al usuario xymon y todo OK, buen tuto.

            Gracias :-)

  2. He probado correr el comando para consultar las colas desde línea de comandos con el usuario xymon éste es el resultado :(

    root@omega [~]# su xymon -c «su /usr/sbin/exim -bp»
    bash: /bin/su: Permission denied

    root@omega [~]# su xymon -c «/usr/sbin/exim -bp»
    exim: permission denied

    Espero me puedan echar un cable, un saludo

Comments are closed.