Jeigu Jūsų serveryje buvo vykdomas masinis laiškų siuntimas, Jums turėtų būti aktualus laiškų eilės išvalymas po siuntimo sustabdymo. O galbūt norite ištrinti konkretų gavėją iš eilės tam, kad laiškas nebebūtų siunčiamas? Šiems veiksmams atlikti pateikiame populiariausių pašto tarnybų laiškų eilės atvaizdavimo bei trynimo komandas.
Sendmail
Tam, kad galėtumėte matyti siunčiamų laiškų eilę Sendmail tarnyboje, visų pirma turite sukurti eilės atvaizdavimo failą. Tai atliekama įvykdžius vieną iš komandų:
# mailq# sendmail -bp
Jums bus pateikiamas atsakymas:
/var/spool/mqueue (1 request)
-----Q-ID----- --Size-- -----Q-Time----- ------------Sender/Recipient-----------
p61J75u5037681 893 Fri Jul 1 14:07 8BITMIME (Deferred: Connection timed out with example.com.)
Total requests: 1
Tada galėsite nueiti į failą /var/spool/mqueue ir ištrinti visus failus:
# cd /var/spool/mqueue# ls# rm *
qtool.pl įrankis
Kadangi SendMail nesuteikia galimybės tiesiogiai pašalinti laiškų iš eilės, galite naudoti qtool.pl skriptą patalpintą Sendmail kodo direktorijoje. Visų pirma atsidarykite laiškų eilę:
Gausite atsakymą, kaip pavyzdžiui:
/var/spool/mqueue (1 request)
-----Q-ID----- --Size-- -----Q-Time----- ------------Sender/Recipient-----------
p61J75u5037681 893 Fri Jul 1 14:07
8BITMIME (Deferred: Connection timed out with example.com.)
Total requests: 1
Nusikopijuokite Q-ID reikšmę, šiuo atveju p61J75u5037681, ir paleiskite qtool.pl:
# ./qtool.pl -C /etc/mail/sendmail.cf -d /var/spool/mqueue/p61J75u5037681
Šiame kode:
- -C /etc/mail/sendmail.cf - nurodomas Sendmail konfigūracijos failas.
- -d /var/spool/mqueue/p61J75u5037681 - ištrinama žinutė pagal jos konkretų ID numerį. Šiuo atveju pagal Q-ID.
Tam, kad galėtumėte ištrinti visus laiškus pagal siuntėjo domeno pavadinimą, visų pirma turite nustatyti QID numerį, kuris gali būti naudojami pagal grupę arba rankiniu būdu:
arba:
# QIDS="$(mailq | grep -B1 'domenas.lt' | grep '^[a-z]' | awk '{print $1}' | sed 's/\*$//')"
Naudokite bash'ą pasikartojančiam visų laiškų trinimui iš konkretaus domeno:
for q in $QIDS
do
/usr/local/bin/qtool.pl -C /etc/mail/sendmail.cf -d /var/spool/mqueue/$q
done
PostFix
Norėdami matyti siunčiamų laiškų eilę PostFix tarnyboje, turite naudoti komandą:
Norint išvalyti visą laiškų eilę, įvykdykite komandą:
Norint išvalyti sustabdytus laiškus, įvykdykite šią komandą:
# postsuper -d ALL deferred
Konkretaus laiško pašalinimui iš eilės turite visų pirmą sužinoti jo ID. Tai galite atlikti naudojantis komanda:
# postqueue -p | grep "pastas@domenas.lt"
Jums bus pateikiamas atsakymas, kaip pavyzdžiui:
# 056CB129FF0 5513 Sun Feb 26 02:26:27 pastas@domenas.lt
Dabar galite ištrinti šį laišką iš eilės su šia komanda:
# postsuper -d 056CB129FF0
EXIM
Laiškų eilės pateikimui naudokite šią komandą:
Konkretaus laiško trinimui galite naudoti šią komandą:
Visų laiškų išvalymui iš eilės naudokite komandą:
# exim -bp | awk '/^ *[0-9]+[mhd]/{print "exim -Mrm " $3}' | bash
arba:
# exim -bp | exiqgrep -i | xargs exim -Mrm