exim은 하나의 라우터에 대해서만 봉투를 다시 작성합니다.

exim은 하나의 라우터에 대해서만 봉투를 다시 작성합니다.

라우터에 headers_add를 추가할 수 있지만 라우터 내에서 또는 실제로 라우터에 의해 트리거된 동일한 조건을 사용하여 어디서나 SMTP From(일명 Envelope-From)을 변경할 수 있는 방법이 없습니다.

매우 적은 exim "별칭" 유형 목록 확장의 Postman 동작을 에뮬레이트해야 합니다.

예: 누군가 나에게 이메일을 보내는 경우:[이메일 보호됨]주소는 리디렉션 라우터에 의해 부분적으로 처리됩니다.그때야SMTP From을 로컬로 다시 작성하시겠습니까?[이메일 보호됨]

우체부가 물건을 처리하는 방식과 비슷합니다. 주된 이유는 다음 단계 메일 게이트웨이의 SPF와 외부 사용자가 보낸 메일입니다.

조건부 재작성 규칙을 시도했지만 솔직히 말해서 이전에 이러한 작업을 수행한 적이 없어서 막혔습니다.

매우 감사합니다,

답변1

라우터의 봉투 발신자를 재정의하려면 해당 라우터에서 "errors_to" 작업을 사용하세요.

errors_to = [email protected]

http://www.exim.org/exim-html-current/doc/html/spec_html/ch-generic_options_for_routers.html 부분적으로는 다음과 같이 말합니다.

error_to가 설정된 주소가 궁극적으로 SMTP를 통해 전달되는 경우 해당 전달에 대한 봉투 발신자는 error_to 값이므로 전달 경로의 다른 MTA에서 생성된 바운스도 그곳으로 전송됩니다.

답변2

가장 간단한 접근 방식은 아마도 스크립트/바이너리 파이프라인을 사용하여 임의의 변환을 수행하는 것입니다.

begin routers
pass2script:
  driver    = accept
  transport = myscript
  condition = ## every distinction you need ##  

교통수단:

begin transports
myscript:
  driver  = pipe
  command = /path/to/script 

stdin헤더, 빈 줄, 본문을 포함한 전체 메시지가 스크립트/바이너리 로 전달됩니다 . 스크립트를 읽고 계속한 후에는 변환된 메시지를 로컬로 다시 제출하는 명령을 stdin실행해야 합니다 . sendmail -t제가 생각할 수 있는 가장 간단한 스크립트는 다음 스크립트입니다.

#!/bin/sh

cat /dev/stdin \
| sed '1 s/[email protected]/[email protected]/' \
| sendmail -t

####

exim수정된 메시지가 수신되며 작업은 평소대로 진행됩니다. 라우팅 루프가 생성되지 않고 메시지가 스크립트에 계속해서 전달되지 않는지 확인해야 합니다.

exim또한 사용자에게 스크립트, 특히 래핑된 명령을 실행할 수 있는 충분한 권한이 있는지 확인해야 합니다 sendmail -t. 아마도 sudo규칙을 올바르게 설정 해야 할 것입니다 .

관련 정보