Postfix は特定のメールアカウントにのみメールをパイプします

Postfix は特定のメールアカウントにのみメールをパイプします

メールを受信したときにスクリプトを実行するように postfix を設定しました。スクリプトは、postfix でメールを受信するたびにトリガーされます。ただし、問題は、postfix のアクセス ファイルに追加した 1 つのアカウントだけではなく、すべてのメール アカウントでトリガーされることです。これが私の設定です。 マスター.cf

myhook unix - n n - - pipe flags=F user=www-data argv=/var/www/public_html/production/hook/hook.php ${sender} ${size} ${recipient}

smtp      inet  n       -       -       -       -       smtpd -o content_filter=myhook:dummy

そしてこれが私のメイン.cfファイル:

smtpd_recipient_restrictions =check_recipient_access hash:/etc/postfix/access, permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination

私のアクセス ファイルの内容は次のとおりです。

robot@domain FILTER myhook:dummy

上記の変更を行った後、次を実行しました:

postmap access
postfix reload

それでも、robot@domainに送信されたメールだけではなく、すべてのメールがそのスクリプトにルーティングされます。

何か見逃しましたか? 設定についてはこのチュートリアルに従いました:

https://thecodingmachine.io/triggering-a-php-script-when-your-postfix-server-receives-a-mail

答え1

更新: これには2つのアプローチがあることがわかりました

アプローチ1

作成する交通マップ:

/^robot@domain/ myhook:dummy /.*/ :

これにより、robot@domain 宛てのメールはすべてフックに直接送られるようになります。その他のメールは通常どおり処理されます。

修正するメイン.cfたす:

transport_maps = regexp:/etc/postfix/transport_maps

忘れずに走っpostmap /etc/postfix/transport_mapspostfix reload

アプローチ2

制限: ローカルトランスポート経由で robot@domain に配信されるメールはフィルタリングされません

私はこれを使って受信者アクセスファイルは次のようになります (正規表現構文を使用していることに注意してください):

/^robot@domain$/ FILTER myhook:dummy /.*/ OK

これにより、robot@domain 宛のメールがフィルターを通過するようになり、他のすべてのメールが配信されるようになります。

メイン.cf:

check_recipient_access = regexp:/etc/postfix/recipient_access

そして最後にマスター.cf:

smtp inet n - y - - smtpd -o smtpd_recipient_restrictions=$check_recipient_access

するない-o content_filter=webhook:dummyすべてのメッセージのルーティングが変更されるため、指定してください。

関連情報