2010-04-30 2 views
8

그래서 저는 오늘 아침에 보조 메일 서버에 배달되기 위해 어떤 이메일이 배달되는지 기다릴 필요가있는 클라이언트에 대해 전화를 받았습니다. 메인 서버에 대한 그들의 링크는 (아직) 2 일간 다운되어 이메일을 볼 필요가있었습니다.postfix 메일 큐 파일을보기위한 postcat보다 우수한 도구가 있습니까?

그래서 Postcat과 함께 mailq를 사용하여 각 이메일을 별도의 파일에 덤프하고 tar'd하여 전송했습니다. 끔찍한 코드, 나도 알아,하지만 긴급했다.

내 솔루션은 적어도 원시보기를 제공합니다.하지만 이메일 첨부 파일을 제공하고 일부 "가비지"헤더 텍스트를 제거 할 수있는 솔루션이 있다면 오늘 밤 좋을 것이라고 생각했습니다. 중요한 전자 메일의 대부분은 PDF 또는 유사한 첨부 파일이있는 것 같습니다.

나는 주변을 둘러 보았지만 내가 볼 수있는 대기열 파일을 볼 수있는 유일한 방법은 postcat 명령이며, 내 자신의 파서를 쓰고 싶지는 않습니다. 그래서 여러분 중 누군가가 이미 해본 적이 있는지 궁금합니다. 그래서, 또는 더 나은 명령을 알고 사용할 수 있습니까? 감사

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

어떤 조언 :

여기에 내 현재 솔루션에 대한 코드입니다.

+0

솔루션이 Perl 인 경우 신경 씁니까? 나는 당신이 할 수있는 어떤 방법 으로든 직업을 갖기를 원한다고 생각한다. :) –

+0

나는 처음에 bash (backticks의 사용량이 많음)에서 실제로 작성했지만 modulus 연산자를 사용하여 문제를 발견했다. (나는 돌진했다). 언어를 모르는 경우에는 적어도 배워서 뭔가 해킹 할 수 있습니다. 내 유일한 이의는 아마도 어셈블러에 있다면 어떨까요? : P – Geekman

답변

1

여기서 Postfix::Parse::Mailq 모듈과 pfcat 스크립트를 사용할 수 있습니다.

+0

Ether이라는 제안에 감사 드리며, 현재 스크립트를 어떻게 정리할 수 있는지 알 수 있습니다. 그러나 둘 다 postcat을 사용하는 다른 방법 인 것처럼 보입니다. Postcat은 원판보기에 좋지만, 고객이 분석 할 필요없이 더 나은 화면을 제공 할 수 있기를 바랍니다. 보너스로 인코딩 된 첨부 파일을 가져 와서 실제 파일로 덤프하는 것이 가장 좋습니다. 나는 이것과 같은 것을 찾지 못했지만, 코드를 작성할 수 있다는 것을 알았지 만, 상상할 수있는 정도의 코드 (읽기 : 시간)가 아닌 것처럼 노력하고있다. – Geekman

관련 문제