Por que o postfix enviou uma notificação de devolução para um arquivo de spool local, quando a entrega para esse usuário foi desativada?

1

Minha configuração de postfix permite o correio através de vários local_recipient_maps. No entanto, a entrega para "proxy: unix: passwd.byname" é especificamente desativada . Isso normalmente impede a entrega para usuários unix locais:

$ 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

No entanto, esta manhã, notei um email enviado para o arquivo de spool de correio de dados www local. Olhando para dentro, vejo que:

  • Era uma mensagem de [email protected], enviada por um host diferente dentro de nossa rede, usando my.mail.host como o smarthost
  • Ele permaneceu na fila my.mail.host por vários dias ao tentar novas tentativas
  • Em seguida, ele retornou
  • A rejeição foi enviada para um arquivo de spool de correio "www-data" em my.mail.host

Então, minha pergunta é: por que isso aconteceu e como evitar que isso aconteça no futuro?

    
por EdwardTeach 22.11.2011 / 21:49

1 resposta

1

Suposição

Você disse

delivery to "proxy:unix:passwd.byname" is specifically disabled. This normally prevents delivery to local unix users.

Portanto, posso supor que você remove as partes proxy: unix: passwd.byname de local_recipient_maps . Por padrão, o valor desse parâmetro é

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

E você muda para

# postconf local_recipient_maps
local_recipient_maps = $alias_maps

Análise

Então, por que rejeitar o e-mail normal, mas o e-mail devolvido ainda está sendo processado?

Para responder, precisamos ver a visão geral da Visão geral da arquitetura do Postfix , especialmente quando o postfix recebe e-mail

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

O postfix consulta apenas local_recipient_maps quando verifica o email recebido via smtpd . Por quê? Porque as verificações foram realizadas quando o parâmetro smtpd_reject_unlisted_recipient value for 'yes' ou você definir reject_unlisted_recipient em smtpd _ * _ restrictions (observe a palavra smtpd no nome de ambos os parâmetros). Veja man postconf para detalhes do parâmetro. Essa verificação está ativada por padrão. Isso explica por que seu e-mail de teste foi rejeitado pelo postfix.

Bounce é um email especial na arquitetura postfix. Gerado internamente pelo postfix para informar o (não) relatório de status de entrega ao remetente. Ele flui através do postfix diretamente para a limpeza , ignorando smtpd . É por isso que www-data ainda recebe e-mails devolvidos.

Solução

Em vez de rejeitá-lo, você pode enviá-lo para blackhole com mailbox_transport_maps e discardar serviço.

Para isso, defina mailbox_transport_maps

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

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

Agora, sempre que www-data receber um email, ele será descartado silenciosamente.

    
por 03.01.2015 / 15:00