Postfix 仅将电子邮件发送到特定的电子邮件帐户

Postfix 仅将电子邮件发送到特定的电子邮件帐户

我已将 postfix 配置为在收到电子邮件时运行脚本。只要在 postfix 上收到电子邮件,就会触发该脚本。但问题是它会在所有电子邮件帐户上触发,而不是仅在我在 postfix 的访问文件中添加的一个帐户上触发。以下是我的配置: 主配置文件

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

仍然所有的电子邮件都被路由到该脚本,而不仅仅是发送到 robot@domain 的电子邮件

我错过什么了吗?我已按照本教程进行配置:

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

答案1

更新:我发现有两种方法可以解决这个问题

方法 1

创造运输地图

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

这将强制所有发往 robot@domain 的邮件直接进入钩子。其他邮件则照常处理。

调整主配置文件加上:

transport_maps = regexp:/etc/postfix/transport_maps

别忘了postmap /etc/postfix/transport_maps跑步postfix reload

方法 2

限制:通过本地传输传递到 robot@domain 的邮件将不会被过滤

我通过使用收件人访问像这样的文件(注意我使用的是正则表达式语法):

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

这将强制发送至 robot@domain 的电子邮件通过过滤器,并允许传递所有其他电子邮件。

主配置文件

check_recipient_access = regexp:/etc/postfix/recipient_access

最后主配置文件

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

不是指定-o content_filter=webhook:dummy,因为这会改变所有消息的路由。

相关内容