Folosesc Postfix. Își face treaba bine. Se mai întâmplă însă să rămână în coadă mesaje care nu pot fi livrate din diferite motive. Dacă numărul acestor mesaje este prea mare pot apare întârzieri la livrarea celorlalte e-mail-uri.
M-am confruntat recent cu această situație și am găsit pe net un script scris în perl care șterge din coada postfix-ului unul sau mai multe mesaje.
Scritpul este:
#!/usr/bin/perl -w
#
# pfdel - deletes message containing specified address from
# Postfix queue. Matches either sender or recipient address.
#
# Usage: pfdel
#
use strict;
# Change these paths if necessary.
my $LISTQ = "/usr/local/sbin/postqueue -p";
my $POSTSUPER = "/usr/local/sbin/postsuper";
my $email_addr = "";
my $qid = "";
my $euid = $>;
if ( @ARGV != 1 ) {
die "Usage: pfdel \n";
} else {
$email_addr = $ARGV[0];
}
if ( $euid != 0 ) {
die "You must be root to delete queue files.\n";
}
open(QUEUE, "$LISTQ |") ||
die "Can't get pipe to $LISTQ: $!\n";
my $entry = ; # skip single header line
$/ = ""; # Rest of queue entries print on
# multiple lines.
while ( $entry = ) {
if ( $entry =~ / $email_addr$/m ) {
($qid) = split(/\s+/, $entry, 2);
$qid =~ s/[\*\!]//;
next unless ($qid);
#
# Execute postsuper -d with the queue id.
# postsuper provides feedback when it deletes
# messages. Let its output go through.
#
if ( system($POSTSUPER, "-d", $qid) != 0 ) {
# If postsuper has a problem, bail.
die "Error executing $POSTSUPER: error " .
"code " . ($?/256) . "\n";
}
}
}
close(QUEUE);
if (! $qid ) {
die "No messages with the address <$email_addr> " .
"found in queue.\n";
}
exit 0;
Articole asemanatoare:
- DNS – restricționare acces site-uri noroc ilegale
- ZTE ZXR 10 2609
- Certificat digital calificat de la DIGISIGN – semnătură electronică email
- Monitorizare trafic – mrtg si ipfw
- Au apărut
- Accesarea unui sistem FreeBSD situat dupa un NAT folosind vtunel
- Squid – conexiuni cu diferite adrese sursa
- Raspberry Pi 2 – OpenVPN server – Bridge
- Pe timp de criză SPAM-ul înflorește
- Linux – Config minimal pentru NAT