SendMail .forward 文件不会将邮件传送到子文件夹

SendMail .forward 文件不会将邮件传送到子文件夹

我在 Debian 机器上使用 SendMail 和 Exim4 来发送邮件,运行了一段时间,没有出现任何问题。我一直在尝试使用 .forward 文件将电子邮件发送到收件箱的子文件夹,但一直无法令人满意地运行。

我的 .foward 文件如下所示:

# Exim filter
if error_message then finish endif

if $h_X-Spam-Status: CONTAINS "Yes"
     or
  $h_X-Spam-Flag: CONTAINS "Yes"
then
  save $home/Maildir/.Junk/
  finish
endif

我有一些规则将使用 $h_subject 或 $h_from 来过滤电子邮件。我使用以下命令测试这些规则是否有效:

/usr/sbin/sendmail -bf .forward < some_email_that_matches

我从输出中看到它将把文件传送到我定义的子文件夹中,该文件夹是存在的。我已将 .forward 文件的权限设置为 644。

但是,每当我尝试发送符合这些规则的电子邮件时,它都无法送达,而且似乎卡在邮件系统的某个地方。我不知道在哪里可以找到更多信息或系统上的错误消息,如果有人能给我指明正确的方向,我将不胜感激。

答案1

要查看正常发送的邮件发生了什么情况,请查看 /var/log/maillog(或 syslog 配置放置邮件日志的任何位置)。系统处理的每封邮件应该有一组行。如果测试邮件没有被退回,也没有出现在收件箱或您在过滤文件中指定的文件夹中,则 maillog 中应该有一些内容可以说明原因。获得该信息后,请更新问题。

答案2

事实证明我问了一个你们都无法回答的问题:)

其他不起作用的规则如下所示:

if $h_from: contains "Ebay"
then
  save $home/Maildir/.ebay
  finish
endif

但正如它指出的那样这个博客,我需要添加一个尾部斜杠,如下所示:

if $h_from: contains "Ebay"
then
  save $home/Maildir/.ebay/
  finish
endif

否则它就不起作用。啊!

相关内容