<?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>Копытов Иван: заметки с тегом ссылка</title>
<link>https://kini24.ru/tags/ssylka/</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>Замена больших вложений в email на ссылку</title>
<guid isPermaLink="false">277</guid>
<link>https://kini24.ru/all/zamena-bolshih-vlozheniy-v-email-na-ssylku/</link>
<pubDate>Mon, 31 Mar 2025 13:45:17 +0700</pubDate>
<author></author>
<comments>https://kini24.ru/all/zamena-bolshih-vlozheniy-v-email-na-ssylku/</comments>
<description>
&lt;p&gt;Устанавливаем MIMEDefang:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="bash"&gt;apt update
apt install mimedefang -y&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Правим файл&lt;i&gt; /etc/default/mimedefang&lt;/i&gt;:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="ini"&gt;SOCKET=/var/spool/postfix/mimedefang/mimedefang.sock
MD_ALLOW_GROUP_ACCESS=yes&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Добавляем пользователя &lt;i&gt;postfix&lt;/i&gt; в группу &lt;i&gt;defang&lt;/i&gt;:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="bash"&gt;usermod -aG defang postfix&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Так как postfix работает в chroot-окружении, создаем папку для сокета mimedefang:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="bash"&gt;mkdir /var/spool/postfix/mimedefang&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Правим&lt;i&gt; /etc/postfix/main.cf&lt;/i&gt;:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="ini"&gt;milter_default_action = accept
milter_protocol = 6
smtpd_milters = unix:mimedefang/mimedefang.sock
non_smtpd_milters = unix:mimedefang/mimedefang.sock&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Теперь нужно добавить следующее в конец функции &lt;i&gt;filter&lt;/i&gt; в файле&lt;i&gt; /etc/mail/mimedefang-filter&lt;/i&gt;:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="perl"&gt;# Если файл больше указанного размера, он удаляется из письма,
    # его копия остается на диске, а вместо него предоставляется ссылка, по которой его можно скачать.

    # Максимальный размер вложения (например, 10MB)
    my $MAX_ATTACHMENT_SIZE = 10 * 1024 * 1024;
    # Директория для сохранения вложений
    my $ATTACHMENTS_DIR = &amp;quot;/var/mail/attachments&amp;quot;;
    # URL, по которому будут доступны вложения
    my $ATTACHMENTS_URL = &amp;quot;https://mail.kini24.ru/attachments&amp;quot;;

    # Создаем директорию, если её нет
    mkdir $ATTACHMENTS_DIR unless -d $ATTACHMENTS_DIR;

    $size = (stat($entity-&amp;gt;bodyhandle-&amp;gt;path))[7];
    if ($size &amp;gt; $MAX_ATTACHMENT_SIZE) {
        md_graphdefang_log(&amp;quot;The attached file $fname is too big, replaced with a link&amp;quot;);
        return action_replace_with_url($entity,
            &amp;quot;$ATTACHMENTS_DIR&amp;quot;,
            &amp;quot;$ATTACHMENTS_URL&amp;quot;,
            &amp;quot;Размер вложения превысил ограничения сервера, поэтому оно было удалено.\n&amp;quot; .
            &amp;quot;Вы можете скачать его по следующей ссылке:\n\n&amp;quot; .
            &amp;quot;_URL_&amp;quot;);
    }&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;В результате аыполнения функции &lt;i&gt;action_replace_with_url&lt;/i&gt; в конец письма будет вставлен текст и ссылка для скачивания вложения, а сам файл бует сохранен в папку&lt;i&gt; /var/mail/attachments&lt;/i&gt;. Надо, кстати, покопаться и найти как вставлять ссылку в текст самого письма. Но пока что оставим как есть.&lt;/p&gt;
&lt;p&gt;У меня почтовый и веб-сервер находятся на разных виртуальных машинах, поэтому папку&lt;i&gt; /var/mail/attachments&lt;/i&gt; надо сделать общей. На почтовом сервере устанавливаем пакет сервера NFS:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="bash"&gt;apt install nfs-kernel-server -y&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Открываем файл&lt;i&gt; /etc/exports&lt;/i&gt; и вписываем в конец файла что-то вроде такого:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="plaintext"&gt;/var/mail/attachments 192.168.1.0/24(rw,sync,no_subtree_check)&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;И выполняем в консоли команду:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="bash"&gt;exportfs -a&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Теперь переходим на веб-сервер и выполняем следующие команды:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="bash"&gt;apt update
apt install nfs-common -y&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Открываем файл&lt;i&gt; /etc/fstab&lt;/i&gt; и дописываем в конец:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="plaintext"&gt;192.168.1.12:/var/mail/attachments /var/www/mail/attachments nfs4 defaults 0 0&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;где 192.168.1.12 — IP-адрес почтового сервера.&lt;br /&gt;
Дальше выполняем команды:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="bash"&gt;mkdir -p /var/www/mail/attachments
chown -R www-data:www-data /var/www/mail/attachments
mount -a&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;И проверяем что папка смонтировалась:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="bash"&gt;ls -l /var/www/mail/attachments&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;После этого все вложения, которые были удалены из писем, должны стать доступны для скачивания.&lt;/p&gt;
</description>
</item>


</channel>
</rss>