【发布时间】:2014-05-03 19:02:56
【问题描述】:
希望对此提供一些建议或指导。我对这些东西的大部分都不是很熟悉,但已经设法导航、测试和检查以达到这一点。一次解决一个错误!
运行 Plesk 11.0.9 我正在尝试设置一个简单的 Cron 作业,运行一个 shell 脚本来检测接近满的邮箱,以便通知我或用户并解决问题。
假设这将检查所有邮箱,以 root 用户身份运行脚本。
该脚本来自 Plesk 论坛(最后一篇帖子 http://forum.parallels.com/showthread.php?106635-Qmail-e-mail-quota-notification-script-for-Plesk-9-3-10),许多用户似乎已经成功,但是在运行作业时我收到此错误
/usr/local/psa/bin/mboxfull.sh:第 26 行:bc:找不到命令
/usr/local/psa/bin/mboxfull.sh:第 32 行:bc:找不到命令
这似乎是一个非常笼统的“所写内容行不通”错误,因此我的搜索并没有为我提供有关如何纠正此问题的太多指导。
下面的完整脚本标有“违规”行。非常感谢任何方向的帮助!
#! /bin/bash
# Mail quota reaching it's limit e-mail notification
# script for Plesk 9.3+ / Plesk 10 & Qmail
# Modified by "Scy" from the original script
# provided by "azur99" in Plesk forum:
# http://forum.parallels.com/showthread.php?t=71666
#setenv QMAILUSER 'do-not-reply'
MAILROOT=/var/qmail/mailnames
cd $MAILROOT > /dev/null
for DIR in *.*;do
cd $MAILROOT/$DIR
for MAILBOX in * ;do
if [ -d $MAILBOX ]
then
# look for specific mailbox quota file and set mailbox softquota
QUOTAFILE=$MAILROOT/$DIR/$MAILBOX/Maildir/maildirsize
# Fetching mailbox quota size in bytes
HARDQUOTA=$((`head -1 $QUOTAFILE | cut -d S -f1`))
if [ "$HARDQUOTA" -eq 0 ]; then
continue
fi
# Fetching space used by mailbox in bytes
(THIS IS LINE 26!) MBOXSPACE=$((`tail -n +2 $QUOTAFILE | cut -c1-12 | paste -sd+|bc`))
# Calculate the quota limit required for mail warning (85% for default)
SOFTQUOTA=$((10 * $HARDQUOTA / 100))
# Calculate mailbox usage percentage (with two decimals)
(THIS IS LINE 32) MBOXPERCENT=$(echo "scale=2; $MBOXSPACE*100/$HARDQUOTA" | bc)
# Check if the mailbox is full enough for warning, and if, send the warning mail
if [ $HARDQUOTA -gt 0 -a $MBOXSPACE -gt $SOFTQUOTA ]; then
# Let's generate the values in megabytes (with two decimals)
HARDQUOTA=$(echo "scale=2; $HARDQUOTA/1048576" | bc)
if [ "$(echo $HARDQUOTA | cut -c1)" = "." ] ; then HARDQUOTA="0"$HARDQUOTA
fi
MBOXSPACE=$(echo "scale=2; $MBOXSPACE/1048576" | bc)
if [ "$(echo $MBOXSPACE | cut -c1)" = "." ] ; then MBOXSPACE="0"$MBOXSPACE
fi
/usr/sbin/sendmail -t << EOF
To: $MAILBOX@$DIR
From: ******@*******.com
Bcc: ****@******.com
Subject: Your mailbox is almost full
Dear mail user,
Your e-mail $MAILBOX@$DIR is about to reach its maximum quota. You are using $MBOXSPACE MB ($MBOXPERCENT%) out of the maximum quota $HARDQUOTA MB.
We would kindly suggest you to delete some older messages and purge them to free some space in the mailbox. If the quota limit is reached, you won't be able to receive any new messages and the sender will receive 'mail quota exceeded' notifications.
Another option is to configure your POP3 mail client (e.g. Microsoft Outlook, Mozilla Thunderbird or Apple Mail) to delete the messages on the server mailbox every time the mail account is read.
This is an automated message, do not reply. If you require any assistance, please open a support ticket at http://*******/support.php .
EOF
fi
fi
done;
done;
【问题讨论】:
标签: linux bash shell cron plesk