Postfix에서 발신자 주소를 "logged-in-user@example.org"로 설정하는 방법은 무엇입니까?


15

SMTP AUTH (포트 587의 STARTTLS)를 사용하여 Postfix 서버를 설정했습니다. 모든 사용자는 "example.org"도메인에 있습니다. 발신자 주소를 "logged-in-user@example.org"로 설정하고 싶습니다.

나는 이것이 main.cf 옵션으로 달성 할 수 있다는 것을 배웠다.

smtpd_sender_restrictions = reject_sender_login_mismatch, ...
smtpd_sender_login_maps = hash:/etc/postfix/smtpd_sender_login_maps

login_maps 파일을 다음과 같이 사용하십시오.

a@example.org a
b@example.org b
c@example.org c
...

( SMPT AUTH를 사용하여 발신자 주소 스푸핑 차단 참조 )하지만 새 사용자가있을 때마다 login_maps 파일을 편집해야합니다. 유연한 매핑이 필요하지 않습니다. 항상 "logged-in-user@example.org"여야합니다. 더 쉬운 옵션이 있습니까?

답변:


14

먼저, 명령을 입력하고 그 안에 postconf -m줄을 찾아 Postfix 설치가 pcre를 지원하는지 확인 pcre하십시오. pcre 지원이 확인되면 다음과 같이 할 수 있습니다.

/etc/postfix/login_maps.pcre:

/^(.*)@example\.org$/   ${1}

에서 main.cf:

smtpd_sender_login_maps = pcre:/etc/postfix/login_maps.pcre

이것은 잘 작동합니다.


이것은 완벽 해요. 정확히 내가 찾던 것!
Chris Lercher

3
Ubuntu 사용자의 경우으로 postfix pcre를 얻을 수 있습니다 sudo apt-get install postfix-pcre. 아마도 이것이 가장 분명했을 것입니다.
NeilMonday

정규식 또는 참조 $myhostname변수 에서 도메인을 생략 할 수있는 방법은 없습니까? 여기에 당신은 ... 후위는 이메일의 사용자 부분에 의해 조회 테이블을 검색 할 수있는 것을 볼 수 있습니다
제이미 Hablutzel

나는 당신이 '.'를 백 슬래시 탈출하고 싶다고 믿는다. 도메인 이름에 문자가 있으므로 리터럴 일치로 해석됩니다. /^(.*)@example\.org$/
Arnon

그렇지 않으면 "test @ exampleXorg"및 "test@example.org"와 일치하며 이는 의도 된 동작이 아닐 수 있습니다.
Arnon

6

다른 답변에 언급 된 정규식은 이메일 주소의 사용자 부분과 일치합니다 ( login-in-user @ example.org) . 다음은 몇 가지 추가 정보입니다.

전체 이메일 주소를 사용자 이름으로 사용하려면 다음 정규식을 사용하십시오 (예 : /etc/postfix/login_map .

/^(.*)$/   ${1}

즉, 사용자 이름은 항상 전체 이메일 주소 ( login-user@example.org )입니다. 기존의 다른 사용자 이름은 해당 주소에서 보낼 수 없으며 매번 추가 Postfix 구성 파일을 업데이트 할 필요가 없습니다. 사용자를 추가하십시오.

여러 도메인이 구성된 서버에서 사용될 수 있습니다. 사용자 john.doe@example.com 은 해당 주소에서만 보낼 수 있지만 john.doe@example.org (다른 사용자와 이메일, 다른 사람) 는 보낼 수 없습니다 . 사용자 이름 john.doe 는 모호합니다.

또한 구성에 따라이 파일을 가리키는 smtpd_sender_login_maps 설정이 master.cf 대신 master.cf에있을 수 있습니다. 공식 Dovecot 문서에는 다음과 같은 예가 있습니다. (SASL / 제출을 사용하는 경우).

submission inet n - n - - smtpd
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth
  -o smtpd_sasl_security_options=noanonymous
  -o smtpd_sasl_local_domain=$myhostname
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o smtpd_sender_login_maps=hash:/etc/postfix/virtual
  -o smtpd_sender_restrictions=reject_sender_login_mismatch
  -o smtpd_recipient_restrictions=reject_non_fqdn_recipient,reject_unknown_recipient_domain,permit_sasl_authenticated,reject

이 예에서는 올바른 파일을 가리키고 형식으로 정규식 또는 (더 나은) pcre를 사용하도록 설정을 조정해야합니다. 특히 "가상"이라는 파일이 이미 다른 목적으로 사용 된 경우 (예 : : 공식 Postfix 예제에 표시된 virtual_alias_maps의 경우 ) 로그인 매핑에 다른 파일을 사용해야합니다.

에서:

smtpd_sender_login_maps=hash:/etc/postfix/virtual

에:

smtpd_sender_login_maps=pcre:/etc/postfix/login_map

0

http://www.akadia.com/services/postfix_uce.html 과 같이 헤더에 regexp 조합을 사용할 수 있습니까 ? 그런 다음 [*@example.org]와 같은 regexp와 결합하여 example.org에서 보낸 사람 만 확보 할 수 있습니다.


여기서 "regexp :"를 사용할 수 있다고 가정 해 봅시다. 사용자 "a"가 "a@example.org"로 보낼 수 있지만 "b@example.org"가 아닌 정규식을 어떻게 지정할 수 있습니까?
Chris Lercher

@sonstabo 구성 샘플을 포함하면 좋을 것입니다
Jaime Hablutzel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.