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.
82 lines
2.2 KiB
82 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.new
|
|
mv /etc/mail/sympa/aliases.new /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
|