2010-04-30 43 views
8

因此,今天早上我接到一個關於客戶需要查看他們等待被髮送到我們的輔助郵件服務器上的郵件的電話。他們與主服務器的鏈接(仍然)已經停機兩天,他們需要看到他們的電子郵件。有沒有比postcat更好的工具來查看postfix郵件隊列文件?

所以我寫了一個快速的Perl腳本,結合postcat使用mailq將每個郵件的地址轉儲到單獨的文件中,並將其發送出去。可怕的代碼,我知道,但它很緊急。

我的解決方案可以正常工作,至少可以提供原始視圖,但是我認爲今晚如果我有一個解決方案,我可以提供他們的電子郵件附件,也可以刪除一些「垃圾」標題文本。大部分重要的電子郵件似乎都附有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,你會關心嗎?我想你只是想以任何方式得到這份工作。 :) – 2010-05-02 19:54:51

+0

我不介意,實際上我最初是在bash中編寫它的(因此大量使用反引號),但是發現了使用我不想處理的模運算符的問題(我很急)。如果我不知道這門語言,至少我會學習它,這樣我就可以破解一些東西。我唯一的反對意見可能是如果它是彙編程序? :P – Geekman 2010-05-03 11:22:23

回答

1

您可以在這裏找到Postfix::Parse::Mailq模塊,以及pfcat腳本。

+0

我很欣賞Ether的建議,我可以看到它將如何大大地整理我目前的劇本 - 不過他們似乎都是使用postcat的其他方式。 Postcat非常適合純粹的觀點,但我希望能夠爲客戶提供更好的展示,而不必將其解析出來。作爲獎勵,有一些東西需要編碼的附件並將它們轉儲爲實際文件是非常棒的。我還沒有發現任何這樣的東西,我知道我可以編碼,但是我試圖不這樣做,因爲它會是我想象的一小段代碼(讀取時間)。 – Geekman 2010-05-03 11:26:49

相關問題