Автор Тема: Внешние скрипты и Sieve  (Прочитано 1603 раз)

Оффлайн graywolf

  • Давно тут
  • **
  • Сообщений: 47
Внешние скрипты и Sieve
« : 06.06.2018 11:53:07 »
Добрый день!
Понадобилось вот запускать внешний скрипт по приходу письма с определенного адреса. В скрипте, в том числе, сообщение дублируется в Telegram (через curl) или в jabber. С настройкой sieve разобрался, скрипт вызывается. Но никак не могу передать текст письма в вышеуказанные программы, просто ничего не получаю.
/etc/dovecot/conf.d/90-sieve.conf
plugin {
  sieve_extensions = +vnd.dovecot.execute
  sieve_plugins = sieve_extprograms
  sieve_execute_bin_dir = /etc/dovecot/sieve/execute
}

/home/admin/sieve/dovecot.orig.sieve
require ["body","fileinto","imap4flags","vnd.dovecot.execute","variables"];
if header :contains "from" "test@test.com"
{
if body :text :contains "test" { set "text" "${1}"; }
execute "test.sh" "${text}";
setflag "\\Seen";
fileinto "Trash";
stop;
}

Ну и, собственно, внешний скрипт
#!/bin/sh
# Параметры отправки сообщения
BotToken="***"
URL="https://api.telegram.org/bot$BotToken/sendMessage"
ChatID=***
Message="$1"

curl $URL -d parse_mode="HTML" -d chat_id=$ChatID -d text="$Message"

Вроде бы нигде не ошибся. Если не так, поправьте. Как передать текст письма в "телегу"?
Если просто вызвать, например, следующим образом:
./test.sh $(cat test.txt | | sed 'N;N;N;N;s/ /%20/g;s/\n/%0A/g')то получаю полный текст, проблем нет.

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 19 908
    • Домашняя страница
    • Email
Re: Внешние скрипты и Sieve
« Ответ #1 : 06.06.2018 18:43:02 »
Письмо не с stdin
приходит через конвейер (pipe)?
Андрей Черепанов (cas@)