2010-04-30 9 views
8

Así que recibí una llamada esta mañana sobre un cliente que necesita ver qué correo electrónico tienen esperando para ser entregado sentado en nuestro servidor de correo secundario. Su enlace para el servidor principal había estado (aún) apagado durante dos días y necesitaban ver su correo electrónico.¿Existe una herramienta mejor que poscampo para ver los archivos de cola de correo postfix?

Así que escribí una secuencia de comandos rápida de Perl para usar mailq en combinación con postcat para volcar cada correo electrónico para su dirección en archivos separados, descifrarlo y enviarlo. Código horrible, lo sé, pero era urgente.

Mi solución funciona bien, ya que al menos da una vista cruda, pero esta noche pensé que sería bueno tener una solución en la que pudiera proporcionar sus archivos adjuntos de correo electrónico y quizás eliminar algún texto de encabezado "basura". La mayoría de los correos electrónicos importantes parecen tener un PDF o similar adjunto.

He estado buscando, pero el único método para ver los archivos de cola que puedo ver es el comando postcat, y realmente no quiero escribir mi propio analizador, así que me preguntaba si alguno de ustedes ya lo ha hecho Entonces, ¿o sabes de un mejor comando para usar?

Aquí está el código para mi solución actual:

#!/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\"`; 
} 

Algún consejo apreciado.

+0

¿Le importa si la solución es Perl? Me imagino que solo quieres conseguir el trabajo de cualquier forma que puedas. :) –

+0

No me importa, de hecho lo escribí inicialmente en bash (de ahí el uso intensivo de los backticks) pero encontré problemas con el uso del operador de módulo que no quería tratar (tenía prisa). Si aún no conozco el idioma, lo aprenderé al menos para poder hackear algo. Mi única objeción puede ser si estuviera en ensamblador tal vez? : P – Geekman

Respuesta

1

Puede encontrar el módulo de uso Postfix::Parse::Mailq aquí, así como el script pfcat.

+0

Agradezco las sugerencias de Ether, y puedo ver cómo ordenaría en gran medida mi script actual; sin embargo, ambas parecen ser otras formas de utilizar el postcat. Postcat es ideal para una vista en bruto, pero esperaba poder obtener algo para mostrar mejor a los clientes sin que tuviera que analizarlo. Como beneficio adicional, sería increíble tener algo para tomar los archivos adjuntos codificados y volcarlos como los archivos reales. No he encontrado nada como esto, sé que podría codificarlo, pero estoy tratando de no hacerlo, ya que sería un poco de código (léase: tiempo), me imagino. – Geekman

Cuestiones relacionadas