我在一個紅帽安裝。 我正在運行到的是:PROCMAIL ::我如何獲得一個perl腳本後執行郵件傳遞到MBox
perl腳本眺望使用模塊查找消息#0或delieved郵件的郵箱,但現在還沒有。
如果我使用C標誌對郵件進行復制,我仍然得到相同的響應,它不會將它傳遞到郵箱。
所以我需要知道的是一個procmail配方,它將它傳遞到郵箱,然後觸發腳本處理傳遞的電子郵件。
感謝 羅布
我在一個紅帽安裝。 我正在運行到的是:PROCMAIL ::我如何獲得一個perl腳本後執行郵件傳遞到MBox
perl腳本眺望使用模塊查找消息#0或delieved郵件的郵箱,但現在還沒有。
如果我使用C標誌對郵件進行復制,我仍然得到相同的響應,它不會將它傳遞到郵箱。
所以我需要知道的是一個procmail配方,它將它傳遞到郵箱,然後觸發腳本處理傳遞的電子郵件。
感謝 羅布
正如我上面評論指出,這似乎是一個不錯的方法來做到這一點。但是,你 應該能夠使用類似:
:0c:
* Whatever condition
/path/to/mbox
:0ahi
| /path/to/perl/script
或等價
:0
* whatever condition
{
:0c:
/path/to/mbox
:0ahi
| /path/to/perl/script
}
第一個配方會導致郵件被傳遞到了MBOX文件,但 因爲c
標誌使用的處理將在該配方之後繼續。以下配方中的 a
標誌指定僅在使用 前面的配方併成功完成時才使用它。
該配方上的h
標誌指定只有標頭應發送到 perl腳本。這可能不會影響它,因爲你說它是 從mbox文件而不是從管道獲取消息;但它確實減少了需要通過管道發送的數據量。
i
標誌指定如果procmail不能發送 所有內容到腳本,則不應該抱怨。由於該腳本可能不是從其標準輸入 中讀取的,因此管道緩衝區可能會填滿,導致procmail接收到寫入錯誤;儘管在僅發送消息的標題時這是不太可能發生的 。
如果你真的需要向使用Mail :: Box產品系列模塊用於處理 的消息,而不是東西,可以從標準輸入 解析的消息,我建議你至少使用Maildir郵箱而不是mbox。 對於mbox格式沒有真正的規範,並且有很多不同的解釋應該如何工作。差異往往是微妙的,所以事情似乎可以正常工作,直到您收到一條消息 ,這恰好觸發不同實現 (例如具有從From
開始的行)之間的不兼容性。這甚至沒有進入 鎖定mbox文件的問題。
因此,我能夠想出簡單但可能不是最好的答案。由於我可以控制電子郵件何時進入,所以我決定取消對進程的鎖定,並且它工作正常。
因此,如果沒有第二個冒號和「c」選項,它現在運行腳本並可以在郵箱中看到電子郵件。
哎喲...多麼痛苦......兩天浪費在一個簡單的解決方案上。
刪除鎖定聽起來像是一個可怕的解決方案。 Mbox文件對同時編寫的程序員非常脆弱,因此在處理這些文件時應始終使用鎖定。即使你完全控制了消息的傳遞時間,你可以確定後面的事情不會改變嗎? – qqx
但是,如果我不能獲得perl腳本後發射它寫入Mbox這是我唯一的解決方案。 – BostonMacOSX
這可能有助於顯示您當前擁有的配方。特別是因爲你提到使用不存在的'C'標誌(你可能意思是'c',但標誌區分大小寫)。另外,爲什麼你需要讓perl腳本從mbox文件中讀取消息,將消息簡單地傳遞給perl腳本可能會更好。 – qqx
我正在使用MAIL :: BOX模塊來執行處理。它從MBox郵箱中調用。是的,我的意思是「C」小寫 – BostonMacOSX
@qqx說的是什麼:你真的應該改變你的Perl腳本來讀取標準輸入的單個消息,而不是寫入mbox,然後再解析它。 – tripleee