Есть ли лучший инструмент, чем postcat, для просмотра файлов почтовой очереди postfix? - PullRequest
8 голосов
/ 30 апреля 2010

Итак, рано утром мне позвонили по поводу того, что клиенту нужно посмотреть, какую электронную почту он ожидает доставки, сидя на нашем вторичном почтовом сервере. Их ссылка на главный сервер была (все еще) недоступна в течение двух дней, и им нужно было просмотреть свою электронную почту.

Итак, я написал быстрый Perl-скрипт для использования mailq в сочетании с postcat, чтобы сваливать каждое электронное письмо для своего адреса в отдельные файлы, архивировать и отправлять. Ужасный код, я знаю, но это было срочно.

Мое решение работает нормально в том смысле, что оно, по крайней мере, дает необработанное представление, но сегодня вечером я подумал, что было бы неплохо, если бы у меня было решение, где я мог бы предоставить их вложения в сообщения электронной почты и, возможно, удалить также некоторый текст заголовка «мусора». К большинству важных электронных писем прикреплен PDF или аналогичный документ.

Я искал, но единственный метод просмотра файлов очереди, который я вижу, - это команда postcat, и я действительно не хочу писать свой собственный парсер - поэтому мне было интересно, если кто-нибудь из вас уже сделал это или знаете, какую команду лучше использовать?

Вот код моего текущего решения:

#!/usr/bin/perl

$qCmd="mailq | grep -B 2 \"someemailaddress@isp\" | 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\"`;
}

Любой совет приветствуется.

1 Ответ

1 голос
/ 30 апреля 2010

Здесь вы можете найти модуль Postfix :: Parse :: Mailq , а также скрипт pfcat .

...