procmail 레시피에 발전기 "또는" 연산자가 있습니까?

procmail 레시피에 발전기 "또는" 연산자가 있습니까?

다음과 같은 procmail 레시피를 고려하면:

:0:
* ^Subject:.*viagra.*
* ^From:.*viagra.*
/dev/null

Procmail은 제목에 Viagra가 포함된 Viagra 이메일만 삭제합니다. 일치하는 항목 중 하나가 참인 경우 필터를 적용할 수 있나요?

이 솔루션은 정규식 조작을 사용하지 않는 것이 더 좋지만 (regex1|regex2)이것이 유일한 솔루션인 경우 그렇게 말씀해 주십시오.

답변1

당신은 가깝습니다. 정규식에 대한 깊은 이해는 성공적인 procmail 레시피에 큰 도움이 됩니다. Procmail은 매우 유연하지만 이러한 유연성의 대부분은 정규식에 달려 있습니다.

:0: 
* ^(From|Cc|To|Subject).*viagara.* 
/dev/null

또는 달성하려는 목표에 더 가깝다고 생각하는 파이프 및 개행 이스케이프 규칙을 사용하여 다음 줄에서 계속합니다(가독성을 위해). 귀하의 예에서는 일치해야 하는 새 조건을 생성합니다.

:0:
* ^Subject:.*viagra.* |\
  ^From:.*viagra.*
/dev/null

답변2

두 개의 레시피를 사용하세요. 각각은 /dev/null로 이동합니다. 하나는 제목과 일치하고 다른 하나는 보낸 사람과 일치합니다. 첫 번째 게임이 승리했습니다. 이는 본질적으로 OR 연산자와 동일합니다. reg1|reg2 접근 방식은 효과가 있지만 두 가지 방법을 사용하면 더 명확하게 읽을 수 있다고 생각합니다.

관련 정보