Exim : 로컬 네트워크 외부로 메일을 보낼 때 보낸 사람 주소 변경


8

사용자는 메일을 보내고받을 수있는 사이트에 exim 설정이 작동합니다. 이메일을 사용하여 로컬 네트워크 외부의 주소로 경고 및 오류를 보내도록 서버를 설정하려고합니다.

문제는:

메일을 보내는 프로그램은 메일을 실행하는 사용자 이름과 서버의 로컬 호스트 이름을 사용하여 메일을 보냅니다. 이로 인해 메일은 myapp@myserver.mydomain 형식의 발신자가됩니다. Exim은 이러한 메일을 ISP의 SMTP 서버로 전송합니다.이 메일은 불법이거나 확인할 수없는 발신자 (내부 주소)가있는 메일을 거부합니다.

다음과 같은 경우 발신자를 다시 쓰도록 exim을 구성해야한다고 생각합니다.

  • 발신자의 도메인이 로컬 네트워크에 있습니다.
  • 수신자의 도메인이 로컬 네트워크 외부에 있음

exim 구성에서 일종의 다시 쓰기 설정을 시도했지만 제대로 작동하지 않았습니다. 나는 내가 시도한 것을 보여 주었지만, 마지막으로 사이트를 방문했을 때 시간이 부족하여 시도한 모든 변경 사항을 잃어 버린 원래 버전으로 되돌려 야했습니다.

답변:


9
begin rewrite
myapp@myserver.mydomain   legal.user@myserver.mydomain   SFfrs

플래그는 다음과 같은 의미를 갖습니다.

  1. S-SMTP 시간에 모두 다시 작성합니다. 이는 다음에 오는 모든 플래그가 적용되는 데이터가 들어 오면 즉시 완료되고 나중에 지연되지 않음을 의미합니다.
  2. F-봉투를 필드에서 다시 씁니다.
  3. f-From : 헤더 필드를 다시 작성하십시오.
  4. r-답장 : 헤더 필드를 다시 작성하십시오.
  5. s-Sender-To : 헤더 필드를 다시 작성하십시오.

메시지 재 작성에 대한 자세한 내용은 Exim 사양의 31 장을 읽으십시오.


1
를이 있어야한다 : 이것은 내가 제외하고, 업무에있어 어떻게 ^같은 규칙의 시작 부분에 Sexcepts regexp와
에사 Varemo

1
들 "해야한다 Sender:"헤더없는 " Sender-To:"(그리고 편집에 너무 작은 변화 포스트입니다)
게르트 반 덴 베르그

11

파일 /etc/email-addresses이 문제를 처리해야합니다. 이것은 Exim 배포판의 표준 부분입니다. 이메일을 보내는 각 로컬 사용자마다 하나의 레코드를 구성해야합니다.

/etc/email-addresses좋아 하는 줄을보십시오 :

 myapp:   donotreply@example.com

MX 서버에서 다음과 같은 별칭을 추가하십시오.

 donotreply:    :blackhole:

Reply-to:수신자가 메시지에 회신 할 수 있도록 헤더를 사용하십시오 .

파일 /etc/email-addresses은 다음 재 작성 코드로 사용 rewrite되며 구성 파일 섹션의 시작 부분에 있어야합니다.

*@+local_domains "${lookup{${local_part}}lsearch{/etc/email-addresses}\
                  {$value}fail}" Ffrs

/etc/email-addresses서버에 없습니다. 방금 만들 수 있습니까, 아니면 뭔가 빠졌음을 나타 냅니까?
Esa Varemo

@EsaVaremo 구성 파일을 email-addresses확인하거나 구성 파일에서 다시 쓰기 섹션을 확인하십시오. 배포판에서 구성되지 않았을 수 있습니다.
BillThor

나는 시도 grep, locate그리고 몇 가지를 찾았다 man-pages,하지만 아무것도 찾지 못했습니다. 파일을 정의해야합니까 exim.conf?
Esa Varemo

@EsaVaremo 내 응답 끝에있는 줄은의 다시 쓰기 섹션에 있어야합니다 exim.conf. 누락 된 경우 추가하십시오. 변수에 local_domains도메인이 포함되어 있는지 확인하십시오 .
BillThor

마지막으로 언급 한 후 잠시 편집 내용을 확인했습니다. 어떤 이유로 든 나는 그것을 작동시키지 못해서 시간이 없어서 다른 대답과 함께 갔다. 나는 이것이 옳다는 것을 의심하지 않으며,
아마도

1

/etc/email-addresses사용자 이름 당 하나의 이메일 주소 만 연결하면됩니다 . 그러나 사용자가 여러 주소로 이메일을 보내야하는 경우 /etc/email-addresses매번 수정해야 하며 잘못된 주소를 사용해야합니다.

다른 방법은 exim4명령과 해당 -f옵션을 사용하여 이메일을 보내는 것입니다.

$ cat email|/usr/sbin/exim4 -f myapp@example.com recipient@example.com

참고 즉, 위해 할 -f작업에 대한 옵션, 당신도 사용자가 수출입의 신뢰할 수있는 사용자의 수 또는 허용 된 신뢰할 수없는 보낸 사람으로 그를 받아 수출입 할 필요가있다.

필자의 경우 다음과 같은 와일드 카드 덕분에 후자가 기본값이었습니다 /etc/exim4/conf.d/main/02_exim4-config_options .

untrusted_set_sender = *

다른 해결책은 다음 줄을 추가하는 것입니다 /etc/exim4/conf.d/main/00_local_settings(exim의 분할 구성을 가정하고 아직 존재하지 않는 경우 작성).

MAIN_TRUSTED_USERS = yourusername

두 옵션 모두 exim 구성을 다시로드해야합니다. 데비안에서 :

# dpkg-reconfigure exim4-config
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.