summaryrefslogtreecommitdiff
path: root/localrmstaleaccounts
blob: 17c0f6e0469fc21835472dadb616c5985447b853 (plain)
  1. #!/bin/sh
  2. set -e
  3. exit1() (
  4. echo >&2 "ERROR: $1"
  5. exit 1
  6. )
  7. warn() (
  8. echo >&2 "WARNING: $1"
  9. )
  10. backupdeluser() {
  11. set -e
  12. u="$1"; shift
  13. p=/var/backups/users-dropped/
  14. getent passwd "$u" > "$p/$u.getent"
  15. getent group "$u" >> "$p/$u.getent"
  16. deluser --remove-home --backup --backup-to "$p" "$u"
  17. }
  18. maybestaleuser() {
  19. warn "Skipping possibly non-stale account for user $user"
  20. }
  21. untouchedinbox() {
  22. set -e
  23. h="$1"; shift
  24. [ -d "$home/Maildir" ]
  25. find "$home/Maildir/new" -maxdepth 0 -type d -mtime +365 | grep -q .
  26. find "$home/Maildir/cur" -maxdepth 0 -type d -mtime +365 | grep -q .
  27. }
  28. untouchednewmail() {
  29. set -e
  30. h="$1"; shift
  31. [ -d "$home/Maildir" ]
  32. find "$home/Maildir/new" -type f -mtime +365 | grep -q
  33. }
  34. for user in $@; do
  35. home=$(getent passwd "$user" | cut -d: -f6)
  36. [ -n "$home" ] || exit1 "Failed resolving homedir for user $user"
  37. if [ -e "$home/.forward" ]; then
  38. maybestaleuser "$user"
  39. continue
  40. fi
  41. if untouchedinbox "$home" || untouchednewmail "$home"; then
  42. backupdeluser "$user"
  43. continue
  44. fi
  45. maybestaleuser "$user"
  46. done