mirror of
https://github.com/docker-mailserver/docker-mailserver.git
synced 2024-01-19 02:48:50 +00:00
2527ebfaf2
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
70 lines
2.1 KiB
Bash
Executable file
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
|