Hi there,
when using the standard quota script (quota.rc.master) I'm getting in my logs:
Code:
Command output: ==================== QUOTA: 10000000000 INBOXSIZE: web8_admin Bouncing (inbox already full!) )
Suffice to say, no mails are delivered like that.
I guess INBOXSIZE should be a number and not the username. So I believe something is wrongly parsed there.
I'm not that fluent in procmail language so if someone could maybe comment the quota.rc.master file?
Anyway I'm posting my quota.rc which I have always used and which is working fine (for me).
Code:
#!/bin/bash
QUOTA=10000000000 #10GB
GROUP_QUOTA_ENABLED=0
quota -wg | grep -q ": none" || GROUP_QUOTA_ENABLED=1
if [ $GROUP_QUOTA_ENABLED -eq 1 ]; then
FS_GROUP_QUOTA=`quota -wg | tail -1 | awk '{print $3}'`*1024
FS_GROUP_QUOTA=$(($FS_GROUP_QUOTA))
FS_GROUP_QUOTA_USED=`quota -wg | tail -1 | awk '{print $2}' | sed -n 's/
^\([0-9]*\).*$/\1/g p'`*1024
FS_GROUP_QUOTA_USED=$(($FS_GROUP_QUOTA_USED))
FS_GROUP_QUOTA_FREE=$(($FS_GROUP_QUOTA-$FS_GROUP_QUOTA_USED))
else
FS_GROUP_QUOTA=0
fi
USER_QUOTA_ENABLED=0
quota -wu | grep -q ": none" || USER_QUOTA_ENABLED=1
if [ $USER_QUOTA_ENABLED -eq 1 ]; then
FS_USER_QUOTA=`quota -wu | tail -1 | awk '{print $3}'`*1024
FS_USER_QUOTA=$(($FS_USER_QUOTA))
FS_USER_QUOTA_USED=`quota -wu | tail -1 | awk '{print $2}' | sed -n 's/^
\([0-9]*\).*$/\1/g p'`*1024
FS_USER_QUOTA_USED=$(($FS_USER_QUOTA_USED))
FS_USER_QUOTA_FREE=$(($FS_USER_QUOTA-$FS_USER_QUOTA_USED))
else
FS_USER_QUOTA=0
fi
if [ $FS_USER_QUOTA == 0 ]; then
if [ $FS_GROUP_QUOTA != 0 ]; then
# we have unlimtied user filesystem quota but the group is limited
if [ $FS_GROUP_QUOTA_FREE -lt $QUOTA ]; then
QUOTA=$FS_GROUP_QUOTA_FREE
else
QUOTA=$QUOTA
fi
else
# unlimited user and group quota
QUOTA=$QUOTA
fi
else
# both quotas are enabled
# the minimum of user and group quotas counts
if [ $FS_GROUP_QUOTA != 0 ]; then
if [ $FS_USER_QUOTA_FREE -lt $FS_GROUP_QUOTA_FREE ]; then
QUOTA=$FS_USER_QUOTA_FREE
else
QUOTA=$FS_GROUP_QUOTA_FREE
fi
# user quota is enabled and group quota is disabled
else
if [ $FS_USER_QUOTA_FREE -gt 0 ]; then
QUOTA=$FS_USER_QUOTA_FREE
else
QUOTA=0
fi
fi
fi
echo $QUOTA
EDIT Actually, I am calling the above code from quota.rc like so:
Code:
# quota.rc by Stuart Clark/Falko Timme
#
# If mailbox size exceeds QUOTA, send reply email
# using $PMDIR/bounce-exceed-quota.txt
##
# If incoming message size exceeds available storage
# space (user/group filesystem quota) then
# send reply email using bounce-exceed-quota.txt
#
#LOGFILE="/tmp/procmail.quota.$LOGNAME.log"
#VERBOSE=YES
DROPPRIVS=YES
## using repquota will not work because normal users must not use it
PATH="/usr/bin:$PATH:/usr/local/bin"
SHELL=/bin/sh
EMAIL=`formail -zxTo:`
QUOTA=`iipmailquotacheck.sh`
:0
* > ${QUOTA}
{
LOG="*** The disk space of this user or domain has been exceeded. Please
try again at a later time. ***"
EXITCODE=69
HOST
}
#end
Recent comments
1 day 9 hours ago
1 day 12 hours ago
1 day 13 hours ago
1 day 14 hours ago
1 day 16 hours ago
1 day 17 hours ago
1 day 19 hours ago
2 days 11 hours ago
2 days 11 hours ago
2 days 15 hours ago