Объяснение

Объяснение

Объяснение

Я использовал канал следующим образом для передачи входящей почты в мое приложение 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 попытается изменить недавно добавленные файлы.

Что я спрашиваю

Должен быть лучший способ перенаправить почту сначала в 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 для дальнейшей транспортировки.

Сначала я был в замешательстве и не пробовал это сделать, потому что думал, что это приведет к бесконечному циклу отправки писем самому себе.

Связанный контент