Can't pipe exim queue length to email when run via cron

DigitalEssence

Well-Known Member
May 21, 2014
50
5
58
cPanel Access Level
Root Administrator
Hi,

looking for some advice please.

I'd like to set up a cron job to monitor the length of the exim queue and email me if it gets over X number of emails.

At present I'm just running a simple test to email me the queue length. I've followed the instructions in this post: Exim queue size - auto-mail to myself but I can't get the queue length to show in the email when run as a cron.

I have a file: /home/username/crons/mailqueue.sh

which contains:

#!/bin/sh
/usr/sbin/exim -bpc | mail -s 'Exim queue size' [email protected]


This works if I run it from the command line with ./mailqueue.sh and I receive an email with the current number of emails in the queue.

When I try and run it from a cron using:

sh /home/digital1/crons/mailqueue.sh

I get a blank email.

/var/log/cron isn't helping as I just see the cron run.

The thread above suggests a pathing issue and to use the full path to exim which I have but still no luck. I'm hoping it's something really simple I'm, missing.

Thanks for your help.

Hedley
 
Last edited:

twhiting9275

Well-Known Member
Sep 26, 2002
560
28
178
cPanel Access Level
Root Administrator
Twitter
While not a pipe, this will do the same thing, and won't spam the hell out of you. Configure it to notify you only if your mail queue is higher than a magic number!

Code:
#!/bin/bash
DATE=`date +%F`
#DATE=date`%Y-%m-%d`
SUBJ="$HOSTNAME email queue report"
#your email address
MYEMAIL="youremailhere"
#change this to the magic # to alert you after
emailtoomany=10
mailfile="/tmp/mailcheck.txt"
mailtest="/tmp/mailtest.txt"
qnum=$(exim -bpc)
if [ $qnum -gt $emailtoomany]
then

rm -rf $mailfile
echo "Mail queue problem
Queue is $qnum" >> $mailfile
mailx -s "$SUBJ" $MYEMAIL < $mailfile
rm -rf $mailfile
fi