#!/bin/bash
# fetchmail.sh - Andreas Rehm ITsolution²
# Stand 0.2
#
# Diese Script muss mit einer bash / cygwin oder auf einem Unix Rechner gestartet werden
# Es wird automatisch pro Tag ein Logfile angelegt
# Es wird nur einmal fetchmail gestartet, wenn es bereits läuft wird abgebrochen
# Archivierung alter Logfiles nach 7 Tagen mit bzip2 und automatische Löschung nach einem Jahr
#
# Bitte beachten: Sie brauchen fetchmail und bzip2
#
# Geplant für die nächste Version:
#
##############################################################################
# History
# V0.1 - Erste Version
# V0.2 - Fehlerbereinigung Löschen alter Logdateien
#
##############################################################################
# Start Skript unter Windows
# @echo off
# C:
# chdir C:\cygwin\bin
# bash --login -i /fetchmail.sh
# exit

# Abbruch, wenn fetchmail noch läuft
ps -a | grep fetchmail && exit;

# Start
echo "Starte E-Mail Abholung"

# Neue Logdatei ja / nein
NEWLOGFILE=0

# Log-Datei erstellen - LOGDATE ist das aktuelle Datum
LOGDATE=`date +'%Y-%m-%d'`
# Logdir ist der Ordner mit den Logdateien - dieser wird ggf. erstellt
LOGDIR='/log'
# Logfile ist die Logdatei, die sich aus den vorhergehenden Daten zusammensetzt
LOGFILE="${LOGDIR}/${LOGDATE}-fetchmail.log"

# Logdir erstellen wenn nötig
if [ ! -d ${LOGDIR} ]
then
	echo "Erstelle Logdir = ${LOGDIR}"
	mkdir -p ${LOGDIR}
fi

# Logfile anlegen, da sonst fetchmail kein Log schreibt
if [ ! -f ${LOGFILE} ]
then
	echo "Logdatei ${LOGFILE} erstellen..."
	touch ${LOGFILE}
	NEWLOGFILE=1
fi

# Anfang protokollieren
DATE=`date +'%d.%m.%Y %H:%M:%S'`
echo "START der E-Mailabholung am ${DATE}" >> ${LOGFILE}

# E-Mail abholen
fetchmail -f /fetchmailrc -L ${LOGFILE}

# Ende protokollieren
DATEEND=`date +'%d.%m.%Y %H:%M:%S'`
echo -e "ENDE der E-Mailabholung am ${DATEEND}\n" >> ${LOGFILE}

# Logrotation wenn eine neue Datei angelegt wurde
if [ "${NEWLOGFILE}" == "1" ];
then
	# Dateien die älter als 7 Tage sind werden komprimiert
	find ${LOGDIR} -name \*.log -ctime 7 -exec bzip2 {} \;
	
	# Dateien die älter als 365 Tage sind werden gelöscht
	find ${LOGDIR} -name \*.log.bz2 -ctime 365 -exec rm {} \;
fi