Postfix를 사용하여 'catch all' 및 'catch all 재정의'를 사용하여 모든 스레드를 검사했지만 여전히 내 문제에 대한 해결책을 얻을 수 있다고 생각합니다. 들어오는(유일한) smtp 서버가 있습니다 Postfix version 3.5.8
. 오픈 릴레이 virtual_alias_domains=static:yes
로 만들고 싶고 /etc/postfix/main.cf
. 그런 다음 수신자 도메인에 따라 이 메시지를 소수의 사용자에게 발송하고 싶습니다. 그래서 pcre를 사용하여 몇 가지 패턴을 만들었습니다 virtual_alias_maps = pcre:/etc/postfix/virtual
.
/1@test/ test
/2@test/ test2
/@test/ catchallfromtest
/@/ catchall
~와 함께/etc/postfix/aliases
test: "/var/mail/test.mail"
test2: "/var/mail/test2.mail"
catchallfromtest: "/var/mail/catchallfromtest.mail"
catchall: "/var/mail/catchall.mail"
내가 주석을 달면 /@/ catchall
이메일이 올바르게 발송되지만 그렇지 않으면 모든 이메일이 포괄 이메일로 이동됩니다. 나는 많은 아이디어를 시도했습니다 (다른 순서, 다른 db 유형, virtual_alias_map
일부 사용자의 경우 및 포괄의 경우 receive_bcc_maps를 사용하여 별도의 파일로 분할). luser_relay
하지만 작동하므로 $mydomain
패턴에서 제외하여 내 경우에는 작동하지 않습니다. 그리고 행 ( !//
))과 다양한 형태의 캐치올( //
, /.*@.*/
, 등)이 /^.*@.*&/
있습니다 . /.+@.+/
내가 그것을 테스트하려고 할 때
postmap -q "1@test" pcre:/etc/postfix/virtual
올바른 별칭을 반환하지만 이메일을 보내려고 하면 catchall로 이동합니다. 또 무엇을 시도해 볼 수 있나요? [문서][1]에서
Patterns are applied in the order as specified in the table, until a pattern is found that matches the input string.
따라서 첫 번째 패턴 일치 직후에 중지되어야 하지만 그렇지 않습니다. [1]:http://www.postfix.org/pcre_table.5.html