![SendMail .forward 文件不会将邮件传送到子文件夹](https://linux22.com/image/802213/SendMail%20.forward%20%E6%96%87%E4%BB%B6%E4%B8%8D%E4%BC%9A%E5%B0%86%E9%82%AE%E4%BB%B6%E4%BC%A0%E9%80%81%E5%88%B0%E5%AD%90%E6%96%87%E4%BB%B6%E5%A4%B9.png)
我在 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
否则它就不起作用。啊!