docker-mailserver/target/bin/delmailuser
youtous 2527ebfaf2
added dovecot quota feature
add postfix service quota check


check-for-changes on quotas


setquota command


fix checkforchanges quota


addquota verify user exists


add setquota in setup.sh


merging addquota into setquota


test quota commands


add ldap tests for dovecot quota


fix smtp only quota postfix rules


test postfix conf


add quota test integration


add quota exceeded test


add wait analyze


fix tests


fix setup typo


add test fixes


fix error output


wip


update startup rules


fix setup


fix setup tests


fix output commands


remove quota on remove user


try to fix sync limit mails


check if file exists


fix path


change used quota user


fix post size


check if quota file exists


update tests


configure virtualmailbox limit for dovecot


last fix


fix quota expr


relax dovecot tests


auto create dovecot-quotas


fix dovecot apply quota test


wip quota warning


trying to fix get dovadm quota


dovecot applies fix


fix quota warning lda path


test count mail on quota


fix quota warning permissiosn


fix test
2020-04-24 14:56:15 +02:00

70 lines
2.1 KiB
Bash
Executable file

#! /bin/bash
DATABASE=${DATABASE:-/tmp/docker-mailserver/postfix-accounts.cf}
ALIAS_DATABASE="/tmp/docker-mailserver/postfix-virtual.cf"
QUOTA_DATABASE="/tmp/docker-mailserver/dovecot-quotas.cf"
usage() {
echo "Usage: delmailuser <-y> <user@domain> <user2@anotherdomain> ..."
echo " -y: don't prompt for confirmations"
}
errex() {
echo -e "$@" 1>&2
exit 1
}
escape() {
echo "${1//./\\.}"
}
while getopts ":y" OPT; do
case $OPT in
y)
MAILDEL="y"
;;
\?)
usage; errex "Invalid option: -$OPTARG"
;;
esac
done
shift $((OPTIND-1))
[ -z "$@" ] && { usage; errex "No user specifed"; }
[ -s "$DATABASE" ] || exit 0
# Protect config file with lock to avoid race conditions
(
flock -e 200
for USER in "$@"; do
# very simple plausibility check
[[ "$USER" != *"@"*"."* ]] && errex "No valid address: $USER"
MAILARR=(${USER//@/ })
# XXX $USER must not contain /s and other syntactic characters
USER=$(escape "$USER")
sed -i "/^"$USER"|/d" $DATABASE
[ $? != 0 ] && errex "$USER couldn't be deleted in $DATABASE. $?"
# Delete all aliases where the user is the only recipient( " $USER$" )
# Delete user only for all aliases that deliver to multiple recipients ( ",$USER" "$USER," )
sed -i -e "/ "$USER"$/d" \
-e "s/,"$USER"//g" \
-e "s/"$USER",//g" $ALIAS_DATABASE
[ $? = 0 ] && echo "$USER and potential aliases deleted." || errex "Aliases for $USER couldn't be deleted in $ALIAS_DATABASE. $?"
# remove quota directives
if [ -f "$QUOTA_DATABASE" ]; then
sed -i -e "/^$USER:.*$/d" $QUOTA_DATABASE || errex "Quota for $USER couldn't be deleted in $QUOTA_DATABASE. $?"
fi
if [ "$MAILDEL" != "y" ]; then
read -p "Do you want to delete the mailbox as well(all mails will be removed)?(y/n) " MAILDEL
echo
fi
[ "$MAILDEL" != "y" ] && errex "Leaving the mailbox untouched. If you want to delete it at a later point use \"sudo docker exec mail rm -R /var/mail/${MAILARR[1]}/${MAILARR[0]}\""
rm -r -f /var/mail/${MAILARR[1]}/${MAILARR[0]}
[ $? = 0 ] && echo "Mailbox deleted." || errex "Mailbox couldn't be deleted: $?"
done
) 200<$DATABASE