2010-04-30 13 views
8

Così stamattina ho ricevuto una chiamata su un cliente che ha bisogno di vedere quale email hanno in attesa di essere recapitata nel nostro server di posta secondario. Il loro collegamento per il server principale era (ancora è) rimasto inattivo per due giorni e avevano bisogno di vedere la loro email.Esiste uno strumento migliore di Postcat per la visualizzazione dei file di coda di posta postfissa?

Così ho scritto uno script Perl rapido per usare mailq in combinazione con postcat per scaricare ogni e-mail per il loro indirizzo in file separati, l'ho tarato e inviato. Codice orribile, lo so, ma era urgente.

La mia soluzione funziona bene nel senso che almeno dà una visione cruda, ma ho pensato questa sera che sarebbe stato bello se avessi una soluzione in cui ho potuto fornire ai loro allegati e-mail e magari rimuovere alcuni "spazzatura" testo di intestazione pure. La maggior parte delle e-mail importanti sembra avere un allegato PDF o simile.

Mi sono guardato intorno ma l'unico metodo di visualizzazione dei file di coda che riesco a vedere è il comando postcat, e davvero non voglio scrivere il mio parser - quindi mi stavo chiedendo se qualcuno di voi ha già fatto così, o conosci un comando migliore da usare?

Ecco il codice per la mia soluzione attuale:

#!/usr/bin/perl 

$qCmd="mailq | grep -B 2 \"[email protected]\" | cut -d \" \" -f 1"; 

@data = split(/\n/, `$qCmd`); 
$i = 0; 

foreach $line (@data) 
{ 
    $i++; 

    $remainder = $i % 2; 
    if ($remainder == 0) 
    { 
      next; 
    } 

    if ($line =~ /\(/ || $line =~ /\n/ || $line eq "") 
    { 
     next; 
    } 
    print "Processing: " . $line . "\n"; 
    `postcat -q $line > $line.email.txt`; 
    $subject=`cat $line.email.txt | grep "Subject:"`; 
    #print "SUB" . $subject; 
    #`cat $line.email.txt > \"$subject.$line.email.txt\"`; 
} 

Qualsiasi consiglio apprezzato.

+0

Ti importa se la soluzione è Perl? Immagino che tu voglia solo ottenere il lavoro in tutti i modi che puoi. :) –

+0

Non mi dispiace, l'ho effettivamente scritto in bash inizialmente (quindi un uso massiccio di apici inversi) ma ho trovato problemi nell'usare l'operatore modulo che non volevo affrontare (ero di fretta). Se non conosco già la lingua, la imparerò almeno così posso hackerare qualcosa. La mia unica obiezione potrebbe essere se fosse in assembler, forse? : P – Geekman

risposta

1

È possibile trovare il modulo di utilizzo Postfix::Parse::Mailq qui, nonché lo script pfcat.

+0

Apprezzo i suggerimenti di Ether, e posso vedere come sarebbe molto in ordine il mio script attuale - tuttavia entrambi sembrano solo altri modi di utilizzare Postcat. Postcat è ottimo per una visualizzazione non elaborata, ma speravo di ottenere qualcosa per offrire un display migliore ai clienti senza che io debba analizzarlo. Come bonus sarebbe fantastico avere qualcosa per prendere gli allegati codificati e scaricarli come file reali. Non ho trovato nulla di simile, so che potrei codificarlo, ma sto cercando di non farlo come sarebbe un bel po 'di codice (leggi: tempo) immagino. – Geekman

Problemi correlati