Postfix 僅將電子郵件傳送至某些電子郵件帳戶

Postfix 僅將電子郵件傳送至某些電子郵件帳戶

我已將 postfix 設定為在收到電子郵件時執行腳本。每當 postfix 收到電子郵件時,就會觸發該腳本。然而問題是它是在所有電子郵件帳戶上觸發的,而不是僅在我在 postfix 的存取文件中新增的一個帳戶上觸發的。這是我的配置: 大師.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

這是我的主文件文件:

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

仍然所有電子郵件都被路由到該腳本,而不僅僅是那些發送到 robots@domain 的電子郵件

我錯過了什麼?我已經按照本教學進行配置:

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

答案1

更新:我發現有兩種方法可以解決這個問題

方法一

創造交通地圖

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

這會強制任何發送到 robots@domain 的郵件直接進入鉤子。其他任何事情都按正常方式處理。

調整主文件加上:

transport_maps = regexp:/etc/postfix/transport_maps

不要忘記postmap /etc/postfix/transport_maps跑步postfix reload

方法2

限制:透過本機傳輸傳送至 robots@domain 的郵件將不會被過濾

我通過使用一個來讓它工作收件者存取權限像這樣的檔案(注意我使用的是正規表示式語法):

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

這將強制電子郵件透過過濾器發送至 robots@domain,並允許發送所有其他電子郵件。

主文件

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,因為這會更改所有訊息的路由。

相關內容