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.
¿Le importa si la solución es Perl? Me imagino que solo quieres conseguir el trabajo de cualquier forma que puedas. :) –
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