Postfix: E-Mails zu einer bestimmten E-Mail Adresse aus der Mail-Queue anzeigen und löschen
2022-03-22 00:00:00
IN1
,
2023-04-14 14:45:35
IN1
Folgendes Script zeigt Einträge in der Mail-Queue von Postfix zu einer angegebenen E-Mail Adresse. Es kann wahlweise nach Sender und Empfänger unterschieden werden. Wird der Parameter "del" mitgegeben, werden entsprechende Einträge aus der Mail-Queue gelöscht.
Usage
# zeigt alle Einträge in der Mail-Queue wo Sender = E-Mail Adresse
./mailqSelect.sh foo@example.com sender
# zeigt alle Einträge in der Mail-Queue wo Empfänger = E-Mail Adresse
./mailqSelect.sh foo@example.com recipient
# löscht alle Einträge in der Mail-Queue wo Sender = E-Mail Adresse
./mailqSelect.sh foo@example.com sender del
# löscht alle Einträge in der Mail-Queue wo Empfänger = E-Mail Adresse
./mailqSelect.sh foo@example.com recipient del
Script mailqSelect.sh
#!/bin/bash
#----------
# usage
# ./mailqSelect.sh foo@example.com sender
# ./mailqSelect.sh foo@example.com recipient
# ./mailqSelect.sh foo@example.com sender del
# ./mailqSelect.sh foo@example.com recipient del
# @see https://blog.ueffing.net/post/2022/03/22/postfix-e-mails-zu-einer-bestimmten-e-mail-adresse-aus-der-mail-queue-anzeigen-und-loeschen/
clear;
echo -e "\nInfo:\nadd 'del' as 3rd parameter if you want to delete matching entries.\n";
sEmailAddress=${1?' please add an email address as 1st parameter.'};
sType=${2?' please add type ("sender" | "recipient") as 2nd parameter.'};
sMode=$3;
echo -e "\nGiven:\nemail:\t$sEmailAddress\ntype:\t$sType\nmode:\t$sMode\n";
# sender
if [ "$sType" == "sender" ]
then
aList=(`mailq | tail -n +2 | head -n -2 | grep -v '^ *(' | awk -v var=$sEmailAddress 'BEGIN { RS = "" } { if ($7 ~ var) print $1 }' | tr -d '*!'`);
for sId in "${aList[@]}"
do
echo "$sId";
if [ "$sMode" == "del" ]
then
echo "$sId" | postsuper -d;
fi;
done
# recipient
elif [ "$sType" == "recipient" ]
then
aList=(`mailq | tail -n +2 | head -n -2 | grep -v '^ *(' | awk -v var=$sEmailAddress 'BEGIN { RS = "" } { if ($8 ~ var) print $1 }' | tr -d '*!'`);
for sId in "${aList[@]}"
do
echo "$sId";
if [ "$sMode" == "del" ]
then
echo "$sId" | postsuper -d;
fi;
done
fi;
Warnung: Benutzung und Anwendung selbstverständlich auf eigenes Risiko.