このユーザーへの配信が無効になっているのに、なぜ 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 は、 経由で受信したメールをチェックした場合にのみ参照します。なぜでしょうか? パラメータ値が 'yes' の場合、または smtpd_*_restrictions で設定したsmtpd場合にチェックが実行されたためです (両方のパラメータ名に smtpd という単語が含まれていることに注意してください)。smtpd_reject_unlisted_recipientreject_unlisted_recipient男のpostconfパラメータの詳細については、このチェックはデフォルトで有効になっています。これが、テスト メールが postfix によって拒否される理由です。

跳ねる、弾むはPostfixアーキテクチャの特別な電子メールです。Postfixによって内部的に生成され、送信者に配送状況(未配送)を通知します。postfixを介して直接クリーンアップする、バイパスしますsmtpd。そのため、www-dataバウンスメールが引き続き届きます。

解決

拒否する代わりに、ブラックホールに送ることもできますメールボックストランスポートマップそして破棄サービス。

これを行うには、mailbox_transport_mapsを設定します

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

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

これで、www-data が電子メールを受信するたびに、その電子メールは黙って破棄されるようになります。

関連情報