Замена больших вложений в email на ссылку
Устанавливаем MIMEDefang:
apt update
apt install mimedefang -y
Правим файл /etc/default/mimedefang:
SOCKET=/var/spool/postfix/mimedefang/mimedefang.sock
MD_ALLOW_GROUP_ACCESS=yes
Добавляем пользователя postfix в группу defang:
usermod -aG defang postfix
Так как postfix работает в chroot-окружении, создаем папку для сокета mimedefang:
mkdir /var/spool/postfix/mimedefang
Правим /etc/postfix/main.cf:
milter_default_action = accept
milter_protocol = 6
smtpd_milters = unix:mimedefang/mimedefang.sock
non_smtpd_milters = unix:mimedefang/mimedefang.sock
Теперь нужно добавить следующее в конец функции filter в файле /etc/mail/mimedefang-filter:
# Если файл больше указанного размера, он удаляется из письма,
# его копия остается на диске, а вместо него предоставляется ссылка, по которой его можно скачать.
# Максимальный размер вложения (например, 10MB)
my $MAX_ATTACHMENT_SIZE = 10 * 1024 * 1024;
# Директория для сохранения вложений
my $ATTACHMENTS_DIR = "/var/mail/attachments";
# URL, по которому будут доступны вложения
my $ATTACHMENTS_URL = "https://mail.kini24.ru/attachments";
# Создаем директорию, если её нет
mkdir $ATTACHMENTS_DIR unless -d $ATTACHMENTS_DIR;
$size = (stat($entity->bodyhandle->path))[7];
if ($size > $MAX_ATTACHMENT_SIZE) {
md_graphdefang_log("The attached file $fname is too big, replaced with a link");
return action_replace_with_url($entity,
"$ATTACHMENTS_DIR",
"$ATTACHMENTS_URL",
"Размер вложения превысил ограничения сервера, поэтому оно было удалено.\n" .
"Вы можете скачать его по следующей ссылке:\n\n" .
"_URL_");
}
В результате аыполнения функции action_replace_with_url в конец письма будет вставлен текст и ссылка для скачивания вложения, а сам файл бует сохранен в папку /var/mail/attachments. Надо, кстати, покопаться и найти как вставлять ссылку в текст самого письма. Но пока что оставим как есть.
У меня почтовый и веб-сервер находятся на разных виртуальных машинах, поэтому папку /var/mail/attachments надо сделать общей. На почтовом сервере устанавливаем пакет сервера NFS:
apt install nfs-kernel-server -y
Открываем файл /etc/exports и вписываем в конец файла что-то вроде такого:
/var/mail/attachments 192.168.1.0/24(rw,sync,no_subtree_check)
И выполняем в консоли команду:
exportfs -a
Теперь переходим на веб-сервер и выполняем следующие команды:
apt update
apt install nfs-common -y
Открываем файл /etc/fstab и дописываем в конец:
192.168.1.12:/var/mail/attachments /var/www/mail/attachments nfs4 defaults 0 0
где 192.168.1.12 — IP-адрес почтового сервера.
Дальше выполняем команды:
mkdir -p /var/www/mail/attachments
chown -R www-data:www-data /var/www/mail/attachments
mount -a
И проверяем что папка смонтировалась:
ls -l /var/www/mail/attachments
После этого все вложения, которые были удалены из писем, должны стать доступны для скачивания.