{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "Копытов Иван: заметки с тегом sieve",
    "_rss_description": "Блог ленивого сисадмина",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": "",
    "_itunes_explicit": "",
    "home_page_url": "https:\/\/kini24.ru\/tags\/sieve\/",
    "feed_url": "https:\/\/kini24.ru\/tags\/sieve\/json\/",
    "icon": false,
    "authors": [
        {
            "name": "Копытов Иван",
            "url": "https:\/\/kini24.ru\/",
            "avatar": false
        }
    ],
    "items": [
        {
            "id": "197",
            "url": "https:\/\/kini24.ru\/all\/vypolnenie-vneshnih-skriptov-v-sieve\/",
            "title": "Выполнение внешних скриптов в Sieve",
            "content_html": "<p>Понадобилось недавно каким-то образом запускать внешний скрипт по приходу определенного письма. Начал поиски как это сделать. В Postfix это можно сделать, используя файл aliases, но мне этот способ не подходил, потому что он подразумевает приход письма на определенный почтовый адрес. С Dovecot сильно не разбирался, но вот информацию по Sieve нашел. Немного времени спустя у меня был наполовину рабочий вариант. Наполовину потому, что выполняемая во внешнем скрипте команда напрочь отказалась принимать отправляемые ей данные. Пришлось немного подправить скрипт в самом Sieve, чтобы получить желаемый результат.<br \/>\nВсе оказалось очень просто. Для начала нужно включить доступ к плагину <i>vnd.dovecot.execute<\/i>. Для этого открываем файл с настройками Sieve \/<i>etc\/dovecot\/conf.d\/90-sieve.conf<\/i> и вносим следующие изменения:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">plugin {\n  sieve_extensions = +vnd.dovecot.execute\n  sieve_plugins = sieve_extprograms\n  sieve_execute_bin_dir = \/etc\/dovecot\/sieve\/execute\n}<\/code><\/pre><p>Все остальные параметры нам не нужны.<br \/>\nВ первой строчке включаем доступ к плагину для пользователей. Можно использовать параметр <i>sieve_global_extensions<\/i>, в таком случае плагин будет работать глобально. Но глобальный скрипт работает ТОЛЬКО если у пользователя нет своего файла скрипта Sieve. Пользователей на моем сервере очень мало, поэтому такой вариант мне не подходит.<br \/>\nВо второй строке мы разрешаем использование плагинов как таковых.<br \/>\nИ, наконец, в третьей строке указывает папку, в которой будут находиться эти самые внешние скрипты. Доступ к этой папке для Dovecot, конечно, нужно обеспечить. Подозреваю, что папку можно и не указывать, а в скрипте Sieve просто указать полный путь к запускаемой программе, но проверять лень.<br \/>\nТеперь остается только написать правило обработки входящих писем. Что-то вроде такого:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\"># rule:[Test rule]\nif allof (header :contains &quot;from&quot; &quot;test@example.com&quot;, header :contains &quot;subject&quot; &quot;Prikaz 66&quot;)\n{\n        execute &quot;test.sh&quot;;\n\tfileinto &quot;Trash&quot;;\n\tstop;\n}<\/code><\/pre><p>Получив письмо от отправителя <i>test@example.com<\/i> с темой <i>«Prikaz 66»<\/i> Sieve запустит на выполнение скрипт \/<i>etc\/dovecot\/sieve\/execute\/test.sh<\/i>, затем удалит письмо в корзину и завершит обработку писем.<br \/>\nЗнаю, что информации по этой теме в интернете достаточно. Но б<b>о<\/b>льшая часть из нее, как водится, на английском и содержит много воды. Хотелось сделать небольшую выдержку на более привычном русском языке.<\/p>\n",
            "date_published": "2018-06-05T14:59:52+07:00",
            "date_modified": "2018-06-05T14:59:34+07:00",
            "tags": [
                "dovecot",
                "sieve",
                "внешний",
                "запуск",
                "почта",
                "программа",
                "сервер",
                "скрипт"
            ],
            "_date_published_rfc2822": "Tue, 05 Jun 2018 14:59:52 +0700",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "197",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": []
            }
        }
    ],
    "_e2_version": 4134,
    "_e2_ua_string": "Aegea 11.3 (v4134)"
}