Warum hat Postfix eine Bounce-Benachrichtigung an eine lokale Spool-Datei übermittelt, wenn die Zustellung an diesen Benutzer deaktiviert wurde?

Warum hat Postfix eine Bounce-Benachrichtigung an eine lokale Spool-Datei übermittelt, wenn die Zustellung an diesen Benutzer deaktiviert wurde?

Meine Postfix-Konfiguration erlaubt E-Mails über mehrere local_recipient_maps. Allerdings ist die Zustellung an "proxy:unix:passwd.byname" spezielldeaktiviert. Dies verhindert normalerweise die Zustellung an lokale Unix-Benutzer:

$ 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

Heute Morgen ist mir jedoch aufgefallen, dass eine E-Mail an die lokale WWW-Daten-Mail-Spool-Datei gesendet wurde. Als ich hineinschaue, sehe ich Folgendes:

  • Es war eine Nachrichtaus [email geschützt], gesendet von einem anderen Host in unserem Netzwerk, der my.mail.host als Smarthost verwendet
  • Es blieb mehrere Tage lang in der Warteschlange von my.mail.host, während erneute Versuche unternommen wurden
  • Es prallte dann ab
  • Der Bounce wurde an eine "www-data" Mail-Spool-Datei auf my.mail.host gesendet.

Meine Frage ist also:Warum ist das passiert und wie kann ich verhindern, dass es in Zukunft passiert?

Antwort1

Annahme

Du sagtest

Die Zustellung an "proxy:unix:passwd.byname" ist ausdrücklich deaktiviert. Dies verhindert normalerweise die Zustellung an lokale Unix-Benutzer.

Ich kann also davon ausgehen, dass Sie Teile von proxy:unix:passwd.byname entfernen local_recipient_maps. Standardmäßig ist der Wert dieses Parameters

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

Und du änderst es in

# postconf local_recipient_maps
local_recipient_maps = $alias_maps

Analyse

Warum wird normale E-Mail abgelehnt, zurückgewiesene E-Mails kommen aber trotzdem durch?

Um diese Frage zu beantworten, müssen wir das große Ganze sehen:Übersicht zur Postfix-Architektur, insbesondere wenn Postfix E-Mails empfängt

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

Postfix prüft nur local_recipient_maps, ob es per empfangene E-Mails überprüft smtpd. Warum? Weil die Überprüfungen durchgeführt wurden, wenn der Parameterwert smtpd_reject_unlisted_recipient„yes“ lautete oder Sie reject_unlisted_recipientsmtpd_*_restrictions festgelegt haben (beachten Sie das Wort smtpd in beiden Parameternamen). SieheMann postconffür Details zum Parameter. Diese Prüfung ist standardmäßig aktiviert. Das erklärt, warum Ihre Test-E-Mail von Postfix abgelehnt wurde.

Prallenist eine spezielle E-Mail in der Postfix-Architektur. Sie wird intern von Postfix generiert, um den Absender über den (Nicht-)Zustellungsstatus zu informieren. Sie fließtüber Postfix direkt zur Bereinigung, Umgehen smtpd. Deshalb www-databekomme ich immer noch zurückgewiesene E-Mails.

Lösung

Anstatt es abzulehnen, können Sie es an Blackhole senden mitPostfachtransportkartenUndverwerfenService.

Legen Sie hierzu mailbox_transport_maps fest

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

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

Wenn www-data jetzt eine E-Mail empfängt, wird diese stillschweigend verworfen.

verwandte Informationen