Wenn man exim + SpamAssassin so konfiguriert, dass Nachrichten in einem bestimmten Schwellbereich den Status “freeze” erhalten, und damit weder rejected noch ausgeliefert werden, ist es sinnvoll, die Queue nach einer bestimmten Mail durchsuchen zu können, sofern ein Enduser eine Nachricht vermisst.
exiqgrep -z -i zeigt alle Message-IDs von “frozen” Messages. Allerdings wollen wir hier noch mehr sehen, daher das nachfolgende Skript.
mailq_frozen
#!/bin/sh
# shows current frozen mails in mailq with
# additional information
# Author: Thomas Baumann <tom@tiri.li>
EXIM=/usr/sbin/exim4
${EXIM} -bp | grep -E "frozen \*\*\*$" \
| awk '$4 != "<>" {printf "%s (%s,%s)\n",$3,$1,$2}' \
| while read MSGID QINFO
do
echo -n "$MSGID $QINFO"
echo -n " :: "
${EXIM} -Mvh $MSGID | cut -c6- \
| awk '/^(X-Spam-Score):/ {printf "%s :: ",$2}'
${EXIM} -Mvh $MSGID | cut -c6- \
| awk '/^(From|To|Subject):/ {printf "%s :: ",$0}'
${EXIM} -Mvh $MSGID \
| awk 'BEGIN {check=0} \
/(DCC_CHECK|RAZOR2_CHECK)/ {check++}
END {if (check>0) {printf "in DCC und/oder RAZOR2"} {print ""}}'
done
Es wird die “mailq” exim -bp nach dem Status “endet auf frozen ***” geprüft, aber nur, wenn das 4. Feld (Sender) keine Mailer Daemon Message ist, wird Message-ID (Zeit,Größe) ausgegeben und in die Variablen MSGID und QINFO geschrieben.
Für jede Nachricht werden dann aus den Kopfzeilen der e-Mail exim -Mvh Informationen herausgesucht und ausgegeben.
1GuSoX-0004AR-87 (2h,11K) :: 5.9 :: From: "Lala Mcilwain" <sancho@magmall.com> :: To: "Spencer Bodine" <john.doe@example.com> :: Subject: Re: folkway thermostabl :: in DCC und/oder RAZOR2