From f22a021d38f50abc25a28fa3ffeca3941a1f64f2 Mon Sep 17 00:00:00 2001 From: Jonas Smedegaard Date: Thu, 4 Oct 2007 00:38:03 +0000 Subject: Add support for several different output formats and other stuff. --- localshowmaildelivered | 54 ++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 43 insertions(+), 11 deletions(-) (limited to 'localshowmaildelivered') diff --git a/localshowmaildelivered b/localshowmaildelivered index 7340196..2b4f992 100755 --- a/localshowmaildelivered +++ b/localshowmaildelivered @@ -3,37 +3,69 @@ # /usr/local/sbin/localshowmaildelivered # Copyright 2007 Jonas Smedegaard # -# $Id: localshowmaildelivered,v 1.5 2007-10-03 17:38:17 jonas Exp $ +# $Id: localshowmaildelivered,v 1.6 2007-10-04 00:38:03 jonas Exp $ # # List recently delivered emails # -logfiles="${logfiles:-1}" -hinttype="${hinttype:-dovecot}" +input="${input:-user}" +output="${output:-shortline}" +logfilecount="${logfilecount:-1}" +pattern="${pattern:-user_dovecot}" mailname="$(cat /etc/mailname | head -n 1)" -case $hinttype in - dovecot) +sed_longline='s/^\(.\{15\}\) [^:]*: /\1 /' +sed_time='s/^\(.\{15\}\) .*$/\1 /' + +case $pattern in + user_dovecot) # Dovecot "deliver" egrep_before='deliver\((' egrep_after=')\).*saved mail to ' - sed='s/^\(.\{15\}\) [^)]*): msgid=/\1 (/;s/: saved mail to/)/;s/ INBOX$//' + sed_shortline='s/^\(.\{15\}\) [^)]*): msgid=/\1 (/;s/: saved mail to/)/;s/ INBOX$//' + sed_msgid='s/^[^)]*): msgid=//;s/: .*$//' ;; - procmail) + user_procmail) # Postfix/local via procmail egrep_before=' postfix/local.*: to=<' egrep_after='@'"$mailname"'>, .*status=sent \(delivered to command: procmail' - sed='s/^\(.\{15\}\) [^:]*: /\1 (/;s/: .*$/)/' + sed_shortline='s/^\(.\{15\}\) [^:]*: /\1 (/;s/: .*$/)/' + sed_qid='s/^[^:]*: //;s/: .*$//' + ;; + qid_postfix) + egrep_before='[^[:xdigit:]]' + egrep_after='[^[:xdigit:]]' + sed_shortline="$sed_longline" + sed_qid='s/^[^:]*: //;s/: .*$//' + ;; + *) + echo >&2 "ERROR: unknwon pattern \"$pattern\"" + exit 1 + ;; +esac + +case $output in + shortline) + sedstring="$sed_shortline" + ;; + longline) + sedstring="$sed_longline" + ;; + msgid) + sedstring="$sed_msgid" + ;; + qid) + sedstring="$sed_qid" ;; *) - echo >&2 "ERROR: unknwon logtype \"$logtype\"" + echo >&2 "ERROR: unknwon output \"$output\"" exit 1 ;; esac localuser="$1" -find /var/log -name 'mail.log*' | sort -nr -t. -k3 | tail -n "$logfiles" | xargs zcat -f \ +find /var/log -name 'mail.log*' | sort -nr -t. -k3 | tail -n "$logfilecount" | xargs zcat -f \ | egrep -- "$egrep_before$localuser$egrep_after" \ - | sed "$sed" + | sed "$sedstring" -- cgit v1.2.3