Mammals / Ola Anderson

Detta är bloggen för min enskilda firma Mammals. Den innehåller sådant jag är intresserad av eller vill berätta om.
Teckensnitts storlek: +

Postfix – hur man tar bort tusentals mail i mailkön från spammers baserat på epostadresser

MailBox 256I denna artikel förklarar jag hur man kan skapa ett nytt kommando i Mac OS X Server som kan radera mail ur mailkön i den inbyggda mailservern, Postfix baserat på epostadress i To- eller From-fältet.

Min server har varit lite seg och det beror på att något pucko har skickat hundratusentals mail till min mailserver som sedan hamnat i mailkön. Eftersom det är så många så hinner inte servern skicka iväg eller avliva dem så den lägger dem i kön istället, som bara växer då mailservern försöker igen och igen. Då detta blev ett problem så kunde inte program som tex Server Admin fungera, det var för mycket mail i kön att hantera.

Alltså uppstår behovet av att kunna radera tusentals mail utan att radera viktiga mail som ligger bland dem. Om jag bara ville slänga allting, så finns det kommandon för det, men jag vill ha kvar riktiga mail och slänga spam.

Googlade runt i flera timmar och provade några lösningar, däribland ett Perlscript som inte fungerade ett sedan ett till som faktiskt fungerade!

Remove mail from postfix queue based on from email or rcpto email address

I korthet

Detta är nytt för mig men i korthet så laddar man hem scriptet som är en liten textsnutt. Man kollar att sökvägarna namnen i det är korrekt, sparar det i en bra mapp med rätt namn pddel. Namnet på filen blir kommandots namn. Byt rättigheter på det så att det blir exekverbart/körbart som programkod. Det gör man i terminalen. Sedan när det är körbart, placera sig i mappen, kör kommandot och ge det en parameter, den epostadress i Till eller Från du vill radera ur kön.

Mera i detalj gör man så här:

1. Skapa en ny textfil som heter "pfdel".

Den måste heta så för det namnet anges inuti scriptet. Ingen filändelse.

2. Fyll den textfilen med det här:

#!/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/sbin/postqueue -p";
my $POSTSUPER = "/usr/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 " .
"found in queue.\n";
}
exit 0;

 3. Kontrollera att de sökvägarna som står i börjans om inleds med /etc/sbin/ faktiskt stämmer för din server.

På min Mac OS X Server så stämmer sökvägarna ovan.

4. Spara filen där det passar, tex i din användares mapp

5. Byt rättigheter på filen med kommandot

Kicka igång terminalen och kör detta kommando. Där det står pfdel skall det alltså stå en hel sökväg och lättaste sättet att få fram den är att skriva chmod 755 och sedan dra och släppa filen på terminalfönstret.

 

# chmod 755 pfdel

Det betyder att filen blir exekverbar.

6. Leta rätt på spammers i mailkön

Nästa steg är för att du skall kolla hur din mailkö ser ut så du kan hitta adresser som är knas. Men då måste du stå i rätt mapp när du kör dessa kommandon. Lättaste sättet att göra det är att ha två terminalfönster, ett för mailmankommandon och ett för pfdel-kommandot.

Starta ett nytt terminalfönster och kör dessa kommandon, det gör dig till superuser och placerar dig i rätt mapp (för Mac OS X Server i alla fall).

Bli Super User (root):

# sudo su

Här finns bin-mappen med alla kommandon i (du måste stå här för att köra kommandon):

# cd /usr/share/mailman

Följande kommando kommer att om din mailkö är jättestor att hålla på i evigheter. Bra att veta är att man kan stoppa ett sådant kommando med CTRL+Z (eller om det är X, minns aldrig).

# mailq

Det kommer forsa fram en massa till och från adresser, avbryt med CTRL+Z.

7. Börja radera mail i mailkön med ditt nya kommando.

Det kommer forsa fram en massa till och från adresser. Om du hittar en och samma som skickar en massa mail, tex _www eller Den här e-postadressen skyddas mot spambots. Du måste tillåta JavaScript för att se den. som det var i mitt fall, så kan du nu byta till det andra terminalfönstret och köra detta kommando, observera att du måste stå i rätt mapp som du navigerar till med cd-kommandot. Sedan måste du skriva ./ före filens/kommandots namn.

# ./pfdel _www

Kommandot kommer nu att radera alla mail den hittar, ett i taget och skriver ut det.

Det raderar mail både från och till, så se upp med detta. Det kan även ta lång tid, flera timmar.

När det är klart, kör kommandot mailq i det andra terminalfönstret och hitta flera syndare, gå tillbaka till detta och radera.

# ./pfdel Den här e-postadressen skyddas mot spambots. Du måste tillåta JavaScript för att se den.

När det är klart, eller mailq ger en tillräckligt liten mängd av köade mail, kan du kanske återgå till Server Admin och radera mailen därigenom. Mail > Maintenence > Mail Que.

Hur får man fram antalet mail i mailkön då?

Kan du tänka dig att det finns faktiskt inget kommando för det! Helt idiotiskt. Vad folk har gjort är att ungefär på samma sätt som ovan, skapa kommandon just för Postfix som ger resultatet. Det blir en annan artikel kanske.

 

Hur man skapar bokljus - "booklight", "wedgelight"
Hur man ökar säkerheten i en Joomlasite genom att ...

Related Posts

 

Kommentarer

Kommentarer saknas