
説明
私は、受信メールを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 しようとします。
私が尋ねているのは
まず spamd ユーザーとして spamassassin にメールをリダイレクトし、その後出力を apache として php に送信する、もっと良い方法があるはずです。それとも、これは不可能なのでしょうか? これを行うより良い方法はありますか?
ありがとう。
答え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 に送り返して、適切に転送されることになります。
最初は混乱して、メールが自分自身に送信される無限ループになると思ったので、これを試しませんでした。