man procmailrc
설명하다:
변수 이름? ? 이 조건의 나머지 부분을 이 환경 변수(더미 변수일 수 없음)의 값과 일치시킵니다. 특별한 경우는 다음과 같습니다.변수 이름Equals
B
,H
,HB
또는BH
; 이는 이 레시피의 초기 플래그에 의해 정의된 기본 제목/본문 검색 영역만 재정의합니다.
??
연산자를 사용하는 경우특별한 경우언급한 대로 기본 플래그의 "재정의"는 이 조건에 대해서만 지속됩니까, 아니면 전체 레시피의 나머지 부분에 대해서만 지속됩니까?
예를 들어, 내가 지정한다면
:0 H
* ^To:.*recipient
* B ?? tribbles
* ^From:.*space
From
이전 줄을 덮어쓰기 때문에 ody에 대해 조건이 시도됩니까, 아니면 덮어쓰기 줄이 끝난 후 B
플래그가 초기 조건( )으로 되돌아가나요 ?H
답변1
재정의는 이를 정의하는 조건 동안만 지속됩니다. 다음은 보여주기 위해 약간 변경된 실험입니다.
pm-test.rc
:0 H
* ^To:.*recipient
* B ?? tribbles
* space
mailbox
이메일.txt 테스트
From: [email protected]
To: [email protected]
Your storage locker is overflowing with
tribbles. Please clean it out.
"공백"이라는 단어는 위 메시지의 헤더에만 나타납니다.
테스트 이메일 2.txt
From: [email protected]
To: [email protected]
We're having some trouble with
tribbles at our space station.
"space"라는 단어는 위 메시지 본문에만 나타납니다.
B
실제로 보장이 된다면아니요해당 조건이 끝나면 만료되며 다음과 pm-test.rc
같습니다.성공두 번째 메시지는 "트리블스"가 몸 안에 있고 "공간"(오직)이 몸 안에 있기 때문입니다.
% procmail VERBOSE=on DEFAULT=/dev/null MAILDIR=/tmp pm-test.rc < test-mail2.txt
procmail: Match on "^To:.*recipient"
procmail: Match on "tribbles"
procmail: No match on "space"
procmail: Assigning "LASTFOLDER=/dev/null"
과연 레시피아니요성공.
반대로 B
덮어쓰면하다해당 조건이 끝나면 만료되며 다음과 pm-test.rc
같습니다.성공첫 번째 메시지에서는 "tribbles"가 본문에 있고 "space"(만)가 제목에 있기 때문입니다.
% procmail VERBOSE=on DEFAULT=/dev/null MAILDIR=/tmp pm-test.rc < test-mail.txt
procmail: Match on "^To:.*recipient"
procmail: Match on "tribbles"
procmail: Match on "space"
procmail: Assigning "LASTFOLDER=mailbox"
과연 레시피성공.
따라서 B
재정의 이후의 조건은 해당 재정의의 영향을 받지 않습니다. 레시피의 원래 플래그( H
)를 재사용합니다.