Beschreibung

Das Plugin check_mailbox_health ermöglicht die Abfrage von Mailservern (IMAP), das Auslesen und Zählen von Mails, das Filtern nach bestimmten Kriterien, sowie die Analyse von Mailinhalten und -attachments.

Motivation

Häufig findet die Kommunikation zwischen Firmen, zwischen Lieferant und Einkauf, zwischen Zulieferern und Werken per automatisiertem Email-Verkehr statt. Das Eintreffen von Mails zu einem erwarteten Zeitpunkt und die Art der Mail zu monitoren war die Anforderung, die zur Entstehung dieses Plugins führte.

Dokumentation

Kommandozeilenparameter

  • –hostname <hostname> Der Hostname bzw. die IP-Adresse des Mail-Servers.
  • –port <port> Die Portnummer, falls sie vom Standard abweicht.
  • –username <username> Der Mailbox-User.
  • –password <password> Dessen Passwort.
  • –folder <nr> Ein bestimmtes Postfach (default: INBOX)
  • –ssl Kommunikation mit dem Mailserver findet verschlüsselt statt.
  • –protocol <mail-protocol> Das verwendete Protokoll. (Derzeit nur IMAP)
  • –mode <modus> Mit dem mode-Parameter teilt man dem Plugin mit, was es tun soll. Siehe Liste der möglichen Werte weiter unten.
  • –select <Regel> Hier kann man einschränken, welche Art von Mails überhaupt betrachtet werden.
  • –name <objektname> Dient der genaueren Eingrenzung.
  • –name2 <objektname> Dito, zur genaueren Eingrenzung.
  • –name3 <objektname> Dito, zur genaueren Eingrenzung.
  • –regexp Ein Flag welches angibt, ob –name[2,3] als regulärer Ausdruck zu interpretieren ist.

Modi

Schlüsselwort Bedeutung Schwellwerte
connection-time Misst, wie lange Verbindungsaufbau und Login dauern 0..n Sekunden (Default: 1, 5)
mail-age Alarmiert, wenn Mails älter als n Minuten sind  
count-mails Zählt die Mails (die ggf. bestimmten Kriterien genügen)  
list-mails Listet die Mails auf (die ggf. bestimmten Kriterien genügen)  

Selektoren

Mit dem Parameter –select <selektor>=<Bedingung> schränkt man die Auswahl der Mails ein.

Selektor Bedeutung
subject Das Subject entspricht dem Bedingungs-String
content Der Bedingungs-String kommt im Mailtext vor
newer_than Die Mail ist neuer als Date::Manip-Ausdruck
older_than Die Mail ist älter als Date::Manip-Ausdruck
has_attachments Die Mail hat Attachments
attachments Die Mail hat Attachments, deren Mime-Typ dem Bedingungs-String entspricht

Bei der Selektion nach Attachments (also –select attachment=…) gilt:
Man kann eine kommaseparierte Liste angeben, die wird zerlegt und dann so behandelt als gäbe es für jedes Element einen eigenen Select.
Falls ein Element einen Slash enthält, wird davon ausgegangen, daß der Mime-Typ eines Attachments gemeint ist. Falls nicht, wird mit der Dateiendung der Anhänge verglichen. Schreibt man beispielsweise –select attachment=’xls,xlsx,xlsm,application/pdf’ so werden PDF-Dokumente selektiert und alles, was eine Excel-artige Dateiendung hat (Mime-Types für Excel-Dokumente kommen in etlichen Formen daher und sind schwer handzuhaben).
Hängt man noch ein –regexp an, dann gilt wiederum, daß ein Slash einen Mime-Typ angibt (Besser gesagt ein Muster für Mime-Types), z.b. –select attachment=’image\/.*‘. Fehlt der Slash, dann wird der Pattern mit dem gesamten Dateinamen verglichen, z.b. –select attachment=’.*folien.*‘.

Installation

tar zxf g...tar.gz; cd check_mailbox_health...; ./configure; make
cp plugins-scripts/g sonstwohin

Beispiele

$ check_mailbox_health --mode connection-time \
    --username lausser --password greizweis \
    --warning 10 --critical 20
OK - 0.00 seconds to connect as lausser | 'connection_time'=0;10;20;;

$ check_mailbox_health --mode count-mails \
    --username lausser --password greizweis \
    --warning 1000 --critical 2000 
CRITICAL - 12463432 mails in mailbox | 'mails'=12463432;1000;2000;;

# Suche alle Mails, welche Attachments mit Filename-Extension 
# pptx oder jpg haben:
$ check_mailbox_health --mode list-mails \
    --username lausser --password greizweis \
    --select newer_than="today 13:00" --select attachments='pptx,jpg'
Thu Apr 20 14:01:32 2017 Gerhard Lausser <lausser@yahoo.com> 
  multipart/alternative --noname--
  application/vnd.openxmlformats-officedocument.presentationml.presentation User-Experience_Folie-Zeitplan.pptx
  image/jpeg coshsh_logo_small.jpg
  application/pdf Erläuterung Zielerfüllungsprotokoll.pdf
Thu Apr 20 17:33:51 2017 Michael Kraus <michael.kraus@consol.de> [monitoring-team-l] =?ISO-8859-1?Q?Sch=F6ne_Gr=FC=DFe_aus_S=FCdtirol?=
  text/html --noname--
  image/jpeg IMG_20170420_164159.jpg
OK - have fun

# Suche alle Mails, welche Attachments mit einem Filenamen haben, welcher
# ein bestimmtes Muster enthält:
$ check_mailbox_health --mode list-mails \
    --username lausser --password greizweis \
    --select attachments='IMG' --regexp
Thu Apr 20 17:33:51 2017 Michael Kraus <michael.kraus@consol.de> [monitoring-team-l] =?ISO-8859-1?Q?Sch=F6ne_Gr=FC=DFe_aus_S=FCdtirol?=
  text/html --noname--
  image/jpeg IMG_20170420_164159.jpg
OK - have fun

Download

check_mailbox_health-2.0.0.1.tar.gz

Changelog

  • 2022-08-19 2.0.0.1
    dreckstippfehler
  • 2022-08-19 2.0
    support outlook365 with OAuth 2.0 client credentials flow
  • 2021-05-04 1.9
    check imap capabilities first, don’t try to sort by default
  • 2021-01-31 1.8
    reduce debugging output, better handling of utf8 wide characters
  • 2017-05-11 1.7.2.1
    update GLPlugin
  • 2017-04-20 1.7.2
    filter attachments by file extension (Thanks Philip)
  • 2016-11-28 1.7.1
    fix utf-encoded subjects
  • 2016-08-10 1.7
    delegate some selects to the imap-server
    add a greenmail simulator for tests
  • 2016-08-02 1.6.0.2
    update GLPlugin & bugfix in list-mails
  • 2016-06-03 1.6.0.1
    update GLPlugin
  • 2016-05-14 1.6
    add selectors “seen” and “is_bigger”
  • 2016-02-29 1.5
    update version, changelog, glplugin
  • 2016-02-09 1.4
    add glplugin submodule
  • 2015-07-13 1.3
    new directory layout, standalone
  • 2015-06-02 1.2
    add morph-message
    add date:manip strings for older_than newer_than
  • 2015-06-01 1.1
    start with –disable-standalone
  • 2015-05-30 1.0
    init

Gerhard Laußer
Check_mailbox_health wird unter der GNU General Public License zur Verfügung gestellt.

Autor

Gerhard Laußer (gerhard.lausser@consol.de) beantwortet gerne Fragen zu diesem Plugin.
Nein, das ist gelogen. Er verkauft gern Consulting.