#!/bin/sh # # /usr/local/sbin/localshowmaildelivered # Copyright 2007 Jonas Smedegaard # # $Id: localshowmaildelivered,v 1.6 2007-10-04 00:38:03 jonas Exp $ # # List recently delivered emails # input="${input:-user}" output="${output:-shortline}" logfilecount="${logfilecount:-1}" pattern="${pattern:-user_dovecot}" mailname="$(cat /etc/mailname | head -n 1)" 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_shortline='s/^\(.\{15\}\) [^)]*): msgid=/\1 (/;s/: saved mail to/)/;s/ INBOX$//' sed_msgid='s/^[^)]*): msgid=//;s/: .*$//' ;; user_procmail) # Postfix/local via procmail egrep_before=' postfix/local.*: to=<' egrep_after='@'"$mailname"'>, .*status=sent \(delivered to command: procmail' 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 output \"$output\"" exit 1 ;; esac localuser="$1" find /var/log -name 'mail.log*' | sort -nr -t. -k3 | tail -n "$logfilecount" | xargs zcat -f \ | egrep -- "$egrep_before$localuser$egrep_after" \ | sed "$sedstring"