이 사용자에 대한 전달이 비활성화되었을 때 Postfix가 로컬 스풀 파일에 반송 알림을 전달한 이유는 무엇입니까?

이 사용자에 대한 전달이 비활성화되었을 때 Postfix가 로컬 스풀 파일에 반송 알림을 전달한 이유는 무엇입니까?

내 postfix 구성은 여러 local_recipient_maps를 통한 메일을 허용합니다. 그러나 "proxy:unix:passwd.byname"으로의 전달은 구체적으로장애가 있는. 이는 일반적으로 로컬 Unix 사용자에게 전달되는 것을 방지합니다.

$ getent passwd | grep www-data
www-data:x:33:33:www-data:/var/www:/bin/sh
$ nc localhost 25
220 my.mail.host ESMTP Postfix
helo localhost
250 my.mail.host
mail from:[email protected]
250 2.1.0 Ok
rcpt to:[email protected]
550 5.1.1 <[email protected]>: Recipient address rejected: User unknown in local recipient table
rcpt to:www-data
550 5.1.1 <www-data>: Recipient address rejected: User unknown in local recipient table

그러나 오늘 아침에는 로컬 www-data 메일 스풀 파일로 이메일이 전달되는 것을 발견했습니다. 내부를 살펴보면 다음과 같습니다.

  • 메시지였어요~에서 [이메일 보호됨], my.mail.host를 스마트 호스트로 사용하여 네트워크 내의 다른 호스트에서 전송
  • 재시도를 시도하는 동안 며칠 동안 my.mail.host 대기열에 남아 있었습니다.
  • 그러다가 튕겨져 나갔어
  • 반송 메일은 my.mail.host의 "www-data" 메일 스풀 파일로 전달되었습니다.

그래서 내 질문은 다음과 같습니다왜 이런 일이 발생했으며 앞으로 이런 일이 발생하지 않도록 하려면 어떻게 해야 합니까?

답변1

추정

당신은 말했다

"proxy:unix:passwd.byname"에 대한 전달은 특별히 비활성화되었습니다. 이는 일반적으로 로컬 Unix 사용자에게 전달되는 것을 방지합니다.

따라서 에서 Proxy:unix:passwd.byname 부분을 제거했다고 가정할 수 있습니다 local_recipient_maps. 기본적으로 이 매개변수의 값은 다음과 같습니다.

# postconf -d local_recipient_maps
local_recipient_maps = proxy:unix:passwd.byname $alias_maps

그리고 당신은 그것을

# postconf local_recipient_maps
local_recipient_maps = $alias_maps

분석

그러면 왜 일반 메일은 거부되는데 반송 메일은 계속 통과하는 걸까요?

이에 답하려면, 우리는 큰 그림을 볼 필요가 있습니다.Postfix 아키텍처 개요, 특히 postfix가 이메일을 받을 때

                            trivial-
                           rewrite(8)
Network ->  smtpd(8)           |  ^    
                       \       v  |
Network ->  qmqpd(8)    ->  cleanup(8)  ->  incoming
                       /
            pickup(8)   <-  maildrop
                                ^
                                |
Local   ->  sendmail(1) ->  postdrop(1)

local_recipient_mapsPostfix는 를 통해 수신된 이메일을 확인한 경우 에만 문의합니다 smtpd. 왜? 매개변수 smtpd_reject_unlisted_recipient값이 'yes'이거나 smtpd_*_restrictions에 설정된 경우 검사가 수행되었기 때문입니다 reject_unlisted_recipient(두 매개변수 이름 모두 smtpd라는 단어에 유의). 보다남자 사후 회의매개변수에 대한 자세한 내용은 이 검사는 기본적으로 활성화되어 있습니다. 테스트 이메일이 postfix에 의해 거부된 이유가 설명됩니다.

되튐postfix 아키텍처의 특수 이메일입니다. (비)배달 상태 보고서를 보낸 사람에게 알리기 위해 postfix에 의해 내부적으로 생성됩니다. 흐른다postfix를 통해 직접 정리, 우회 smtpd. 그래서 www-data여전히 반송 이메일을 받는 이유입니다.

해결책

거부하는 대신 블랙홀로 보낼 수 있습니다.Mailbox_transport_maps그리고버리다서비스.

이렇게 하려면 Mailbox_transport_maps를 설정하세요.

#main.cf
mailbox_transport_maps = hash:/etc/postfix/wwwdata-blackhole

#/etc/postfix/wwwdata-blackhole
www-data   discard:silently

이제 www-data가 이메일을 받을 때마다 자동으로 삭제됩니다.

관련 정보