
解釋
我一直在使用以下管道將傳入郵件傳輸到我的 laravel 應用程序,但首先檢查是否有垃圾郵件。以下被用作虛擬傳輸
myhook unix - n n - - pipe
flags=F user=apache argv=/usr/bin/spamc -e /usr/bin/php -f /var/www/laravel/artisan mail:incoming ${sender} ${size} ${recipient}
但實際上, spamc 應該與 spamd 用戶一起運行,但如果我這樣做,那麼 apache 就無法根據需要存儲郵件文件,因為這些文件歸 apache 所有,並且 laravel 將嘗試 chown 新添加的文件。
我在問什麼
一定有更好的方法,首先將郵件重定向到 spamassassin 作為 spamd 用戶,然後將輸出發送到 php 作為 apache。還是這是不可能的?有更好的方法來做到這一點嗎?
謝謝。
答案1
我發現使用單獨的 smtp 管道取得了成功,例如
smtp inet n - n - - smtpd
-o content_filter=spamassassin
# ...
spamassassin unix - n n - - pipe
user=spamd argv=/usr/bin/spamc -f -e
/usr/sbin/sendmail -oi -f ${sender} ${recipient}
myhook unix - n n - - pipe
flags=F user=apache argv=/usr/bin/php -f /var/www/laravel/artisan mail:incoming ${sender} ${size} ${recipient}
這意味著只有來自外部的傳入郵件才會發送到 spamc,然後 spamc 將其發送回 postfix 以按其應有的方式進行傳輸。
起初我很困惑,沒有嘗試這個,因為我認為這會導致郵件發送給自身的無限循環