이메일을 특정 이메일 계정에만 접미사 파이프로 연결

이메일을 특정 이메일 계정에만 접미사 파이프로 연결

이메일이 수신되면 스크립트를 실행하도록 postfix를 구성했습니다. postfix에서 이메일이 수신될 때마다 스크립트가 작동됩니다. 그러나 문제는 postfix의 액세스 파일에 추가한 하나의 계정이 아닌 모든 이메일 계정에서 트리거된다는 것입니다. 내 구성은 다음과 같습니다. master.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

그리고 여기 내main.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

여전히 모든 이메일은 robots@domain으로 전송되는 이메일이 아닌 해당 스크립트로 라우팅됩니다.

내가 뭐 놓친 거 없니? 구성을 위해 이 튜토리얼을 따랐습니다.

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

답변1

업데이트: 이에 대한 두 가지 접근 방식이 있음을 발견했습니다.

접근법 1

만들다Transport_maps:

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

이렇게 하면 robots@domain으로 전송될 모든 메일이 곧바로 후크로 이동하게 됩니다. 다른 모든 것은 정상적으로 처리됩니다.

수정하다main.cf추가하려면:

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으로 강제 전송되고 다른 모든 이메일은 전달될 수 있습니다.

~ 안에main.cf:

check_recipient_access = regexp:/etc/postfix/recipient_access

그리고 마침내master.cf:

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

하다~ 아니다지정 -o content_filter=webhook:dummy하면 모든 메시지의 라우팅이 변경됩니다.

관련 정보