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_recipient
smtpd_*_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-data
bekomme 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.