Search K
Appearance
Appearance
Here are some useful Exim commands. They're useful if you have an overloaded queue and need to clear it out, or find out why the messages are accumulating.
exim -M id #Try to send the message with id id
exim -qf #Tell Exim to process the entire queue again
exim -qff #same as qf, but it will flush the frozen messagesexim -Mvl id #view the message log for message id
exim -Mvh id #view message id's headers
exim -Mvb id #view message id's body
exim -Mrm id #remove message id from the queue
exim -Mg id #fail and send a bounce to the sender
exim -bp | exiqsumm #Print summary of the messages in the queue
exiwhat #show what Exim is doing right now
exim -bpc #show number of messages in the queue
exim -bp #print list of messages in the queueThe manual way to remove the entire queue is as follows
cd /var/spool
mv exim exim.old
mkdir -p exim/input
mkdir -p exim/msglog
mkdir -p exim/db
chown -R mail:mail eximThen restart Exim.
Run Exim in debug mode in the foreground to test incoming SMTP connections:
exim -bd -dIf you have many Exim processes, the first place to check is Admin Level -> Mail Queue Administration .
Check for any patterns in the sender or recipient addresses.
Check the status of some of the messages to see why they're in the queue... if there is a common problem as to why they're in your queue (bottom textarea).
You can also get Exim to create a stats page for you:
cd /var/log/exim
eximstats mainlog > stats.txt
less stats.txtCheck it to see where most of the emails are headed, either outbound or local.
If you think someone is sending email using smtp-auth through your system, but need a quick way to count up each user/IP total, you can use the following script:
#!/bin/sh
A=/tmp/auths.txt
U=/tmp/users.txt
C=/tmp/counts.txt
I=/tmp/ips.txt
echo -n '' > $A
for m in `ls /var/log/exim/mainlog*`; do
{
grep 'P=esmtpa A=login:' $m >> $A
};
done;
#show Users
cat $A | cut -d= -f5 | cut -d: -f2 |cut -d\ -f1 | sort -u > $U
echo -n '' > $C
for u in `cat $U`; do
{
echo "`grep -c $u $A` sent by $u" >> $C;
};
done;
cat $C | sort -n
#now show IPs
cat $A | cut -d= -f3 | cut -d[ -f2 | cut -d] -f1 | sort -u > $I
echo -n '' > $C
for i in `cat $I`; do
{
echo "`grep -c $i $A` sent by $i" >> $C;
};
done;
cat $C | sort -n
rm -f $A $U $C $I
exit 0;Save it to a file, chmod to 755, and run it.
Keep in mind that it will process /var/log/exim/mainlog*
If this is too slow, remove the * character so it's just /var/log/exim/mainlog, that is, if you don't need stats for that far back.
If you need to get a list of all created email accounts on your server, including domain pointers, you can use this basic script:
#!/bin/sh
for d in `cat /etc/virtual/domains`; do
{
#system account
S=`grep "^${d}:" /etc/virtual/domainowners | cut -d: -f2 | awk '{print $1;}'`
if [ "${S}" != "" ]; then
echo "${S}@${d}";
fi
if [ ! -s /etc/virtual/$d/passwd ]; then
continue;
fi
for e in `cat /etc/virtual/$d/passwd | cut -d: -f1`; do
{
echo "${e}@${d}";
};
done;
};
done;
exit 0;