2012-07-27 4 views
2

procmail을 사용하여 "To"필드에 내 이름 ("John Doe")이 포함되지 않은 수신 메일을 "Junk"폴더로 이동하려고합니다.procmail을 사용하여 "To"에 내 이름을 포함하여 전자 메일 필터링

이 경우
# Filter spam if the name "John Doe" is not in "To" 
:0: 
* ^(?!To:.*John\sDoe).* 
.Junk/ 

그것입니다 :

그러나, 다음과 같은 규칙이 내가 그것을 확인하기 위해 온라인 테스트 애플리케이션에 철저하게 정규 표현식을 테스트에도 불구하고, 어떤 영향을 미칠 것 같지 않는 것은해야 것과 일치 내 전체 procmail 규칙 파일은 다음과 같습니다.

# Filter mail using SpamAssassin 
:0fw: spamassassin.lock 
* < 256000 
| /usr/bin/spamassassin 

# Filter spam based on "Spam-Level" 
:0: 
* ^X-Spam-Level: \*\* 
.Junk/ 

# Filter spam if the name "John Doe" is not in "To" 
:0: 
* ^(?!To:.*John\sDoe).* 
.Junk/ 

내 규칙이 작동하지 않는 이유는 무엇입니까?

도움 주셔서 감사합니다.

+1

디렉터리 배달에는 잠금이 필요하거나 지원되지 않습니다. ': 0 :'에서 두 번째 콜론을 잃어 버릴 것이다. SpamAssassin에 대한 동시 액세스를 방지하려는 이유가 명확하지 않지만 특정 이유가있을 수 있습니다. – tripleee

+0

이러한 특정 설정은 내 호스트 인 WebFaction의 템플리트에서 권장되었습니다. 나는 그들이 내 자신이 무엇을 의미하는지 모른다. –

+0

Procmail 로그 파일에 "lock file ignored"경고가 포함 된 경우 그 이유가 있습니다. SpamAssassin이 공유 데이터베이스의 Bayes 등 데이터를 가진 많은 수의 사용자에 의해 사용되는 경우 * 아마 * 잠금은 혼잡을 피하는 데 도움이 될 수 있지만이 잠금 파일은 사용자별로 유용하므로 의심의 여지가 없습니다 (확장 성 문제가있는 경우, 왜 그들은 spamd/spamc 래퍼를 사용하지 않는가?) – tripleee

답변

4

Perl 미리보기가 Procmail의 정규식 목록에 포함되어 있지 않기 때문에.

대신 사용해보십시오.

:0 
* ! ^To:.*John[ ]+Doe 
.Junk/ 

[] 내의 공백은 공백과 탭이어야합니다. \s Perlism도 지원되지 않습니다.

전자 메일 주소를 필터링 기준으로 사용하고 ^TO_ 특수 매크로를 사용하여 Cc : 등을 다루는 것이 더 나을 수도 있습니다. 물론 여전히 숨은 참조를 처리 할 수는 없습니다.

+0

완벽한! 감사! –