web-dev-qa-db-ja.com

metamucilを使用して、インタラクティブな入力なしで電子メールの添付ファイルを抽出するにはどうすればよいですか?

3000以上のDMARCレポートを含むIMAPフォルダーからすべての添付ファイルを保存する方法を探しています。各レポートは個々のメッセージ内に.Zipまたは.xml.gzファイルとして添付されています。 Claws Mail を使用しています これを自動化する方法 (例->保存を参照)からmunpackまで。残念ながら、openSUSE Leap 42.3(私が使用している)には、munpackを提供するパッケージがないようです。いくつかのウェブ検索の後、私は代替案を見つけました:metamail -wyこの質問 への答えとして提案されました。

それを爪で直接試してみると、(プログラムを適切に使用していないため)エラーが発生しました。そこで、一時ディレクトリに1つのメッセージを手動で保存し、コンソールから試しました。

[/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
george

あなたが持っているデータが実際にどのように見えるかはわかりませんので、私ができる最善のことは、知識に基づいた推測です。

過去にスクリプトでmetamail -q -w -x file_nameを使用して、添付ファイルを抽出しました。 man metamailからわかるように、-wはmetamailにmailcapファイルを参照せず、添付ファイルを抽出するように指示します。スクリプトは余分なものを好まないため、-qは静かにするように指示します。出力、および-xは、端末で実行されていないことを示しているため、愚かな質問をするべきではありません。

あなたはすでに-wを持っていて、-yも使用しています。これは、メールが適切にフォーマットされている場合は必要ないはずですが、おそらくあなたのものではありません-私が言ったように、私は何を知りませんあなたが持っているデータ。マニュアルページでは、-yで発生する可能性のある奇妙な影響についても警告しています。

したがって、最初に-yをドロップして、それがまだ機能するかどうかを確認します。次に、-xを追加して、要求が停止するかどうかを確認します。最後に-qを追加して、不要な出力を削除します。

編集

怠惰すぎて試すことができないと非難された後、私は次の手順を実行しました。

1)muttを使用して、1つの空のファイルを含むZipファイルを自分にメールで送信しました。いくつかのヘッダーが削除/編集された完全なメールは次のとおりです。

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-M64bZlz1-MKfamEnという2つのファイルとして保存します。 2番目はZipファイルで、最初は本文です。

そして今?それは私のために働きます、それはあなたのために働きません。

1
dirkt