정의되지 않은 주소에 대한 접미사, 가상 별칭 및 catchall


8

Postfix 2.10.2에는 메일 주소를 로컬 사용자에게 할당하기 위해 여러 개의 도메인과 여러 개의 가상 별칭이있는 설정이 있습니다. catchall을 추가하지 않는 한 제대로 작동합니다.

가상 별칭을 사용하기 전에 다음과 같이 정의 된 catchall이있었습니다.

local_recipient_maps =
luser_relay = catchall

그러나 다른 도메인에서 메일 주소를 정렬해야하므로 가상 별칭을 사용해야했습니다.

이제 postfix.org 는 다음과 같이해야한다고 말합니다.

/etc/postfix/main.cf :

virtual_alias_domains = example.com
virtual_alias_maps = hash:/etc/postfix/virtual

/ etc / postfix / 가상 :

postmaster@example.com account1
info@example.com       account1
sales@example.com      account2
@example.com         catchall

그러나 그렇게하면 포괄 주소는 명시 적으로 정의되지 않은 주소로 메일 대신 모든 메일을 가져옵니다. 그 이유는 무엇이며 어떻게 변경합니까?

포스트 맵 가상을 수행하고 Postfix를 다시 시작했습니다. 로그에 오류가 없으며 전달을 포괄 주소로 기록합니다. 그리고 "mydestination 및 virtual_alias_domains에 도메인 example.com을 나열하지 마십시오"라는 경고가 있지만 그렇게하지 않았습니다! 나는 신비로운 지시조차하지 않습니다. (아래 구성에 하나가 있지만 NickW가 제안한 후에 ​​추가했습니다.)

내 완전한 conf는 다음과 같습니다.

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
broken_sasl_auth_clients = yes
config_directory = /etc/postfix
home_mailbox = Maildir/
inet_interfaces = all
inet_protocols = all
mailbox_command = /usr/lib/dovecot/deliver -c /etc/dovecot/dovecot.conf -m "${EXTENSION}"
mailbox_size_limit = 0
mydestination = $myhostname
myhostname = mydomain.com
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = /etc/mailname
readme_directory = no
recipient_delimiter = +
relayhost =
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_use_tls = yes
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_recipient_restrictions = reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_unauth_pipelining, permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_path = private/dovecot-auth
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sender_restrictions = reject_unknown_sender_domain
smtpd_tls_auth_only = yes
smtpd_tls_cert_file = /etc/dovecot/dovecot.pem
smtpd_tls_key_file = /etc/dovecot/private/dovecot.pem
smtpd_tls_mandatory_ciphers = medium
smtpd_tls_mandatory_protocols = SSLv3, TLSv1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes
tls_random_source = dev:/dev/urandom
virtual_alias_domains = $myhostname, myotherdomain.com
virtual_alias_maps = hash:/etc/postfix/virtual

답변:


4

가상 별칭에 모든 이메일 주소를 포함시키는 경우 작동합니다.

에서 main.cf:

 virtual_alias_maps = hash:/etc/postfix/virtual

에서 virtual:

user1@example.com           user1@example.com
user2@example.com           user2@example.com
...
catchall@example.com        catchall@example.com
@example.com                catchall@example.com

이 솔루션은 구현하기가 가장 쉽고 예상대로 작동합니다. 감사합니다!
EdwardTeach

1
참고 :의 최종 결과 s입니다 virtual_alias_maps.
FMCorz

3

그래서 나는 그것을 알아 냈습니다. 어떤 사람들은 catch-all이 가상 별칭 파일 위에 있어야한다고 제안했지만 이전에 시도했지만 도움이되지 않았습니다 (그러나 솔루션이 상당히 논리적이라는 것을 알았습니다).

효과가 있었던 것은 :

  1. 세트 mydestination=localhost(그렇지 않은 $myhostname)
  2. 가상 별명 파일 위에 catchall을 추가하십시오. @domain.com catchall-account@localhost
  3. 아래에 다른 모든 가상 별칭을 추가하십시오. contact@domain.com contact@localhost

이 예는 UNIX 사용자 이름이 있다고 가정 catchall-account하고 contact. contact@domain.com으로 보내는 메일은 연락 담당자에게 전달되고 다른 모든 메일은 범용 계정으로 전달됩니다.

어쩌면 이것이 모든 경우에 필요하지는 않지만, 특별한 경우에는 계정을 사용하여 일부 주소에 대한 메일을 저장하고 싶지만 해당 계정으로 직접 발송 된 메일은 모든 것을 처리해야합니다.

결국 Postfix가 가상 별칭을 통해 위에서 아래로 작동하지 않는 것처럼 보이며, 포괄 모두 특별한 우선 순위를 갖습니다. 누군가가 실제로이 행동을 설명 할 수있는 경우에 대비하여 추가 의견에 대해 기쁠 것입니다.


에서 postfix.org/postconf.5.html#virtual_mailbox_maps , 다음과 같은 문장이있다 : 그없는 지정된 도메인의 모든 사용자와 일치하는 "에 domain.tld @"조회 테이블에서의 왼쪽 편을 지정 " 특정 "user@domain.tld"항목. " -나는 그것이 virtual_alias_maps에서 비슷하다고 생각하므로 순서가 전혀 달라지지 않습니다.
Daniel Alder

0

을 설정 mydestination = $myhostname하고 호스트 이름이 main.cf에 구성되어 있는지 확인하십시오 (예 :) myhostname = mail.example.com.


그것은 아무것도 바뀌지 않았습니다. 경고는 여전히 존재하며 메시지는 여전히 잡을 것입니다.
Konzertheld

main.cf의 나머지 부분을 질문에 넣을 수 있습니까?
NickW
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.