summaryrefslogtreecommitdiff
path: root/localshowmailreceived
blob: 38bf64a9d36e0f1d8282ef4e8aacd3d99adf373a (plain)
  1. #!/bin/sh
  2. #
  3. # /usr/local/sbin/localshowmailreceived
  4. # Copyright 2007-2008 Jonas Smedegaard <dr@jones.dk>
  5. #
  6. # $Id: localshowmailreceived,v 1.4 2008-02-03 20:10:45 jonas Exp $
  7. #
  8. # List recently received emails
  9. #
  10. # TODO: Handle other patterns than AMaViS
  11. #
  12. input="${input:-user}"
  13. output="${output:-shortline}"
  14. logfilecount="${logfilecount:-1}"
  15. pattern="${pattern:-user_amavis}"
  16. mailname="$(cat /etc/mailname | head -n 1)"
  17. sed_longline='s/^\(.\{15\}\) [^:]*: /\1 /'
  18. sed_time='s/^\(.\{15\}\) .*$/\1 /'
  19. case $pattern in
  20. user_amavis)
  21. # AMaViSd new
  22. egrep_before=' -> <'
  23. egrep_after='@'"$mailname"
  24. sed_shortline='s/^\(.\{15\}\) [^)]*) \([^,]*\), [^]]*] \([^ ]*\) -> .*Message-ID: \([^>,]*>\?\).*/\1 \3 (\4) \2/'
  25. sed_msgid='s/^.*Message-ID: //;s/: .*$//'
  26. ;;
  27. *)
  28. echo >&2 "ERROR: unknwon pattern \"$pattern\""
  29. exit 1
  30. ;;
  31. esac
  32. case $output in
  33. shortline)
  34. sedstring="$sed_shortline"
  35. ;;
  36. longline)
  37. sedstring="$sed_longline"
  38. ;;
  39. msgid)
  40. sedstring="$sed_msgid"
  41. ;;
  42. *)
  43. echo >&2 "ERROR: unknwon output \"$output\""
  44. exit 1
  45. ;;
  46. esac
  47. localuser="$1"
  48. find /var/log -name 'mail.log*' | sort -nr -t. -k3 | tail -n "$logfilecount" | xargs zcat -f \
  49. | egrep -- "$egrep_before$localuser$egrep_after" \
  50. | sed "$sedstring"