접미사 가상 별칭 도메인이 정규식 가상 별칭 매핑과 일치합니다.

접미사 가상 별칭 도메인이 정규식 가상 별칭 매핑과 일치합니다.

Postfix(2.11.3)를 사용하여 모든 메일을 외부 주소로 리디렉션하고 싶습니다.

/etc/postfix/main.cf:

virtual_alias_maps = regexp:/etc/postfix/rewrite

/etc/postfix/rewrite:

/^.+$/ [email protected]

에 이메일을 보낼 때 [email protected]다음 오류가 발생했습니다.

[...] to=<[email protected]>, orig_to=<[email protected]> [...] status=bounced (User unknown in virtual alias table)

문서설명하다:

유효한 수신자 주소는 virtual_alias_maps 매개변수와 함께 나열됩니다. Postfix SMTP 서버는 "가상 별칭 테이블의 사용자를 알 수 없습니다"를 통해 잘못된 수신자를 거부합니다.

오류는 가상 별칭 도메인의 유효성 검사와 관련이 있는 것으로 밝혀졌습니다. virtual_alias_domains기본적으로 $virtual_alias_maps이를 다른 것으로 설정 (일치하지 않는 도메인으로 설정하거나 공백으로 남겨두기)하면 문제가 해결됩니다.

내가 찾은 또 다른 해결책하나의 대답으로정규식을 다른 형식으로 제공:

/^.+@.+$/ [email protected]

그래서 내 질문은 가상 별칭에 정규식 테이블을 사용할 때 별칭 도메인의 유효성 검사가 어떻게 작동합니까? 다른 값으로 설정하면 virtual_alias_domains문제가 해결되는 이유는 무엇입니까? 위의 두 가지 주소 매핑 방법의 동등한 모드 간의 차이점은 무엇입니까?

출력은 postconf -n다음과 같습니다

config_directory = /etc/postfix
inet_interfaces = loopback-only
inet_protocols = ipv4
mydestination =
myhostname = example.org
myorigin = $myhostname
virtual_alias_domains =
virtual_alias_maps = regexp:/etc/postfix/rewrite

답변1

[email protected]배달 해야 할 우편물이 있다고 가정해 보겠습니다 .

에 지정된 맵은 virtual_alias_domains도메인 부분( )을 키로 사용하여 조회되며 example.net가상 별칭 도메인인 경우 아무것도 반환하지 않을 것으로 예상됩니다. 그렇지 않으면 아무것도 반환되지 않습니다. 즉, 키가 정의되지 않아야 합니다. virtual_alias_maps지도를 조회하기 위한 키로 전체 주소( )를 사용하면 [email protected]재정의된 주소가 반환될 것으로 예상됩니다.

/etc/postfix/virtual이는 에서 설명한 간단한 해시 맵 처럼 두 조회 모두에 대해 하나의 맵 파일을 공유할 수 있음을 의미합니다.가상(5). Postfix( )의 기본 구성은 virtual_alias_domains = $virtual_alias_maps이러한 혼합 스타일의 지도를 가정합니다.

example.net OK
[email protected] [email protected]
[email protected] [email protected]

이러한 검색에 대한 중요한 규칙은 다음과 같습니다.

  • virtual_alias_maps재귀적으로 검색됩니다. 키와 동일한 주소를 반환하는 경우 해당 주소를 사용하세요.
  • 마지막으로 반환된 다시 작성된 주소가 virtual_alias_maps여전히 에 있는 경우 virtual_alias_domains검색은 실패한 것으로 간주됩니다( User unknown in virtual alias table). 이것은 명확하게 문서화되지 않은 것 같습니다.이 스레드.

따라서 첫 번째 정규식 map() 및 구성은 지도가 모든 항목과 일치하므로 문제가 있어 여전히 존재하고 반환됩니다./^.+$/ [email protected][email protected]virtual_alias_domains

virtual_alias_domainsmap()에 아무것도 지정하지 않거나 단일 도메인 문자열과 일치하지 않는 다른 정규식을 사용하면 이를 방지할 수 있습니다 ./^.+@.+$/ [email protected]

하지만 제 생각에는 둘 다 올바른 구성은 아니지만 직관적이지 않은 해결 방법입니다. 귀하의 목적에 더 나은 솔루션이 있을 것이라고 생각합니다.

관련 정보