/usr/local/sbin
#!/bin/bash # mail-audit.sh — per-mailbox size, age, and archival reclaim estimate # usage: mail-audit.sh /home/<cpuser>/mail/<domain> set -euo pipefail BASE="${1:-/home/landmarkadvocate/mail/landmarkadvocates.com}" [[ -d "$BASE" ]] || { echo "not a dir: $BASE"; exit 1; } printf '%-20s %8s %8s %12s %10s %10s\n' \ "USER" "SIZE" "FILES" "OLDEST" ">3Y" ">5Y" printf '%-20s %8s %8s %12s %10s %10s\n' \ "--------------------" "--------" "--------" "------------" "----------" "----------" T_BYTES=0; T_FILES=0; T_3Y=0; T_5Y=0 while IFS= read -r d; do user=$(basename "$d") bytes=$(find "$d" -type f -printf '%s\n' 2>/dev/null | awk '{s+=$1} END {print s+0}') files=$(find "$d" -type f 2>/dev/null | wc -l) oldest=$(find "$d" -type f -printf '%TY-%Tm-%Td\n' 2>/dev/null | sort | head -1) b3y=$(find "$d" -type f -mtime +1095 -printf '%s\n' 2>/dev/null | awk '{s+=$1} END {print s+0}') b5y=$(find "$d" -type f -mtime +1825 -printf '%s\n' 2>/dev/null | awk '{s+=$1} END {print s+0}') T_BYTES=$((T_BYTES+bytes)); T_FILES=$((T_FILES+files)) T_3Y=$((T_3Y+b3y)); T_5Y=$((T_5Y+b5y)) printf '%012d|%-20s %8s %8d %12s %10s %10s\n' \ "$bytes" \ "$user" \ "$(numfmt --to=iec --suffix=B $bytes)" \ "$files" \ "${oldest:--}" \ "$(numfmt --to=iec --suffix=B $b3y)" \ "$(numfmt --to=iec --suffix=B $b5y)" done < <(find "$BASE" -mindepth 1 -maxdepth 1 -type d) \ | sort -t'|' -k1 -rn | cut -d'|' -f2- printf '%-20s %8s %8s %12s %10s %10s\n' \ "--------------------" "--------" "--------" "------------" "----------" "----------" printf '%-20s %8s %8d %12s %10s %10s\n' \ "TOTAL" \ "$(numfmt --to=iec --suffix=B $T_BYTES)" \ "$T_FILES" "" \ "$(numfmt --to=iec --suffix=B $T_3Y)" \ "$(numfmt --to=iec --suffix=B $T_5Y)"
.
Edit
..
Edit
mail-audit.sh
Edit
reseller-audit.sh
Edit