Postfix와 Dovecot이 포함된 Debian 서버가 있습니다. 최근에는 Dovecot에 Sieve를 설치하고 이메일 전달에 LMTP를 사용하도록 Postfix를 구성했습니다. 그 시점부터 일반 사용자 이름은 구분 기호와 함께 사용할 수 없습니다. 구분 기호는 aliases-db가 관련된 경우에만 해결되는 것 같습니다. 로그는 다음과 같이 말합니다.
User doesn't exist: [email protected] (in reply to RCPT TO command)
다음은 기본 설정과 몇 가지 예입니다.
username: doe
delimiter: -
[email protected] -> works
[email protected] -> works
[email protected] -> unknown user
[email protected] -> works
/etc/aliases
:
john.doe: doe
/etc/postfix/main.cf
:
recipient_delimiter = -
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mailbox_transport = lmtp:unix:private/dovecot-lmtp
# All options: propagate_unmatched_extensions = canonical, virtual, alias, forward, include
propagate_unmatched_extensions =
답변1
여기서 문제는 Postfix가 아니라 Dovecot에 있습니다. Dovecot은 Postfix에 대해 모르기 때문에 recipient_delimiter
사용자 쿼리가 다음과 같다고 가정해야 합니다.[이메일 보호됨]실제로 의미하는 것은 ""example.com" 도메인에서 "doe-test" 사용자를 찾습니다"입니다.
다행히 해결 방법은 간단합니다.Postfix에 말한 내용을 Dovecot에 알리기:
- 열려 있는
/etc/dovecot/conf.d/15-lda.conf
- 포함된 줄의 주석 처리를 해제 하고 다른 것으로
#recipient_delimiter = +
바꿉니다 ( 귀하의 경우).+
-
- 이익!
Postfix 주소 전달 및 /etc/aliases 관련:
이것이 설정에서 작동하는 이유 [email protected]
는 별칭 조회가 Postfix 자체에서 수행되기 때문입니다.앞으로메시지 전달 여부를 결정합니다(예: LMTP는 이 단계에서 전혀 관련이 없습니다).
그래서 일어나는 일은 다음과 같습니다:
[email protected]
Postfix는 데몬을 사용하여 메시지를 수신smtpd
하고 메시지 대기열에 넣습니다.- postfix
qmgr
데몬은 메시지 처리를 예약합니다. qmgr
구문 분석 메시지 대상 사용trivial-rewrite
주문하다- 여기에서 주소 구문 분석 및 조회가 수행되므로 수신자 구분 기호가 처음으로 사용됩니다.
- 특히 Postfix는 별칭 테이블에서 다음 조회를 수행합니다.
[email protected]
그리고john.doe-test
(원래 주소)[email protected]
및john.doe
(주소 확장자가 없는 주소)- (사용된 주소와 구성에 따라 다른 것이 있을 수 있습니다.)
- 조회가 성공하면 새 대상 주소가 반환되고 메시지는 다시 큐에 배치됩니다.
- 결국 메시지는 (어떤 식으로든) 배달 준비가 된 것으로 표시되며(반송되더라도 이는 단지 특별한 배달 유형일 뿐입니다...)
qmgr
적절한 명령이 해당 배달을 수행하도록 예약됩니다(예:lmtp
) – 메시지와 최종 배달 주소를 전달합니다(이 경우[email protected]
).- 전달에 Postfix를 사용하는 경우
lmtp
실제 LMTP 데몬(Dovecot)에 연결이 설정되고 LMTP 프로토콜을 사용하여 메시지(최종 전달 주소 포함)가 전달됩니다.
- 전달에 Postfix를 사용하는 경우
- Dovecot의 LMTP 데몬은 전체 재작성 프로세스에 대해 아무것도 모르고
[email protected]
수신한 최종 배달 주소( )를 기반으로만 메시지 전달을 시도합니다.
이제 이 상황을 고려하면 [email protected]
해당 주소에 대한 별칭 테이블 조회가 결코 성공하지 못하므로 전달 주소가 다시 작성되지 않는다는 것을 알 수 있습니다. 따라서 Postfix는 결국 [email protected]
LMTP를 사용하여 메시지를 전달하려고 시도합니다.
Postfix는 LMTP를 사용하여 전달을 시도하기 전에 주소 확장자를 삭제해야 하지 않습니까?
아마도, 하지만아니요그것을 버리면 엄청난 이점을 얻을 수 있습니다. Dovecot은 다음과 같은 일을 할 수 있습니다.알다주소 확장에 관해 이것은 별로 유용해 보이지 않을 수도 있지만 Dovecot 측에서 주소 확장을 처리하면 다음과 같은 몇 가지 멋진 기능이 가능합니다.Sieve를 사용하여 이메일을 IMAP 하위 폴더에 자동으로 배치.