我编写了一个小脚本,在维基百科上查找工作,然后将结果打印到命令行。我希望能够将该单词通过电子邮件发送到我的服务器,然后让我的服务器通过电子邮件将结果发回给我。
到目前为止,我有一个名为'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
答案 0 :(得分:0)
根据您的邮件服务器(例如postfix),您可能需要将其配置为允许管道邮件。大多数情况下,使用〜/ .procmailrc是最简单的。
答案 1 :(得分:-1)
这就是我为解决问题所做的工作......
我废弃了我的bash脚本,并在python中编写了相同的函数。我使用python是因为它的电子邮件解析功能。我还通过一些字符串转义防护代码运行用户输入,以便我可以安全地将其移交给python的subprocess.popen()
方法。
我试图将stdin写入本地文件,所以我可以看到解析文本的位置,但是邮件应用程序(邮件或后缀,不确定)没有写文件的权限 - Prob a好事到底。为了调试,我只是将原始stdin(电子邮件标题和所有内容)返回到一个字符串中,并通过电子邮件发回给自己,看看发生了什么。
我将/ etc / aliases设置为
wiki: "|/home/wiki/scripts/wiki.py"
权限是
4 -rw-r--r-- 1 wiki mail 1902 2011-04-19 21:04 wiki.py
这样邮件程序成功地将其移交给您的脚本。如果脚本中有错误并且没有任何内容通过电子邮件发送给您,您也可以检查“/var/log/mail.log”以获取输出。如果邮件到达脚本,但由于语法或错误而错误输出,您应该收到MAILER-DAEMON的电子邮件回复,说明它无法送达。
我没有使用procmail
或有.procmailrc
个文件。 /etc/aliases
工作得很好。它将您的电子邮件传递给stdin流,并在python中尝试:
extra=""
while 1:
line = sys.stdin.readline()
if not line:
break
extra = extra + line.strip(" ")