procmail에서 두 개의 MATCH 변수를 사용하여 제목 줄을 조작하는 방법은 무엇입니까?

procmail에서 두 개의 MATCH 변수를 사용하여 제목 줄을 조작하는 방법은 무엇입니까?

제목 줄 앞에 [LIST]를 추가하여 성공적으로 다시 작성했습니다.

:0fhw
* ^TO_[^<>@ ]+@example\.com\>
* ^Subject:\/.+
| /usr/local/bin/formail -I"Subject: [LIST]$MATCH"

이는 성공하여 다음과 같이 됩니다.

Subject: here is the subject line

입력하다

Subject: [LIST] here is the subject line

[email protected]하지만 다음과 같이 제목 줄 에 사용자 부분을 삽입하고 싶습니다 .

Subject: [LIST] [email protected] here is the subject line

$MATCH...변수가 하나만 있는데 어떻게 해야 할지 모르겠습니다!

formail제목 줄을 다시 쓰는 한 줄에 두 개의 서로 다른 변수를 삽입하려면 어떻게 해야 합니까 ?

답변1

개념적으로 대답은 간단합니다. $MATCH다른 변수에 복사하는 것입니다. 실제로 MATCH레시피당 하나만 얻을 수 있기 때문에 구현은 여전히 ​​약간 부족합니다 . 해결책은 중첩된 레시피를 사용하는 것입니다.

:0
* ^Subject:\/.+
{
    subj=$MATCH
    :0
    * ^TO_\/[^<>@ ]+@example\.com\>
    {
        user=$MATCH
        :0fhw
        * user ?? ()\/.+@example\.com
        | formail -I"Subject: [LIST] $MATCH $subj"
    }
}

\>가장 안쪽 접근 방식은 캡처된 변수의 끝에서 일치 항목을 잘라내는 것입니다. user이는 제목에 포함시키면 확실히 단순화될 수 있습니다.

에 대한 전체 경로를 하드코딩할 필요가 없도록 /usr/local/bin주의 해서 포함할 수 있습니다 .PATHformail

관련 정보