PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : fetchmail: daemon mode, bei "fingerprints do not match" E-Mail an Postmaster



L00NIX
05.07.09, 20:28
Hi all,

Ich benutze fetchmail zum Einsammeln meiner E-Mails von meinem Provider. Dabei benutze ich TLS (SSL) und das Zertifikat scheint hin und wieder mal zu wechseln, so dass es zu der oben bereits genannten Warnung fingerprints do not match im Logfile kommt.

Blöd ist nur, dass mein fetchmail im Daemon Mode läuft und mich darüber nicht informiert, dass er ein Problem mit dem Zertifikat hat.

Kann mir jemand ein paar Möglichkeiten aufzeigen, wie man den Postmaster via E-Mail über diese Warnung informieren kann?

Ich möchte nicht via Cron und Skript das Logfile regelmäßig durchnudeln... :rolleyes:

EDIT:
Mit postconnect und einem Skript (mit logtail) funktioniert es nicht. Das Skript wird wohl nicht am Ende des Abholvorgangs sondern schon vorher gestartet.

Danke & Gruß
L00NIX

L00NIX
14.10.09, 16:49
Nachtrag:
Es klappt dann wohl noch mit postconnect:

Aus /etc/fetchmailrc:


# /etc/fetchmailrc

# ----------------------------------------------------------------------
# global options
# ----------------------------------------------------------------------

set daemon 900 # Poll every 15 minutes
set postmaster root # defaults to postmaster
set no bouncemail # avoid loss on 4xx errors
# on the other hand, 5xx errors get
# more dangerous...

set no syslog # log through syslog facility
set logfile /var/log/fetchmail.log # ...or specify a logfile

# ----------------------------------------------------------------------
# accounts
# ----------------------------------------------------------------------

poll pop.kundenserver.de with protocol POP3
user "bla" there with password "geheim" is "myuser" here
user "blupp" there with password "strenggeheim" is "myuser" here
ssl sslproto tls1
sslfingerprint "8F:97:49:0A:BC:47:B9:C0:85:33:F1:18:AB:4D:EC:44"
postconnect /usr/local/bin/check_fingerprint_not_match


... und hier die Prüfdatei "check_fingerprint_not_match":


#!/bin/bash

bin_grep=/bin/grep
bin_logtail=/usr/sbin/logtail
bin_mail=/usr/bin/mailx
log_mail=/var/log/fetchmail.log

${bin_logtail} ${log_mail} |\
${bin_grep} -B1 'fingerprints do not match' |\
${bin_mail} -e -s 'fetchmail: fingerprint do not match, evtl. wurde das Zertifikat mal wieder gewechselt' postmaster


Da der fetchmail-daemon nicht nicht als root läuft, muss die Logdatei den richtigen Benutzer haben. Beim ersten Mal einfach die beiden Dateien /var/log/fetchmail und /var/log/fetchmail.offset (logtail!) anlegen und Besitzer und Rechte anpassen, später stellt logrotate sicher, dass es so bleibt:

Die Datei /etc/logrotate.d/fetchmail:


/var/log/fetchmail.log {
rotate 7
daily
compress
missingok
notifempty
create 640 fetchmail adm
}


Monolog beendet ;)
L00NIX

Mad Elk
06.11.13, 09:08
Hi,

blöde Frage...wo finde ich dieses postconnect-Skript? Welche Rechte muss ich für die beiden Dateien setzen? Normale Userrechte?

thx

L00NIX
09.11.13, 07:50
Hi,

blöde Frage...wo finde ich dieses postconnect-Skript? Welche Rechte muss ich für die beiden Dateien setzen? Normale Userrechte?

thx

Das ist im zweiten blauen Kasten des oberen Postings. Es hat sich inzwischen ein Schalter von mailx geändert (-E statt -e).

Einfach den folgenden Inhalt in eine neue Textdatei kopieren:


#!/bin/bash

bin_grep=/bin/grep
bin_logtail=/usr/sbin/logtail
bin_mail=/usr/bin/mailx

log_mail=/var/log/fetchmail.log


# ----------------------------------------------------------------------
# main
# ----------------------------------------------------------------------

${bin_logtail} ${log_mail} |\
${bin_grep} -B1 'fingerprints do not match' |\
${bin_mail} -E -s 'fetchmail: fingerprint do not match, evtl. wurde das Zertifikat mal wieder gewechselt' postmaster


Es muss mailx installiert sein und die Pfade der drei bin_prgs sind ggf. anders. Wo sie liegen, kannst du mit


# which logtail
/usr/sbin/logtail

# which grep
/bin/grep

# which mailx
/usr/bin/mailx

rausbekommen und dann anpassen.

Die Textdatei als "check_fingerprint_not_match" speichern und nach /usr/local/bin verschieben, ausführbar machen:


# chmod 755 /usr/local/bin/check_fingerprint_not_match

und fertig.

Die Benutzerrechte der Logdatei /var/log/fetchmail.log müssen passen, so dass die Datei gelesen werden kann. Da das Skript unter dem Benutzer (nicht root) ausgeführt wird, der die Datei anlegt, sollte das aber kein Problem sein.

Das blaue "postmaster" ist die E-Mailadresse des Empfängers der E-Mail.

Gruß
L00NIX

Mad Elk
26.07.14, 17:43
Frage hat sich erledigt.

Mad Elk
27.07.14, 08:56
Habe unte http://www.gtkdb.de/index_36_2331.html ein Skript gefunden, welches auf Anhieb funktioniert.