{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "Копытов Иван: заметки с тегом вложение",
    "_rss_description": "Блог ленивого сисадмина",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": "",
    "_itunes_explicit": "",
    "home_page_url": "https:\/\/kini24.ru\/tags\/vlozhenie\/",
    "feed_url": "https:\/\/kini24.ru\/tags\/vlozhenie\/json\/",
    "icon": false,
    "authors": [
        {
            "name": "Копытов Иван",
            "url": "https:\/\/kini24.ru\/",
            "avatar": false
        }
    ],
    "items": [
        {
            "id": "277",
            "url": "https:\/\/kini24.ru\/all\/zamena-bolshih-vlozheniy-v-email-na-ssylku\/",
            "title": "Замена больших вложений в email на ссылку",
            "content_html": "<p>Устанавливаем MIMEDefang:<\/p>\n<pre class=\"e2-text-code\"><code class=\"bash\">apt update\napt install mimedefang -y<\/code><\/pre><p>Правим файл<i> \/etc\/default\/mimedefang<\/i>:<\/p>\n<pre class=\"e2-text-code\"><code class=\"ini\">SOCKET=\/var\/spool\/postfix\/mimedefang\/mimedefang.sock\nMD_ALLOW_GROUP_ACCESS=yes<\/code><\/pre><p>Добавляем пользователя <i>postfix<\/i> в группу <i>defang<\/i>:<\/p>\n<pre class=\"e2-text-code\"><code class=\"bash\">usermod -aG defang postfix<\/code><\/pre><p>Так как postfix работает в chroot-окружении, создаем папку для сокета mimedefang:<\/p>\n<pre class=\"e2-text-code\"><code class=\"bash\">mkdir \/var\/spool\/postfix\/mimedefang<\/code><\/pre><p>Правим<i> \/etc\/postfix\/main.cf<\/i>:<\/p>\n<pre class=\"e2-text-code\"><code class=\"ini\">milter_default_action = accept\nmilter_protocol = 6\nsmtpd_milters = unix:mimedefang\/mimedefang.sock\nnon_smtpd_milters = unix:mimedefang\/mimedefang.sock<\/code><\/pre><p>Теперь нужно добавить следующее в конец функции <i>filter<\/i> в файле<i> \/etc\/mail\/mimedefang-filter<\/i>:<\/p>\n<pre class=\"e2-text-code\"><code class=\"perl\"># Если файл больше указанного размера, он удаляется из письма,\n    # его копия остается на диске, а вместо него предоставляется ссылка, по которой его можно скачать.\n\n    # Максимальный размер вложения (например, 10MB)\n    my $MAX_ATTACHMENT_SIZE = 10 * 1024 * 1024;\n    # Директория для сохранения вложений\n    my $ATTACHMENTS_DIR = &quot;\/var\/mail\/attachments&quot;;\n    # URL, по которому будут доступны вложения\n    my $ATTACHMENTS_URL = &quot;https:\/\/mail.kini24.ru\/attachments&quot;;\n\n    # Создаем директорию, если её нет\n    mkdir $ATTACHMENTS_DIR unless -d $ATTACHMENTS_DIR;\n\n    $size = (stat($entity-&gt;bodyhandle-&gt;path))[7];\n    if ($size &gt; $MAX_ATTACHMENT_SIZE) {\n        md_graphdefang_log(&quot;The attached file $fname is too big, replaced with a link&quot;);\n        return action_replace_with_url($entity,\n            &quot;$ATTACHMENTS_DIR&quot;,\n            &quot;$ATTACHMENTS_URL&quot;,\n            &quot;Размер вложения превысил ограничения сервера, поэтому оно было удалено.\\n&quot; .\n            &quot;Вы можете скачать его по следующей ссылке:\\n\\n&quot; .\n            &quot;_URL_&quot;);\n    }<\/code><\/pre><p>В результате аыполнения функции <i>action_replace_with_url<\/i> в конец письма будет вставлен текст и ссылка для скачивания вложения, а сам файл бует сохранен в папку<i> \/var\/mail\/attachments<\/i>. Надо, кстати, покопаться и найти как вставлять ссылку в текст самого письма. Но пока что оставим как есть.<\/p>\n<p>У меня почтовый и веб-сервер находятся на разных виртуальных машинах, поэтому папку<i> \/var\/mail\/attachments<\/i> надо сделать общей. На почтовом сервере устанавливаем пакет сервера NFS:<\/p>\n<pre class=\"e2-text-code\"><code class=\"bash\">apt install nfs-kernel-server -y<\/code><\/pre><p>Открываем файл<i> \/etc\/exports<\/i> и вписываем в конец файла что-то вроде такого:<\/p>\n<pre class=\"e2-text-code\"><code class=\"plaintext\">\/var\/mail\/attachments 192.168.1.0\/24(rw,sync,no_subtree_check)<\/code><\/pre><p>И выполняем в консоли команду:<\/p>\n<pre class=\"e2-text-code\"><code class=\"bash\">exportfs -a<\/code><\/pre><p>Теперь переходим на веб-сервер и выполняем следующие команды:<\/p>\n<pre class=\"e2-text-code\"><code class=\"bash\">apt update\napt install nfs-common -y<\/code><\/pre><p>Открываем файл<i> \/etc\/fstab<\/i> и дописываем в конец:<\/p>\n<pre class=\"e2-text-code\"><code class=\"plaintext\">192.168.1.12:\/var\/mail\/attachments \/var\/www\/mail\/attachments nfs4 defaults 0 0<\/code><\/pre><p>где 192.168.1.12 — IP-адрес почтового сервера.<br \/>\nДальше выполняем команды:<\/p>\n<pre class=\"e2-text-code\"><code class=\"bash\">mkdir -p \/var\/www\/mail\/attachments\nchown -R www-data:www-data \/var\/www\/mail\/attachments\nmount -a<\/code><\/pre><p>И проверяем что папка смонтировалась:<\/p>\n<pre class=\"e2-text-code\"><code class=\"bash\">ls -l \/var\/www\/mail\/attachments<\/code><\/pre><p>После этого все вложения, которые были удалены из писем, должны стать доступны для скачивания.<\/p>\n",
            "date_published": "2025-03-31T13:45:17+07:00",
            "date_modified": "2025-03-31T13:45:06+07:00",
            "tags": [
                "debian",
                "linux",
                "mimedefang",
                "postfix",
                "вложение",
                "замена",
                "почта",
                "сервер",
                "ссылка"
            ],
            "_date_published_rfc2822": "Mon, 31 Mar 2025 13:45:17 +0700",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "277",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "91",
            "url": "https:\/\/kini24.ru\/all\/pochta-i-virusy-v-arhivah\/",
            "title": "Почта и вирусы в архивах",
            "content_html": "<p>Часто вирусные файлы приходят в виде тех же vbs скриптов, упакованных в архив. Я не буду говорить про другие форматы, их не так уж и много, но каждый из них может доставить кучу неприятностей. Особенно если это будет шифровальщик.<br \/>\nТак уж сложилось, что несмотря на все ухищрения, используя стандартные методы, нельзя заставить ClamAV проверять архивы на наличие файлов определенного типа. Он может только попытаться определить заражен ли тот или иной файл в архиве, но со скриптами у него явные проблемы. Скрипт по сути представляет собой обычный текстовый файл, поэтому найти в нем код вируса достаточно проблематично.<br \/>\nЧасть этого вопроса удалось решить, заставив postfix отбрасывать письма, в которые вложены файлы из «черного» списка. Но он не может работать с архивами, увы. Это был первый, так сказать этап, который успешно показал себя.<br \/>\nВторым этапом стал поиск файлов в архивах при помощи ClamAV. Оказывается, можно все-таки заставить его проверять архивы на наличие нужных файлов. Неслучайно копаясь в интернете, наткнулся на <a href=\"http:\/\/www.edigarev.net\/2016\/05\/clamsmtp.html\">эту вот замечательную статью<\/a>. Использовав информацию из нее, подкинул созданный файл в папку с антивирусными базами ClamAV и перегрузил его. Никаких исправлений в файлы конфигураций вносить не пришлось, он сразу его подхватил. Далее я отправил письмо, полученное утром, и содержащее vbs-скрипт в архиве .7z через этот сервер. Хотел было поймать процесс обработки письма, но не успел. Впрочем, через минуту мне на почту упало сообщение от антивируса, что письмо обработано, найден архив с «вредным» файлом и что письмо было заблокировано. Это было все, чего я добивался.<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">Virus name: rules_block_7z_vbs.UNOFFICIAL\nSender: *****@*****.ru\nRecipient(s): *****@*****.ru\n\nQuarantined to: \/var\/tmp\/virus.yHPWqV<\/code><\/pre><p>Сам файл с нужными определениями состоит из строк вида<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">rules_block_exe:CL_TYPE_MAIL:*:\\.[Ee][Xx][Ee]$:*:*:*:*:*:*<\/code><\/pre><p>Здесь самыми интересными для нас являются три поля: имя правила, тип правила и расширение файла. Имя и тип задаются первыми двумя параметрами, разделенными двоеточием. Затем идет имя файла с расширением в виде regexp-строки. Оставшиеся параметры оставляем без изменений. Расширение файла указывается в обоих регистрах.<\/p>\n",
            "date_published": "2017-09-19T14:18:25+07:00",
            "date_modified": "2017-09-20T07:20:20+07:00",
            "tags": [
                "clamav",
                "postfix",
                "архив",
                "база",
                "вирус",
                "вложение",
                "правило",
                "проверка",
                "сервер",
                "файл"
            ],
            "_date_published_rfc2822": "Tue, 19 Sep 2017 14:18:25 +0700",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "91",
            "_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)"
}