대화형 입력 없이 메타메일을 사용하여 메일 첨부 파일을 추출하는 방법은 무엇입니까?

대화형 입력 없이 메타메일을 사용하여 메일 첨부 파일을 추출하는 방법은 무엇입니까?

저는 3000개 이상의 DMARC 보고서가 포함된 IMAP 폴더의 모든 첨부 파일을 저장하는 방법을 찾고 있습니다. 각 보고서는 개별 메시지 안에 또는 .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-wmailcap 파일을 참조하지 말고 첨부 파일만 추출하라고 지시하고, -q스크립트가 추가 출력을 좋아하지 않기 때문에 조용히 하라고 지시하고, -x확실히 터미널에서 실행되지 않는다고 지시합니다. 어리석은 질문을 해서는 안 됩니다.

당신은 이미 을 가지고 있고 -w또한 사용하고 있습니다 -y. 메일의 형식이 적절하다면 필요하지 않을 것입니다. 그러나 아마도 당신의 것은 그렇지 않을 수도 있습니다. 제가 말했듯이, 나는 당신이 어떤 데이터를 가지고 있는지 모릅니다. 매뉴얼 페이지는 또한 -y.

먼저 drop 을 실행하여 -y여전히 작동하는지 확인하세요. 그런 다음 추가하고 -x묻지 않는지 확인하십시오. 마지막으로 원하지 않는 출력을 제거하려면 추가하십시오 -q.

편집하다

시도하기에는 너무 게으르다는 비난을 받은 후 다음 단계를 수행했습니다.

1) 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 | cpio -idmv

(빈 하위 폴더에서 이 작업을 수행할 수 있습니다. 파일을 찾으려면 tree를 사용하세요. 내 파일은 .usr/bin 아래에 있었습니다.)

2b) munpack-1.6에는 더 나은 텍스트 추출을 수행하기 위한 문서화되지 않은 스위치 "-t"가 있습니다("-?"를 사용할 때는 표시되지 않음).

관련 정보