2008-11-23 282 views
0

我一直在试图解决这个数周...procmail的烦恼

我的目标是寻找我的收件箱以下信息:使用三个文件为我做这个

Hello 
Hi 
Hey 

林。在我的$ HOME第一,.forward的文件

"|IFS=' '&&exec usr/bin/procmail||exit 75 #username" 

而这两个都在我的〜/ .procmail目录

.procmailrc 

VERBOSE=off 
MAILDIR=$HOME/Mail 
PMDIR=$HOME/.procmail 
DEFAULT=/var/spool/mail/username 
LOGFILE=$PMDIR/log 
INCLUDERC=$PMDIR/general.rc 
#end of .procmailrc 

最后是规则文件:general.rc

:0 
* ^From:.*[email protected] 
* ^Subject:.*hello 
$HOME/Mail/Hello 

应该发生的事情是,所有这三个文件一起工作,复制和移动包含hello模式的邮件。为了安全起见,它还会寻找某个人的地址。然后,当这些模式匹配时,它将坚持它发现并创建指定的路径;如果它不存在。

但它没有这样做。 当我完成在emacs中编辑这些文件后,vi,然后保存它,它会自动工作吗?还是我需要编译它?

如果我这样做,则.procmailrc文件可能需要(如果不是全部) '的Shell =/bin/sh的'

不,我没有尝试...


无,我欠发达的设计是处理传入的邮件..

我测试过了,通过发送电子邮件给我自己。

我想,是我的General.RC文件没有编码写入。因为在我给自己发送一封电子邮件之后,它应该复制并将其移动到指定的目录。


毫无疑问,我犯了这些错误,我编辑了所有这三个文件的时间。

没有显示在我的日志文件...

我固定的一切,我知道我的存在,在/ usr /斌/ procmail的,因为我用whereis看到它的路径。

但我的测试仍然失败。我不断发送自己的电子邮件和检查我的邮件文件夹,看看我的“你好”文件中的字节是否增加了。

我怎样才能让日志工作? 是general.rc错了吗?

+0

在'〜/ .forward`中,在`usr/bin/procmail`:`/ usr ...`的开头添加一个`/`。 – 2015-05-04 06:34:04

回答

3

Procmail处理邮件进来,而不是当它坐在你的邮箱。如果您想处理邮箱中已有的邮件,则必须通过procmail再次传递它,方法是将其“反弹”给自己,或者通过procmail将其传递。在命令行中的电子邮件客户端像狗,如果你想处理电子邮件,你已经拥有了你会做前者用“B”命令,后者通过键入|procmail

2

,你将需要:

  1. 退出任何邮件客户端
  2. 搬走你目前的收件箱(MV在/ var/spool/mail中/用户名/tmp/mail.username)
  3. FORMAIL +1 -ds procmail的< /tmp/mail.username
+1

这将重新传送您已收到的邮件。这可能根本不是你想要的。 – tripleee 2011-09-09 07:48:10

2
  1. 您的〜.forward文件在usr之前缺少'/'。另外,你可以像这样保持简短;

    “| **/** USR /斌/ procmail的”

  2. 把你的.procmailrc文件HOME目录
  3. 下设置您的MAILDIR后,只写 “你好” 作为general.rc邮箱名。也可以在配方开头使用“:0:”启用锁定,所有交付都必须锁定邮箱文件!
  4. 确保您在服务器上的/ usr/bin/procmail上安装了procmail。
  5. 确保您的MAILDIR中存在“Hello”文件。
  6. 检查日志文件
+0

实际上`.forward`文件很好,除了`usr`之前缺少的斜线。这就是你应该如何为Sendmail编写`.forward`文件的原因。即使您的MTA不是Sendmail,也应该可以正常工作。 – tripleee 2011-09-09 07:49:39

1

我觉得你的任何其他调试之前,首要关注的是验证的procmail正在对传入的电子邮件运行。

我的建议是让你的.procmailrc文件的文件看起来像这样(没有别的)

VERBOSE=on 
LOGFILE=/tmp/procmail.log 

:0 fhbw 
| sed "s/^Subject:/& --procmail working--/" 

然后向自己发送的电子邮件。

您应该在/tmp/procmail.log中获得一个日志文件,并且您的电子邮件应该到达您的邮箱,修改主题行以包含“--procmail working--”。

如果这不起作用,那么procmail没有被调用,你应该编辑你的问题来显示你的.forward文件的当前内容。

如果可行,那么问题出在您的.procmailrc或general.rc文件的内容上。您应该编辑您的问题以显示这两个文件的当前内容。

1

如果您只想在磁盘上找到其中一条主题行的邮件,我会在您的收件箱中推荐fgrep