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
/var/log/user1/.procmail/rc.filters
:0
* ^From:(.*\<)?(test@gmail\.com)\>
| /var/log/user1/fooscript.sh
После отправки электронного письма /var/log/user1/.procmail/rc.filters содержит:
From test@gmail.com Thu Jul 18 05:08:13 2013
Folder: /var/log/user1/fooscript.sh 513
но файл успеха показывает только:
Trying to get e-mail
(empty line)
У меня chmod 777 все файлы и каталоги, так что не думайте, что это проблема с разрешениями.
Любая помощь будет принята с благодарностью.
1 ответ
Решение
Ваш скрипт получает сообщение через стандартный ввод (STDIN). Пытаться:
#!/bin/bash
echo "Trying to get e-mail" > success.txt
# append data read from STDIN to success.txt file
cat >> success.txt
Кстати, для более сложных сценариев используйте пользовательскую блокировку, чтобы избежать одновременного запуска двух сценариев:
:0 w :fooscript.lock
* ^From:(.*\<)?(test@gmail\.com)\>
| /var/log/user1/fooscript.sh