在收到的电子邮件上运行linux脚本

时间:2011-04-18 23:04:46

标签: python linux email aliases

我编写了一个小脚本,在维基百科上查找工作,然后将结果打印到命令行。我希望能够将该单词通过电子邮件发送到我的服务器,然后让我的服务器通过电子邮件将结果发回给我。

到目前为止,我有一个名为'wiki'的新用户,其中发送了电子邮件。我收到的电子邮件很好。在/ etc / aliases中,我将传入的电子邮件重定向到我写的脚本。

# See man 5 aliases for format
wiki: "|/home/wiki/scripts/wiki"

工作正常。

我的脚本可以从命令行查找,就像我输入

一样
$ ./wiki <whatever>

当我向wiki@mydomain.com发送电子邮件时,我收到了权限被拒绝的错误

我的wiki脚本权限是:

 -rwxr-xr-x 1 wiki wiki  427 2011-04-18 22:54 wiki

出了什么问题!我需要设置哪些权限? 任何帮助表示赞赏。

编辑(4/18/11 8:20 pm): 这是我的剧本。

#!/bin/bash

read MSG
echo $MSG >> "newfile"
FROM=$(echo "$MSG" | cut -d " " -f2)
DATA=$(echo "$MSG" | cut -d " " -f3)
if [ MSG ]
then
RTN=`nslookup -q=txt $DATA.wp.dg.cx | grep "text =" | cut -d"=" -f2`

echo $RTN | sendmail -s "wikipedia: '$DATA'" $FROM

else
echo  wilkipedia nslookup. Please supply a command line argument.
fi

2 个答案:

答案 0 :(得分:0)

根据您的邮件服务器(例如postfix),您可能需要将其配置为允许管道邮件。大多数情况下,使用〜/ .procmailrc是最简单的。

答案 1 :(得分:-1)

这就是我为解决问题所做的工作......

  1. 我废弃了我的bash脚本,并在python中编写了相同的函数。我使用python是因为它的电子邮件解析功能。我还通过一些字符串转义防护代码运行用户输入,以便我可以安全地将其移交给python的subprocess.popen()方法。

  2. 我试图将stdin写入本地文件,所以我可以看到解析文本的位置,但是邮件应用程序(邮件或后缀,不确定)没有写文件的权限 - Prob a好事到底。为了调试,我只是将原始stdin(电子邮件标题和所有内容)返回到一个字符串中,并通过电子邮件发回给自己,看看发生了什么。

  3. 我将/ etc / aliases设置为

    wiki: "|/home/wiki/scripts/wiki.py"

  4. wiki.py上的
  5. 权限是

    4 -rw-r--r-- 1 wiki mail 1902 2011-04-19 21:04 wiki.py

    这样邮件程序成功地将其移交给您的脚本。如果脚本中有错误并且没有任何内容通过电子邮件发送给您,您也可以检查“/var/log/mail.log”以获取输出。如果邮件到达脚本,但由于语法或错误而错误输出,您应该收到MAILER-DAEMON的电子邮件回复,说明它无法送达。

  6. 我没有使用procmail或有.procmailrc个文件。 /etc/aliases工作得很好。它将您的电子邮件传递给stdin流,并在python中尝试:

  7. extra="" while 1: line = sys.stdin.readline() if not line: break extra = extra + line.strip(" ")