Я написал небольшую небольшую script, которая ищет работу над wikipedia, а затем печатает результат в командной строке. Я хочу, чтобы иметь возможность отправить это слово на мой сервер, а затем вернуть мне мой сервер.
До сих пор у меня появился новый пользователь с именем wiki, куда отправляются электронные письма. Я получаю почту в порядке. В /etc/aliases я перенаправил входящие письма на мой script, я написал.
# See man 5 aliases for format
wiki: "|/home/wiki/scripts/wiki"
Это прекрасно работает.
Мой script работает поиск из командной строки, как будто я набрал
$ ./wiki <whatever>
Я получаю разрешение отклоненных ошибок, когда я отправил электронное письмо на [email protected]
Мои разрешения wiki script:
-rwxr-xr-x 1 wiki wiki 427 2011-04-18 22:54 wiki
Что не так! Какие разрешения мне нужно установить? Любая помощь приветствуется.
EDIT (18.04.11 8:20): Это мой script.
#!/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
Это то, что я сделал, чтобы позаботиться о моей проблеме...
Я сломал свой bash script и написал ту же функцию в python. Я использовал python из-за его функциональности синтаксического анализа электронной почты. Я также запускал пользовательский ввод через некоторый код предотвращения перехода строки, чтобы я мог безопасно передать его методу python subprocess.popen()
.
Я пытался записать stdin в локальный файл, чтобы я мог видеть, где разбирать текст, однако почтовое приложение (почта или постфикс, не уверен) не имеет прав на запись файлов - Prob a хорошо в конце. Чтобы отлаживать, я просто вернул исходный stdin (заголовок электронной почты и все) в строке и отправил его по электронной почте мне, чтобы узнать, что происходит.
Я установил /etc/aliases, чтобы читать
wiki: "|/home/wiki/scripts/wiki.py"
Разрешения на wiki.py
4 -rw-r--r-- 1 wiki mail 1902 2011-04-19 21:04 wiki.py
и таким образом почтовая программа успешно передает ее на ваш script. Вы также можете проверить "/var/log/mail.log" для вывода, если у вас есть ошибки в вашем script, и ничто не будет отправлено вам по электронной почте. Если почта достигла script, но была исправлена ошибка из-за синтаксиса или ошибки, вы должны получить ответ от MAILER-DAEMON по электронной почте, в котором говорится, что он не доступен.
Я не использовал procmail
или имел файл .procmailrc
. /etc/aliases
работал отлично. Он передает ваше сообщение электронной почты в поток stdin, а в python попробуйте следующее:
extra=""
while 1:
line = sys.stdin.readline()
if not line:
break
extra = extra + line.strip(" ")
В зависимости от вашего почтового сервера (например, постфикса) вам может потребоваться настроить его, чтобы разрешить отправку почты. Чаще всего использование ~/.procmailrc проще всего.