
我正在尋找一種方法來保存 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
- 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”來執行更好的文字擷取(當您使用“-?”時未顯示)