<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Копытов Иван: заметки с тегом sieve</title>
<link>https://kini24.ru/tags/sieve/</link>
<description>Блог ленивого сисадмина</description>
<author></author>
<language>ru</language>
<generator>Aegea 11.3 (v4134)</generator>

<itunes:subtitle>Блог ленивого сисадмина</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>Выполнение внешних скриптов в Sieve</title>
<guid isPermaLink="false">197</guid>
<link>https://kini24.ru/all/vypolnenie-vneshnih-skriptov-v-sieve/</link>
<pubDate>Tue, 05 Jun 2018 14:59:52 +0700</pubDate>
<author></author>
<comments>https://kini24.ru/all/vypolnenie-vneshnih-skriptov-v-sieve/</comments>
<description>
&lt;p&gt;Понадобилось недавно каким-то образом запускать внешний скрипт по приходу определенного письма. Начал поиски как это сделать. В Postfix это можно сделать, используя файл aliases, но мне этот способ не подходил, потому что он подразумевает приход письма на определенный почтовый адрес. С Dovecot сильно не разбирался, но вот информацию по Sieve нашел. Немного времени спустя у меня был наполовину рабочий вариант. Наполовину потому, что выполняемая во внешнем скрипте команда напрочь отказалась принимать отправляемые ей данные. Пришлось немного подправить скрипт в самом Sieve, чтобы получить желаемый результат.&lt;br /&gt;
Все оказалось очень просто. Для начала нужно включить доступ к плагину &lt;i&gt;vnd.dovecot.execute&lt;/i&gt;. Для этого открываем файл с настройками Sieve /&lt;i&gt;etc/dovecot/conf.d/90-sieve.conf&lt;/i&gt; и вносим следующие изменения:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;plugin {
  sieve_extensions = +vnd.dovecot.execute
  sieve_plugins = sieve_extprograms
  sieve_execute_bin_dir = /etc/dovecot/sieve/execute
}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Все остальные параметры нам не нужны.&lt;br /&gt;
В первой строчке включаем доступ к плагину для пользователей. Можно использовать параметр &lt;i&gt;sieve_global_extensions&lt;/i&gt;, в таком случае плагин будет работать глобально. Но глобальный скрипт работает ТОЛЬКО если у пользователя нет своего файла скрипта Sieve. Пользователей на моем сервере очень мало, поэтому такой вариант мне не подходит.&lt;br /&gt;
Во второй строке мы разрешаем использование плагинов как таковых.&lt;br /&gt;
И, наконец, в третьей строке указывает папку, в которой будут находиться эти самые внешние скрипты. Доступ к этой папке для Dovecot, конечно, нужно обеспечить. Подозреваю, что папку можно и не указывать, а в скрипте Sieve просто указать полный путь к запускаемой программе, но проверять лень.&lt;br /&gt;
Теперь остается только написать правило обработки входящих писем. Что-то вроде такого:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# rule:[Test rule]
if allof (header :contains &amp;quot;from&amp;quot; &amp;quot;test@example.com&amp;quot;, header :contains &amp;quot;subject&amp;quot; &amp;quot;Prikaz 66&amp;quot;)
{
        execute &amp;quot;test.sh&amp;quot;;
fileinto &amp;quot;Trash&amp;quot;;
stop;
}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Получив письмо от отправителя &lt;i&gt;test@example.com&lt;/i&gt; с темой &lt;i&gt;«Prikaz 66»&lt;/i&gt; Sieve запустит на выполнение скрипт /&lt;i&gt;etc/dovecot/sieve/execute/test.sh&lt;/i&gt;, затем удалит письмо в корзину и завершит обработку писем.&lt;br /&gt;
Знаю, что информации по этой теме в интернете достаточно. Но б&lt;b&gt;о&lt;/b&gt;льшая часть из нее, как водится, на английском и содержит много воды. Хотелось сделать небольшую выдержку на более привычном русском языке.&lt;/p&gt;
</description>
</item>


</channel>
</rss>