어젯밤에 나는 메일링 리스트에 가입했는데, 오늘 아침에 내 프로메일 필터가 많은 메일링 리스트 메시지에 적용되지 않는다는 사실을 발견했습니다. 이제 내 받은편지함에는 더 중요한 업무용 이메일과 함께 덜 중요한 메일링 리스트 메시지가 산재해 있습니다.
내 procmail 필터를 통해 내 받은편지함에 있는 모든 이메일을 다시 실행할 수 있나요?
참고: 저는 maildir 형식을 사용하고 있습니다.
답변1
나는 이것이 효과가 있을 것이라고 믿습니다. formail
메일을 다시 포맷하고 를 통해 다시 보내려면 실행해야 합니다 procmail
.
Maildir 디렉토리에서:
cat * | formail -s procmail
답변2
다음과 같이 현장에서 수행할 수 있습니다.
$ for m in Mail/{cur,new}/*; do echo $m; procmail <$m; rm $m; done
나중에 원본 이메일을 각각 제거해야 합니다. 그렇지 않으면 procmail이 해당 이메일을 복제합니다.
또한 모든 것을 새로운 것으로 기록합니다. 나는 그것을 처리하는 좋은 방법을 확신하지 못합니다.
답변3
mutt를 사용하는 경우 procmail을 통해 이메일을 파이프하고 다음과 같은 주요 명령을 사용하여 받은 편지함에서 원본을 삭제할 수도 있습니다.
muttrc:
macro index y '<enter-command>unset wait_key<enter><tag-prefix><pipe-entry>/usr/bin/procmail /home/user/.procmailrc<enter><tag-prefix><delete-message><enter-command>set wait_key<enter>'
macro pager y '<enter-command>unset wait_key<enter><pipe-entry>/usr/bin/procmail /home/user/.procmailrc<enter><delete-message><enter-command>set wait_key<enter>'
답변4
이에 대한 좋은 해결책은 없는 것 같습니다. procmail은 의 메일 입력만 허용하는 것 같아서 stdin
maildir 응용 프로그램이 제한됩니다.
나는 비슷한 상황에 직면했고 내 요구에 가장 적합한 솔루션은 내가 procmail
하고 싶었지만 가장 확실하게 할 수 없는 작업을 내 자신의 작은 스크립트로 복제하는 것이었습니다. 이는 하나 또는 두 개의 간단한 규칙만 있으면 충분할 것입니다. 당신이 돌봐야 할 것 :
cd ~/Maildir/
sh -c 'for i in `egrep -l "^Delivered-To: [email protected]" cur/*`; \
do mv $i .FreeBSD.perforce/$i; done'
이 방법도 최적은 아니지만 적어도 불필요한 IO 및 잠재적인 데이터 손실 문제가 발생해서는 안 됩니다.