解释

解释

解释

我一直使用如下管道将传入邮件传送到我的 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 以按应有的方式进行传输。

起初我很困惑,没有尝试这个,因为我认为这最终会导致邮件无限循环发送给自己

相关内容