You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

81 lines
2.2 KiB

#!/usr/bin/env bash
### CONSTANTS
SYMPA_CONF=/etc/sympa/sympa/sympa.conf
SYMPA_DOMAIN=$(grep '^domain' "$SYMPA_CONF" | cut -f2)
FORCE=true
### FUNCTIONS
function purge {
# LIB/ARCHIVE
for arc_entry in /var/lib/sympa/arc/*; do
arc_name=$(basename "$arc_entry")
if [[ $arc_name != '*' ]] && [[ $arc_name != *"@$SYMPA_DOMAIN" ]]; then
$FORCE && rm /var/lib/sympa/arc/"$arc_name" -rf
echo "archive [$arc_name] removed!"
fi
done
# LIB/BOUNCE
for bounce_entry in /var/lib/sympa/bounce/*; do
bounce_name=$(basename "$bounce_entry")
if [[ $bounce_name != '*' ]] && [[ $bounce_name != *"@$SYMPA_DOMAIN" ]]; then
$FORCE && rm /var/lib/sympa/bounce/"$bounce_name" -rf
echo "bounce [$bounce_name] removed!"
fi
done
# SPOOL/DIGEST
for digest_entry in /var/spool/sympa/digest/*; do
digest_name=$(basename "$digest_entry")
if [[ $digest_name != '*' ]] && [[ $digest_name != *"@$SYMPA_DOMAIN"* ]]; then
$FORCE && rm /var/spool/sympa/digest/"$digest_name" -rf
echo "digest [$digest_name] removed!"
fi
done
# SPOOL/VIEWMAIL/BOUNCE
for bounce_entry in /var/spool/sympa/viewmail/bounce/*; do
bounce_name=$(basename "$bounce_entry")
if [[ $bounce_name != '*' ]] && [[ $bounce_name != *"@$SYMPA_DOMAIN"* ]]; then
$FORCE && rm /var/spool/sympa/viewmail/bounce/"$bounce_name" -rf
echo "viewmail/bounce [$bounce_name] removed!"
fi
done
# SPOOL/VIEWMAIL/MOD
for mod_entry in /var/spool/sympa/viewmail/mod/*; do
mod_name=$(basename "$mod_entry")
if [[ $mod_name != '*' ]] && [[ $mod_name != *"@$SYMPA_DOMAIN"* ]]; then
$FORCE && rm /var/spool/sympa/viewmail/mod/"$mod_name" -rf
echo "viewmail/mod [$mod_name] removed!"
fi
done
# MAIL/SYMPA/ALIASES
local escaped="${SYMPA_DOMAIN//./\\.}"
local regex="-e ^## -e ^#- -e $escaped"
local to_purge=$(grep -v ${regex@E} /etc/mail/sympa/aliases)
if [[ -n $to_purge ]]; then
echo "ALIASES: useless entries"
echo '------------------------'
echo "$to_purge"
echo '------------------------'
grep ${regex@E} /etc/mail/sympa/aliases > /etc/mail/sympa/aliases
newaliases # build the `.db` version
local number_to_purge=$(echo "$to_purge" | wc -l)
echo "$number_to_purge entries removed!"
fi
}
### MAIN
set -Eeu
purge