如何使用元郵件提取郵件附件而無需互動式輸入?

如何使用元郵件提取郵件附件而無需互動式輸入?

我正在尋找一種方法來保存 IMAP 資料夾中的所有附件,其中包含 3000 多個 DMARC 報告,每個報告都附加在各個郵件中作為.zip.xml.gz文件。我在用利爪郵件其中有一種自動化的方法(請參閱範例 -> 儲存)通過munpack.不幸的是,在 openSUSE Leap 42.3(我使用的)上似乎沒有提供munpack.經過一番網路搜尋後,我找到了一個替代方案:metamail -wy建議作為答案這個問題

直接用爪子嘗試給了我一些錯誤(因為沒有正確使用程序)。因此,我在臨時目錄中手動保存了一條訊息,並從控制台嘗試:

[/tmp/download]: metamail -yw msg
Date: Mon, 03 Nov 2014 10:13:53 +0000
Subject: Report domain: ████████ Submitter: ████████
From: [email protected]
To: ████████


This message contains data in an unrecognized format, application/zip,
which can either be viewed as text or written to a file.

What do you want to do with the application/zip data?
1 -- See it as text
2 -- Write it to a file
3 -- Just skip it

2
Please enter the name of a file to which the data should be written
(Default: ████████.zip) >
Wrote file ████████.zip

換句話說:它本身可以工作,但需要對每個單獨的訊息進行互動式輸入 - 對於 3000 多封郵件來說肯定不是一個選擇。

我的問題是:

我怎麼能metamail以不需要互動式輸入的方式使用它,以便可以迭代(例如在腳本中或透過Claws Mail的功能)?

答案1

我不確定你所擁有的數據實際上是什麼樣子,所以我能做的最好的就是一些有根據的猜測。

metamail -q -w -x file_name過去在腳本中成功使用過提取附件。正如您可以從 中看到的man metamail-w告訴metamail不要查詢mailcap文件,而只是提取附件,-q告訴它保持安靜,因為腳本不喜歡額外的輸出,並-x告訴它它絕對不在終端上運行,所以它不應該問愚蠢的問題。

您已經擁有-w,而且您也在使用-y,如果郵件格式正確,則不需要,但也許您的不是 - 正如我所說,我不知道您擁有什麼資料。手冊頁也警告可能發生的奇怪影響-y

所以先放下-y,看看它是否仍然有效。然後添加-x,看看它是否停止詢問。最後添加-q以刪除不需要的輸出。

編輯

在被指責懶得嘗試後,我做了以下步驟:

1)給自己郵寄了一個 zip 文件,其中有一個空文件,使用mutt.這是完整的郵件,刪除/編輯了一些標題:

From mail  Sat Mar  3 12:49:13 2018
Envelope-to: <dirk@...>
...
Message-ID: <20180303114913.xr7xvpx2pso6wurn@feanor>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="gsrhzrdopn4ddt7t"
Content-Disposition: inline
User-Agent: NeoMutt/20170609 (1.8.3)
Content-Length: 480
Lines: 18


--gsrhzrdopn4ddt7t
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

Test

--gsrhzrdopn4ddt7t
Content-Type: application/zip
Content-Disposition: attachment; filename="foo.zip"
Content-Transfer-Encoding: base64

UEsDBAoAAAAAALplY0wAAAAAAAAAAAAAAAAHABwAenp6L2Zvb1VUCQAD8IqaWvCKmlp1eAsA
AQToAwAABOgDAABQSwECHgMKAAAAAAC6ZWNMAAAAAAAAAAAAAAAABwAYAAAAAAAAAAAApIEA
AAAAenp6L2Zvb1VUBQAD8IqaWnV4CwABBOgDAAAE6AMAAFBLBQYAAAAAAQABAE0AAABBAAAA
AAA=

--gsrhzrdopn4ddt7t--

2)儲存到名為 的郵箱中yyy,然後執行

METAMAIL_TMPDIR=. metamail -q -x -w ~/Mail/yyy

3)正如預期的那樣,元郵件不會詢問,並將所有部分保存為兩個名為1-M64bZlz和 的檔案1-MKfamEn。第二個是 zip 文件,第一個是正文。

現在?它對我有用,但對你不起作用。

答案2

  1. ripmime 是一個非常好的實用程序,用於從電子郵件中提取附件(我使用從 procmail 呼叫的腳本)

2a) 如果您確實想使用 munpack,那麼您可以使用先前版本的套件管理文件中找到的二進位。例如,我在 CentOS-7 上需要 munpack,但找不到 mpack 的 rpm,因此我使用 rpmfinder 下載此“mpack-1.6-2.el6.rf.x86_64.rpm”,然後使用此命令解壓縮內容。

rpm2cpio mpack-1.6-2.el6.rf.x86_64.rpm | rpm2cpio mpack-1.6-2.el6.rf.x86_64.rpm cpio-idmv

(您可能想在空子資料夾中執行此操作;使用樹來尋找檔案;我的位於 .usr/bin 下)

2b) munpack-1.6 有一個未記錄的開關“-t”來執行更好的文字擷取(當您使用“-?”時未顯示)

相關內容