説明

説明

説明

私は、受信メールを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 に送り返して、適切に転送されることになります。

最初は混乱して、メールが自分自身に送信される無限ループになると思ったので、これを試しませんでした。

関連情報