summaryrefslogtreecommitdiff
path: root/localshowmaildelivered
diff options
context:
space:
mode:
authorJonas Smedegaard <dr@jones.dk>2007-10-04 00:38:03 +0000
committerJonas Smedegaard <dr@jones.dk>2007-10-04 00:38:03 +0000
commitf22a021d38f50abc25a28fa3ffeca3941a1f64f2 (patch)
treebc8716b11d5a22caad942a990d663801d8d3037e /localshowmaildelivered
parent0dba35f17d796e036d8a72ec0c9addd61ee8b652 (diff)
Add support for several different output formats and other stuff.
Diffstat (limited to 'localshowmaildelivered')
-rwxr-xr-xlocalshowmaildelivered54
1 files changed, 43 insertions, 11 deletions
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 <dr@jones.dk>
#
-# $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"