에서 만든 사서함 파일("Mboxrd")이 있고 getmail
다양한 보낸 사람(그룹)의 메시지를 정렬하고 이를 별도의 사서함 파일(아마 3~5개)로 이동하여 이를 "처리"하고 싶습니다. 이상적으로는 이동된 메일 메시지를 원본 메일함 파일에서 삭제해야 합니다.
보낸 사람 주소를 기준으로 메시지를 정렬하고 싶을 것입니다. 하지만 주제(예: 특정 단어/구문)별로 메시지를 정렬할 수 있으면 좋을 것입니다.
getmail
이제 이것이 방금 메일을 받은 내 컴퓨터의 MTA라면 - 또는 MTA로 메일을 보내 도록 설정했다면 - procmail
일반적인 방법을 사용할 수 있을 것 같지만... 그러나 내가 얻은 것은 "죽은" 파일이라는 것입니다. 메일 메시지가 저장되므로 이는 옵션이 아닙니다. MTA를 통해 메일을 보낼 수 있을 것 같은데, 메일을 그대로(파일로) 처리할 수 있는 방법이 있을까요?
procmail
그렇다면 메일함 파일의 메시지를 메시지의 보낸 사람/제목을 기준으로 여러 다른 메일함 파일로 "정렬"할 수 있는 프로그램이나 명령(또는 일부 특수 옵션 또는 유사)이 있습니까 ? 구성 파일과 같은 작은 예도 감사하겠습니다...
답변1
이 formail -s
방법은 데모 스크립트를 통해 문서화되어 있습니다.procmail
매뉴얼 페이지;이 문구를 찾으세요:
Procmail을 호출하여 채워진 시스템 메일함을 사후 처리할 수도 있습니다.
당신도 이것을 발견할 것이다http://www.iki.fi/era/procmail/mini-faq.html#split
귀하의 메일함이 개별 파일을 포함하는 Berkeley mbox가 아닌 경우 각 파일이 별도의 메시지인 디렉토리가 있을 수 있습니다. 이 경우 간단히 처리할 수 있습니다.
for f in folder/*; do
procmail -options <"$f"
# maybe rm "$f" to remove the original after processing completes
done
발신자를 기준으로 필터링하는 방법의 예로서 간단한 레시피는 다음과 같습니다.
# If your mailbox destination is maildir, no locking is required
:0: # so you could lose the second colon here, and in subsequent examples
* ^From:.*\<alice@example\.com\>
alice
:0:
* ^From:.*\<bob@example\.net\>
bob
이는 일반적으로 사람들이 "Sender"로 의미하는 "From:" 헤더를 확인합니다. 일반적으로 사용되는 다른 두 개의 필드(Envelope Sender, 일반적으로 에 있음)가 있지만 Return-Path:
실제 Sender:
헤더는 선택 사항이지만 From:
헤더가 채워질 때 자주 사용됩니다. 실제 발신자가 아닌 경우 발신 소프트웨어에 의해).
마찬가지로 분류하려면 Subject:
캡처하려는 주제와 일치하는 정규식을 지정하기만 하면 됩니다.
:0:
* ^Subject: *((Fwd?|Re): *)*\[gunk]
gunk-list
[gunk]
제목 헤더 에 선택적으로 공백 및/또는 Re:
및/또는 Fw:
및/또는 앞에 라벨이 포함된 메시지가 검색됩니다 Fwd:
.
답변2
메일함 파일이 mbox 형식이라고 가정하면 formail
procmail과 함께 제공되는 유틸리티를 사용하여 각 이메일에 대해 명령을 실행할 수 있으며 선택적으로 -s
입력이 이메일이 아니라 메일함임을 알려줄 수 있습니다. procmail 규칙을 적용하려는 경우 명령은 이 명령일 수도 procmail
있고 표준 입력을 통해 메일을 받고 이에 대한 작업을 수행하는 다른 명령일 수도 있습니다.
formail -s procmail <Mboxrd && mv Mboxrd Mboxrd.done
또 다른 방법은 mutt에 메일함을 로드하고 일부 매크로를 적용하는 것입니다. 이는 메일박스 형식에 독립적이라는 장점이 있지만, mutt 매크로가 암호화될 수 있다는 단점이 있습니다(그러나 반드시 procmail 규칙보다 더 암호화된 것은 아닙니다). mutt를 사용하는 또 다른 장점은 한 번에 하나의 메시지를 이동할 수 있다는 것입니다. 따라서 중간에 중단되면 중단된 부분부터 다시 시작할 수 있습니다.