From a6b58de72e1de658b0919434855fb92a7000c380 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 29 Nov 2012 14:17:57 +0100 Subject: Add new script localrmstaleaccounts. --- localrmstaleaccounts | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100755 localrmstaleaccounts diff --git a/localrmstaleaccounts b/localrmstaleaccounts new file mode 100755 index 0000000..17c0f6e --- /dev/null +++ b/localrmstaleaccounts @@ -0,0 +1,54 @@ +#!/bin/sh + +set -e + +exit1() ( + echo >&2 "ERROR: $1" + exit 1 +) + +warn() ( + echo >&2 "WARNING: $1" +) + +backupdeluser() { + set -e + u="$1"; shift + p=/var/backups/users-dropped/ + getent passwd "$u" > "$p/$u.getent" + getent group "$u" >> "$p/$u.getent" + deluser --remove-home --backup --backup-to "$p" "$u" +} + +maybestaleuser() { + warn "Skipping possibly non-stale account for user $user" +} + +untouchedinbox() { + set -e + h="$1"; shift + [ -d "$home/Maildir" ] + find "$home/Maildir/new" -maxdepth 0 -type d -mtime +365 | grep -q . + find "$home/Maildir/cur" -maxdepth 0 -type d -mtime +365 | grep -q . +} + +untouchednewmail() { + set -e + h="$1"; shift + [ -d "$home/Maildir" ] + find "$home/Maildir/new" -type f -mtime +365 | grep -q +} + +for user in $@; do + home=$(getent passwd "$user" | cut -d: -f6) + [ -n "$home" ] || exit1 "Failed resolving homedir for user $user" + if [ -e "$home/.forward" ]; then + maybestaleuser "$user" + continue + fi + if untouchedinbox "$home" || untouchednewmail "$home"; then + backupdeluser "$user" + continue + fi + maybestaleuser "$user" +done -- cgit v1.2.3