나는 다음을 사용하고 있습니다: Mutt-kz + Isync + msmtp + spamassassin + Procmail
Mutt-kz, Isync 및 msmtp가 실행 중입니다. 메일이 도착할 때 procmail이 자동으로 시작되도록 할 수 없습니다. 나는 루트가 아닌 사용자로 모든 작업을 수행하고 Arch Linux를 실행합니다. 프로메일이 설치되었습니다.
폴더 구조:
$HOME/Mail/Inbox
/Enviados
/Borradores
/Spam
/P-Spam
/Trash
이메일에는 다음 cronjob 스크립트가 함께 제공됩니다.
#!/bin/bash
mbsync googlemail && notmuch new
이것은 권한 644를 가진 내 .forward입니다.
"|IFS=' ' && exec /usr/bin/procmail -f- || exit 75 #damian"
이것은 권한 644를 가진 내 .procmailrc입니다.
PATH=/bin:/usr/bin
LOGFILE=$HOME/Mail/procmail.log
LOGABSTRACT=ALL
VERBOSE=YES
DEFAULT=$HOME/Mail
MAILDIR=$HOME/Mail
SHELL=/usr/bin/zsh
:0fw: spamassassin.lock
* < 512000
| /usr/bin/vendor_perl/spamc
:0fw
| /usr/bin/vendor_perl/spamc
:0:
* ^X-Spam-Level: \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
Spam
:0:
* ^X-Spam-Status: Yes
P-Spam
procmail -v를 실행하면 다음과 같은 결과를 얻습니다(중요한 내용만).
procmail v3.22 2001/09/10
Locking strategies: dotlocking, fcntl(), lockf(), flock()
Default rcfile: $HOME/.procmailrc
Your system mailbox: /var/spool/mail/damian
두 번째 실행:
procmail DEFAULT=/dev/null VERBOSE=yes /dev/null </dev/null
나는 얻다:
procmail: [1970] Tue Apr 21 22:16:37 2015
procmail: Rcfile: "/dev/null"
procmail: Assigning "MAILDIR=/home/damian"
procmail: Assigning "LASTFOLDER=/dev/null"
procmail: Opening "/dev/null"
Folder: /dev/null
답변1
isync
Procmail을 / 에 통합하는 쉬운 방법은 없는 것 같습니다 mbsync
. 나는 서버 측 필터링을 선택하거나 IMAP을 로컬 폴더와 동기화하는 (아주 깔끔한) 아이디어를 포기할 것입니다.
따라서 원래 답변은 중요하지 않을 수 있지만 아래에 남겨 두겠습니다.
파일 .forward
에 구문 오류가 있습니다. 이것은 damian
주석이어야 # damian
하지만 오늘날에는 지난 세기의 유산인 Sendmail을 실행하지 않는 한 주석을 생략할 수 있습니다.
zsh
Procmail 처리를 위해 쉘을 사용하는 것이 이상해 보입니다 /bin/sh
. 마음에 든다고 해도 zsh
Procmail에서 해당 기능을 사용하는 것은 피하는 것이 좋습니다. 과거에 비표준 쉘을 사용하면 설명할 수 없는 문제가 발생했습니다(내가 본 버그는 다음과 같습니다 tcsh
).
두 가지 요리법이 있습니다 spamc
. 하나면 충분합니다. 두 번째는 가야 spamc
하지만(어차피 너무 큰 메시지는 자체적으로 거부함) 첫 번째 잠금도 제거하겠습니다.
DEFAULT
그것은 당신 것이 틀림없어요 , $HOME/Mail/Inbox
그렇죠? 다이렉트 메일을 원하지 않습니까 $HOME/Mail
?
그 외에는 당신의 .procmailrc
성과가 눈에 띄지 않았습니다.
자세한 내용은 다음을 참조하세요.http://iki.fi/era/mail/procmail-debug.html
답변2
MDA로 사용되지 않으므로 procmail
호출되지 않습니다.
주기적으로 실행되고 이를 명시적 cron
으로 제공하는 데 사용되는 쉘 스크립트를 기반으로 작업하는 것이 좋습니다 .formail
procmail
다음은 그러한 쉘 스크립트의 뼈대입니다:
$ cat <<eof >splitter.sh
#!/bin/sh
orig_mailbox=${HOME}/Mail/Inbox
[ -s ${orig_mailbox} ] && formail -s <${orig_mailbox} procmail ${HOME}/.procmailrc
eof
물론 이것은 .procmailrc
수신 메일함에서 메시지를 삭제한 경우에만 작동합니다. 이를 보장하려면 .procmailrc
포괄적인 규칙으로 마무리하는 것이 좋습니다.
:0
${HOME}/Mail/Received