Explicação

Explicação

Explicação

Tenho usado um canal da seguinte maneira para canalizar mensagens recebidas para meu aplicativo laravel, mas primeiro verifique se há spam. O seguinte está sendo usado como um transporte virtual

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}

Mas, na verdade, o spamc deve ser executado com o usuário spamd, mas se eu fizer isso, o apache não poderá armazenar o arquivo de e-mail conforme necessário, pois esses arquivos são de propriedade do apache e o laravel tentará chown os arquivos recém-adicionados.

O que estou perguntando

Deve haver uma maneira melhor de redirecionar o e-mail primeiro para spamassassin como usuário spamd e depois enviar a saída para php como apache. Ou isso simplesmente não é possível? Alguma maneira melhor de fazer isso?

Obrigado.

Responder1

Encontrei sucesso usando um canal separado para smtp, como

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}

Isso significa que apenas as mensagens recebidas de fora são enviadas para o spamc e, em seguida, o spamc as envia de volta ao postfix para serem transportadas como deveriam.

No começo fiquei confuso e não tentei fazer isso porque pensei que acabaria sendo um loop interminável de envio de e-mail para si mesmo

informação relacionada