Установка и использование alterMIME как фильтра Postfix на Debian Squeeze
Этот гид показывает, как установить alterMIME и подключить его как фильтр Postfix на Debian Squeeze, чтобы автоматически добавлять дисклеймеры к исходящим письмам от выбранных адресов. Включены пример скрипта, настройки Postfix, чек‑лист для тестирования и советы по безопасности.
Введение
alterMIME — утилита для автоматического добавления дисклеймеров в электронные письма. В этой статье описывается установка и настройка alterMIME в роли фильтра Postfix на Debian Squeeze. Предполагается, что Postfix уже установлен и настроен; шаги по базовой настройке Postfix и почтовых аккаунтов не рассматриваются.
Короткое определение: дисклеймер — автоматический текст внизу письма, который добавляется для юридических или информационных целей.
Что мы сделаем (план)
- Установим пакет altermime.
- Создадим сервисного пользователя для запуска фильтра.
- Скопируем и скорректируем пример скрипта фильтра (/etc/postfix/disclaimer), чтобы дисклеймер добавлялся только для заданных отправителей.
- Добавим файл со списком адресов, для которых включён дисклеймер.
- Настроим Postfix (master.cf) для вызова фильтра.
- Перезапустим Postfix и проверим работу.
1 Предварительная заметка
Я предполагаю, что Postfix уже установлен и корректно работает. Если Postfix не настроен, сделайте это перед выполнением инструкций ниже.
2 Установка alterMIME
Установите пакет командой:
apt-get install altermimeДалее создаём системного пользователя filter с домашним каталогом /var/spool/filter — под этим пользователем будет запускаться alterMIME:
useradd -r -c "Postfix Filters" -d /var/spool/filter filter
mkdir /var/spool/filter
chown filter:filter /var/spool/filter
chmod 750 /var/spool/filterПосле установки пакета возьмём за основу пример скрипта фильтра, который поставляется с пакетом, и скопируем его в /etc/postfix/disclaimer:
cp /usr/share/doc/altermime/examples/postfix_filter.sh /etc/postfix/disclaimer
chgrp filter /etc/postfix/disclaimer
chmod 750 /etc/postfix/disclaimerПримечание: исходный скрипт добавляет дисклеймер ко всем письмам (входящим и исходящим). Обычно требуется добавлять дисклеймер только к исходящим письмам и не ко всем отправителям. Ниже показана небольшая модификация скрипта, которая проверяет адрес отправителя по списку.
Создайте файл /etc/postfix/disclaimer_addresses со списком адресов (по одному на строку), для которых должен применяться дисклеймер:
vi /etc/postfix/disclaimer_addresses| [email protected] [email protected] [email protected] |
Откроем /etc/postfix/disclaimer и внесём изменения (я отметил вставки):
vi /etc/postfix/disclaimer| #!/bin/sh # Localize these. INSPECT_DIR=/var/spool/filter SENDMAIL=/usr/sbin/sendmail ####### Changed From Original Script ####### DISCLAIMER_ADDRESSES=/etc/postfix/disclaimer_addresses ####### Changed From Original Script END ####### # Exit codes from
Важно: приведённый способ определения поля From: прост и хорошо подходит для базовой конфигурации, но в сложных случаях (MIME‑формат, вложенные письма, подписи, пересылки) извлечение адреса может потребовать более надёжной логики. См. раздел «Когда это может не сработать» ниже.
Теперь скопируйте пример дисклеймера (можно отредактировать под ваши требования):
cp /usr/share/doc/altermime/examples/disclaimer.txt /etc/postfix/disclaimer.txtДалее сообщим Postfix, чтобы он использовал фильтр. Откройте /etc/postfix/master.cf и добавьте опцию -o content_filter=dfilt: в строку smtp:
vi /etc/postfix/master.cf| # # Postfix master process configuration file. For details on the format # of the file, see the master(5) manual page (command: "man 5 master"). # # Do not forget to execute "postfix reload" after editing this file. # # ========================================================================== # service type private unpriv chroot wakeup maxproc command + args # (yes) (yes) (yes) (never) (100) # ========================================================================== smtp inet n - - - - smtpd -o content_filter=dfilt: [...] |
В конце того же файла добавьте определение dfilt:
| [...] dfilt unix - n n - - pipe flags=Rq user=filter argv=/etc/postfix/disclaimer -f ${sender} -- ${recipient} |
Перезапустите Postfix:
/etc/init.d/postfix restartГотово — теперь дисклеймер должен добавляться к исходящим письмам, отправленным с адресов, перечисленных в /etc/postfix/disclaimer_addresses.
3 Тестирование и критерии приёмки
Критерии приёмки:
- Письмо, отправленное с адреса, указанного в /etc/postfix/disclaimer_addresses, содержит текст дисклеймера в простом и HTML‑формате.
- Письмо с адреса, которого нет в списке, остаётся без изменений.
- Фильтр не задерживает входящие сообщения и не вызывает повторных отказов Postfix.
Рекомендованный набор тестов:
- Отправить простое текстовое письмо с адреса из списка на внешний аккаунт — проверить наличие дисклеймера.
- Отправить HTML‑письмо с тем же адреса — проверить HTML‑часть и заголовок X‑Copyrighted‑Material.
- Отправить письмо с адреса вне списка — убедиться, что письмо не изменено.
- Послать письмо с вложениями и пересылкой — проверить, что структура MIME осталась корректной.
- Проверить логи Postfix (/var/log/mail.log) на предмет ошибок pipe/dfilt.
4 Отладка и распространённые проблемы
Когда это может не сработать:
- Сложные MIME‑структуры, многократные вложенные сообщения и пересылки могут изменить строку From:, и простая команда grep/cut не найдёт корректный адрес.
- Если alterMIME не поддерживает конкретную кодировку или особую структуру HTML в письме, дисклеймер может быть вставлен некорректно.
- Неверные права или SELinux/AppArmor могут препятствовать запуску скрипта от пользователя filter.
Отладочные шаги:
- Проверять /var/log/mail.log и /var/log/syslog на ошибки от dfilt/pipe.
- Временно включить в скрипт логирование (echo >> /var/log/disclaimer.log) для отслеживания выполнения.
- Тестировать скрипт вручную, подавая на stdin образец письма: uname и sudo -u filter /etc/postfix/disclaimer …
5 Альтернативные подходы
- milter (mail filter): использовать MTA‑плагины, поддерживающие milter API (например, OpenDKIM/Amavis/специальные milter‑скрипты) — часто дают более глубокую интеграцию и надёжную обработку MIME.
- header_checks/body_checks в Postfix: можно использовать для простых замен в заголовках/теле, но они не умеют корректно работать с MIME и многочастными письмами.
- Промежуточный почтовый шлюз (MTA на отдельном сервере) с централизованным фильтром и политиками.
Выбор зависит от масштаба, требований к надёжности обработки MIME и возможностей поддержки.
6 Роли и чек‑лист внедрения (рекомендуется)
Администратор почты:
- Установить altermime и создать пользователя filter.
- Скопировать и защитить /etc/postfix/disclaimer и /etc/postfix/disclaimer.txt.
- Настроить /etc/postfix/master.cf и перезапустить Postfix.
- Проверить логи и выполнить тесты приёмки.
Юрист / специалист по политике:
- Проверить текст дисклеймера на соответствие корпоративной политике и законам.
Команда безопасности:
- Убедиться, что скрипт не даёт возможности инъекции данных (экранировать/проверять входные значения).
- Проверить права доступа и ограничения запуска (user=filter, chroot по необходимости).
7 Безопасность и соответствие (GDPR/приватность)
- Дисклеймеры не должны автоматически добавлять или раскрывать личные данные пользователей.
- Убедитесь, что ссылки в дисклеймере (например, на политику конфиденциальности) корректны и доступны.
- При хранении логов проверяйте срок хранения и доступ: логи почты могут содержать персональные данные и подпадают под требования местных правил о защите данных.
8 Меры предосторожности и тестовая методика
Мини‑методика тестирования при развертывании:
- Разверните фильтр в тестовом окружении и направьте тестовую очередь почты через фильтр.
- Проверьте работу на разных типах сообщений (text/plain, text/html, multipart/alternative, с вложениями).
- Проверьте нагрузку: отправьте пакет сообщений и измерьте задержку доставки.
- Мониторьте логи и пространство в /var/spool/filter.
9 Полезные ссылки
- alterMIME: http://pldaniels.com/altermime/
- Postfix: http://www.postfix.org/
- Debian: http://www.debian.org/
Краткое резюме
alterMIME — быстрый способ добавлять дисклеймеры средствами Postfix, когда нужен простой, управляемый список отправителей. Для крупных инсталляций или сложных MIME‑структур рассмотрите milter‑решения или централизованные шлюзы.
Важно
Перед развёртыванием на боевом сервере проверьте логи и протестируйте поведение с реальными типами писем. Настройка фильтра связана с безопасностью и приватностью, поэтому согласуйте текст дисклеймера и сроки хранения логов с юристами и службой безопасности.
Похожие материалы
Доступ к Android с разбитым экраном
Сброс Samsung при заблокированном телефоне
Как разогнать монитор через NVIDIA Control Panel
APC_INDEX_MISMATCH: как исправить BSOD в Windows
Как исправить ошибку Blink 1011