mbox 형식의 임의 이메일 파일이 있습니다. 내 "경고" mbox 파일(새 폴더)에서 한 발신자(또는 특정 주제)의 메시지를 정기적으로(주말) 자동으로 (cron을 통해) 제거하고 싶습니다. 한 발신자가 메시지를 "[이메일 보호됨]' 매일 수십 통의 메시지가 전송됩니다.
정기적으로 이 작업을 수행하고 싶기 때문에 매일 수동으로 입력한 작업이 수행됩니다.mutt -f alerts; D; [email protected]; $; y (purge)
.procmailrc
먼저 찾아보아야 하므로 옵션이 아닙니다. 일단 살펴보니 정말 훌륭했습니다. 이번 주말에는 더 이상 필요하지 않으며 제거하고 싶습니다.
답변1
이 크론 작업은 매 자정마다 지정한 작업을 수행합니다.
0 0 * * * script >/dev/null -c 'env TERM=vt100 mutt -F/dev/null -falerts -e "push <delete-pattern>[email protected]<enter><sync-mailbox>y<enter><exit>"' /dev/null
그것을 분석해 봅시다.
script -c 'cmd'
cmd
가짜 tty(pty)로 실행하여cmd
생각하다커서 이동성 등을 갖춘 터미널이 있습니다. Mutt에서는 이것이 필요하지만 cron 작업에서는 이를 가질 수 없습니다. 스크립트는 심을 제공합니다. 스크립트의 일반적인 작업은 명령 세션을 파일에 기록하는 것입니다. 마지막 매개변수는 /dev/null
빈 장치에 레코드를 쓰는 것을 의미합니다. 왜냐하면 재생 가능한 여러 저주 이벤트에 대해서는 신경 쓰지 않을 것이기 때문입니다.
env TERM=vt100
...mutt를 실행하기 전에 vt100 터미널을 환경에 넣는 것을 의미합니다. 크론 작업에는 기본 터미널 유형이 없기 때문에(기본적으로 터미널이 없기 때문에) 이것이 필요합니다.
다른 모든 것은 mutt의 일부입니다. 우리는 이를 사용하여 귀하의 콘텐츠가 읽히지 않도록 -F/dev/null
합니다 . .muttrc
읽는 데에는 아무런 문제가 없지만 muttrc의 변경으로 인해 mutt의 상호 작용 방식이 변경될 수 있습니다. 장기적으로는 기본 muttrc를 사용하는 것이 더 안전하며 이는 -F/dev/null
.
이 -e
옵션은 mutt에게 런타임 시 수행할 작업을 알려줍니다. 인수는 -e
muttrc 파일에 넣을 수 있는 명령입니다. set
, alternatives
, 등은 bind
키보드 버퍼에 키 입력을 "푸시"하여 mutt가 다음 내용을 사용자가 입력한 것처럼 해석하도록 하는 명령입니다.hdr_order
Push
이제 가상 키를 살펴보겠습니다.
<delete-pattern>[email protected]<enter>
키를 누르고 ENTER를 누르는 것과 동일 [email protected]
하지만 실제 키 대신 키보드 바인딩 기호를 사용합니다. 이는 기본 또는 개인 키 바인딩 변경으로부터 스크립트를 보호하므로 매크로 및 푸시에 대한 모범 사례입니다. 대화형 도움말에서 키바인딩 기호를 얻을 수 있습니다. 중간 열의 모든 이름(statements 와 함께 사용됨 bind
)은 기호 이름입니다.
<sync-mailbox>
$
키를 누르는 대신 키 기호를 다시 누르는 것과 같습니다 . y<enter>
"확실합니까?"라는 질문에 신속하게 응답하세요.
결국 <exit>
포기했습니다. 그러면 세션도 종료 script
되고 cron 명령도 종료됩니다. cron과 마찬가지로 >/dev/null
cron 소음이 메일함을 괴롭히는 것을 방지합니다.
전체 push
문자열이 인용되어 있다는 점에 유의하세요! 이건 중요하다. 운 좋게도 두 가지 수준의 인용만 필요하므로 터무니없는 따옴표를 이스케이프 처리하지 않고 작은 따옴표 안에 큰 따옴표를 사용할 수 있습니다.
답변2
with (또는 다른 많은 언어로 된 많은 구현 중 하나)를 사용하여 mutt
이를 수행 할 수 있습니다.cron
expect
#!/usr/bin/env expect
spawn mutt -f alerts
expect -ex "Mutt" # or something if you've customized the display
send -- "D"
send -- "[email protected]"
...
또 다른 옵션은 다음과 같은 작업을 수행하여 유사한 작업을 수행하는 코드를 작성하는 것입니다.메일::사서함::Mbox.