나는 다음을 수행하고 싶습니다 :
- 사용자가 다음 주소로 이메일을 보냅니다.
1234@domain
1234@domain
다음 주소로 보낸 이메일로 인식된 Procmailticket+1234@domain
- Procmail 레시피는 티켓 번호를 처리하고 이메일을 버그 추적기로 전달합니다.
어디용감한나의 현재 장애물이다.
이것은 개념 증명입니다. 이 시점에서 ticket+1234@domain
이메일이 올바르게 전달되도록 하려면 사용자는 티켓을 에 보내야 합니다 .
SUBJECT=`/usr/bin/formail -zx "Subject:"`
:0fhw
* To.*\/([0-9]+)@domain
* MATCH ?? ^\/[0-9]+
|/usr/bin/formail -I "Subject: $SUBJECT (Case $MATCH)"
:0
!tickets@bugtracker
일부 배경:
티켓 처리를 위해 주소가 생성됩니다 ticket@domain,
. 현재 사용자는 으로 전송되며 ticket+####@domain
Procmail 레시피는 $MATCH
버그 추적기 항목과 관련된 티켓 번호를 가져와 그에 따라 전달하는 데 사용됩니다. 이것은 작동합니다.
내가 하고 싶은 것:
자동 완성 오류를 방지합니다(사용자가 ticket+
수신자 필드에 입력하면 잘못된 티켓 번호가 자동 완성됩니다). 이러한 오류를 방지하려면 사용자는 다음 주소로 이메일을 보내야 합니다.####@domain
대신에의 ticket+####@domain
.
중요한 질문:
Procmail을 사용하여 에서 보낸 이메일을 필터링하고 ####@domain
에서 보낸 이메일로 처리할 수 있습니까 ticket+####@domain
?.
답변1
귀하의 질문은 다소 혼란스러워 보이지만 마지막 줄을 !ticket+$MATCH@domain
.
.^TO_
^To:.*
:0
* ^TO_\/[0-9]+@domain
* MATCH ?? ^\/[0-9]+
{
SUBJECT=`/usr/bin/formail -zx "Subject:"`
:0fhw
|/usr/bin/formail -I "Subject: $SUBJECT (Case $MATCH)"
:0
!ticket+$MATCH@domain
}
작업과 두 작업을 조건에 넣기 위해 중괄호를 추가하여 설정되지 않은 Subject:
항목을 가져오거나 전달하는 불필요한 작업을 수행하지 않도록 했습니다.MATCH
(주변 괄호는 [0-9]+
유용한 기능을 하지 않으므로 제외했습니다. PATH
하드코딩된 경로가 아닌 올바른 경로가 있는지 확인하세요 formail
.)
수신자 정보에 대한 헤더 구문 분석은 다음과 같은 이유로 완전히 신뢰할 수 없습니다.이 메시지는 다음과 같이 보낼 수 있습니다.Bcc:
. 다시 말하지만 이는 수신자 시스템이 헤더가 아닌 수신자 정보에 대한 봉투를 올바르게 확인한다고 가정합니다(물론 전달하기 전에 수신자 헤더를 바꾸는 것도 추가하기 어렵지 않습니다).