summaryrefslogtreecommitdiff
path: root/localshowmaildelivered
blob: 2b4f992edb774be4d089ce2fbddafd71cefee5cf (plain)
  1. #!/bin/sh
  2. #
  3. # /usr/local/sbin/localshowmaildelivered
  4. # Copyright 2007 Jonas Smedegaard <dr@jones.dk>
  5. #
  6. # $Id: localshowmaildelivered,v 1.6 2007-10-04 00:38:03 jonas Exp $
  7. #
  8. # List recently delivered emails
  9. #
  10. input="${input:-user}"
  11. output="${output:-shortline}"
  12. logfilecount="${logfilecount:-1}"
  13. pattern="${pattern:-user_dovecot}"
  14. mailname="$(cat /etc/mailname | head -n 1)"
  15. sed_longline='s/^\(.\{15\}\) [^:]*: /\1 /'
  16. sed_time='s/^\(.\{15\}\) .*$/\1 /'
  17. case $pattern in
  18. user_dovecot)
  19. # Dovecot "deliver"
  20. egrep_before='deliver\(('
  21. egrep_after=')\).*saved mail to '
  22. sed_shortline='s/^\(.\{15\}\) [^)]*): msgid=/\1 (/;s/: saved mail to/)/;s/ INBOX$//'
  23. sed_msgid='s/^[^)]*): msgid=//;s/: .*$//'
  24. ;;
  25. user_procmail)
  26. # Postfix/local via procmail
  27. egrep_before=' postfix/local.*: to=<'
  28. egrep_after='@'"$mailname"'>, .*status=sent \(delivered to command: procmail'
  29. sed_shortline='s/^\(.\{15\}\) [^:]*: /\1 (/;s/: .*$/)/'
  30. sed_qid='s/^[^:]*: //;s/: .*$//'
  31. ;;
  32. qid_postfix)
  33. egrep_before='[^[:xdigit:]]'
  34. egrep_after='[^[:xdigit:]]'
  35. sed_shortline="$sed_longline"
  36. sed_qid='s/^[^:]*: //;s/: .*$//'
  37. ;;
  38. *)
  39. echo >&2 "ERROR: unknwon pattern \"$pattern\""
  40. exit 1
  41. ;;
  42. esac
  43. case $output in
  44. shortline)
  45. sedstring="$sed_shortline"
  46. ;;
  47. longline)
  48. sedstring="$sed_longline"
  49. ;;
  50. msgid)
  51. sedstring="$sed_msgid"
  52. ;;
  53. qid)
  54. sedstring="$sed_qid"
  55. ;;
  56. *)
  57. echo >&2 "ERROR: unknwon output \"$output\""
  58. exit 1
  59. ;;
  60. esac
  61. localuser="$1"
  62. find /var/log -name 'mail.log*' | sort -nr -t. -k3 | tail -n "$logfilecount" | xargs zcat -f \
  63. | egrep -- "$egrep_before$localuser$egrep_after" \
  64. | sed "$sedstring"