2013-07-17 37 views
2

我有一个postfix服务器和procmail已安装并正在运行。 问题是当我尝试将电子邮件的内容输出到文件时。procmail不会将电子邮件内容传送到文件

我有以下脚本: /var/log/user1/fooscript.sh

#!/bin/bash 
echo "Trying to get e-mail" > success.txt 
echo $1 >> success.txt 

/var/log/user1/.procmailrc

VERBOSE=off 
PMDIR=$HOME/.procmail 
LOGFILE=$PMDIR/procmail.log 
INCLUDERC=$PMDIR/rc.filters 

/无功/日志/ USER1 /.procmail/rc.filters

:0 
* ^From:(.*\<)?([email protected]\.com)\> 
| /var/log/user1/fooscript.sh 

发送电子邮件后,/var/log/user1/.procmail/rc.filters 包含:

From [email protected] Thu Jul 18 05:08:13 2013 
    Folder: /var/log/user1/fooscript.sh      513 

但成功的文件只显示:

Trying to get e-mail 
(empty line) 

我已经搭配chmod 777所有文件和目录,所以不要认为它是一个权限问题。

任何帮助将不胜感激。

+0

你为什么把未登陆'在/ var/log'文件吗? – tripleee

+0

chmod 777对任何事情都不是正确的答案。您应该立即撤消损坏或重新安装操作系统。 – tripleee

回答

3

您的脚本通过标准输入(STDIN)获取消息。尝试:

#!/bin/bash 
echo "Trying to get e-mail" > success.txt 
# append data read from STDIN to success.txt file 
cat >> success.txt 

BTW更复杂的脚本中使用自锁,以避免两个并行运行的脚本:

:0 w :fooscript.lock 
* ^From:(.*\<)?([email protected]\.com)\> 
| /var/log/user1/fooscript.sh 
+0

非常感谢!我不认为你已经改变了原来的脚本,由标准输入提示是非常有用的,现在它的作品。你介意在你的答案中编辑剧本吗?顺便说一句,或许你有一个想法,如果我想将电子邮件转换为C++可执行文件......应该立即在代码中进行还是将其作为参数传输? – Stasv

+0

@Stasv AFAIK你的'C++'程序将打开STDIN。在阅读你想要的东西之前,不要关闭它。 – AnFi

相关问题