Это старая версия документа!
Для подключения Benno MailArchiv к почтовым системам, работающим под управлением Unix, мы рекомендуем использовать MILTER .
Преимущество этого метода перед подключением Benno MailArchiv через ( always_ )bcc или аналогичный механизм заключается в том, что фактическая информация в заголовке письма не теряется. В письмах, отправленных через BCC, отсутствует соответствующий заголовок. Эта информация передается в виде так называемого конверта от почтового сервера к почтовому серверу.
Демон MILTER " benno-milter " сохраняет каждое входящее письмо в папку "Входящие" архива Benno MailArchiv. При записи файла MILTER сохраняет информацию о заголовке письма ( MAIL FROM , RCPT TO ) в дополнительных заголовках.
Эти заголовки по умолчанию настроены в архиваторе как «<senderheaders /> " или "<recipientheaders /> Они также указаны как «<secretheaders /> «Помечены таким образом, чтобы они не отображались при просмотре электронного письма».
В системах Debian и системах на основе Debian базовая установка выполняется непосредственно из benno-milter в репозитории. После этого требуется только подключение конфигурации Postfix .
В других системах следует выполнять установку вручную.
Примечание: Пакет Milter и представленная здесь информация являются лишь демонстрационным примером и предоставляются «как есть», без каких-либо гарантий полноты.
Если в качестве источников импорта подключено несколько систем, соблюдать конфигурации множественного импорта
После репозитория Benno MailArchiv пакет benno-milter устанавливается через apt. По умолчанию benno-milter настроен для работы в рамках ранее установленного MTA Postfix. Поэтому установку и настройку MTA следует завершить до установки пакета.
После этого пакет будет установлен.
apt-get install benno-milter
После установки пакета демон MILTER подключается к Postfix.
Настройка соединения MILTER осуществляется в /etc/postfix/main.cf . В него добавляются следующие параметры конфигурации. Примечание: Если Amavis установлен в качестве фильтра пост-очереди, настройку MILTER следует выполнять, как описано «Отключение MILTER для Amavis»
... ### Benno MailArchive Milter smtpd_milters = unix:/benno-milter/benno-milter.sock non_smtpd_milters = local:/benno-milter/benno-milter.sock milter_default_action = tempfail ### /Benno MailArchive Milter
Если демон MILTER устанавливается отдельно от MTA, то с демоном Benno MILTER можно соединение по протоколу TCP .
Затем перезапустите демон Postfix. Внимание : если система настроена таким образом, что электронное письмо проходит через фильтр, а затем повторно отправляется через второй процесс SMTP, необходимо отключить . Это, например, происходит при использовании Amavis.
Если демон MILTER должен быть установлен на хосте, отдельном от службы SMTP, демон MILTER должен быть привязан к TCP-сокету и не требует запуска с postfix . Для этой цели скрипт предварительной установки пакета создает файл переопределения /etc/systemd/system/benno-milter.service.d/override.conf .
В конфигурации Postfix пути к сокету заменяются указанием имени хоста/IP-адреса и порта:
smtpd_milters = inet:benno.lw-systems.net:22500 non_smtpd_milters = inet:benno.lw-systems.net:22500
В процессе установки пакета система проверяет, существует ли каталог очереди Postfix. Если да, то демон MILTER настраивается для подключения через сокет домена Unix. В противном случае подключение настраивается через TCP-сокет.
В случае логического разделения между MTA и системой архивирования электронные письма должны быть перенесены в систему архивирования и сохранены там без изменений.
Простейший вариант — установить демон MILTER на хост архивации. MILTER настроен на привязку TCP-сокета , что позволяет осуществлять связь между MTA и MILTER по сети.
Недостатком такой конфигурации является то, что фактическая передача почты зависит от другого хоста.
Другой вариант — настроить демон MILTER на MTA и передавать электронные письма в систему архивирования через SMTP. В этом случае benno-smtp . Этот пакет содержит демон SMTP, который сохраняет электронные письма, отправленные через порт 2500, в каталоге импорта Benno без изменений.
На хосте MTA имя хоста ( BENNOHOST= ) системы архивирования настроить /etc/default/benno-milter
# # Параметры запуска benno-milter # SOCKET=/var/spool/postfix/benno-milter/benno-milter.sock SPOOLDIR=/srv/benno/inbox #BENNOHOST=your.benno-archive.host
Затем передача активируется с помощью задания cron в файле /etc/cron.d/benno-milter путем раскомментирования команды.
# # Импорт писем из maildump milter # #*/15 * * * * benno /usr/sbin/benno-export2archive
В конечном итоге эта задача cron вызывает программу benno-milter2smtp , которая используется для передачи файлов электронной почты по протоколу SMTP.
Заголовки X-REAL-* из файлов maildump удаляются во время отправки и передаются в качестве информации в конверте. Поэтому при настройке benno-smtp крайне важно убедиться, что параметр `envelope_header = true` `/etc/benno smtp.conf`.
В среде Univention приложение MailArchiv подключено к центральному почтовому серверу. Для настройки переменные UCR задаются следующим образом.
ucr set mail/postfix/mastercf/options/smtp/smtpd_milters=inet:benno-hostname:22500 ucr set mail/postfix/mastercf/options/smtp/milter_default_action=tempfail ucr set mail/postfix/mastercf/options/submission/smtpd_milters=inet:benno-hostname:22500 ucr set mail/postfix/mastercf/options/submission/milter_default_action=tempfail ucr set mail/postfix/mastercf/options/smtps/smtpd_milters=inet:benno-hostname:22500 ucr set mail/postfix/mastercf/options/smtps/milter_default_action=tempfail
В качестве имени хоста может использоваться полное доменное имя системы Benno MailArchiv или IP-адрес.
Для активации конфигурации требуется перезапуск Postfix: systemctl restart postfix
Обмен данными между MTA и Benno MailArchiv через MILTER осуществляется без шифрования. Если почтовый сервер и приложение Benno MailArchiv находятся на одной машине, обмен данными также может осуществляться через имя хоста localhost .
Многие спам- и вирусные фильтры требуют наличия SMTP-демона для обратной передачи проанализированных писем в систему. Настройка соединения MILTER в конфигурационном файле main.cf влияет на все службы Postfix SMTP в глобальном масштабе. Это означает, что письмо, прошедшее через обе службы SMTP, будет импортировано в архив дважды. Каждая служба SMTP добавляет свои собственные заголовки, поэтому контрольная сумма письма изменяется, что предотвращает его идентификацию как дубликата.
Внимание : При использовании Amavis для фильтрации спама необходимо отключить параметр MILTER для smtpd на порту 10025, если Amavis настроен как фильтр после очереди. В случае конфигурации до очереди параметры `-o smtpd_milters=` и `-o non_smtpd_milters=` можно опустить.
127.0.0.1:10025 inet n - n - - smtpd -o content_filter= -o local_recipient_maps= -o relay_recipient_maps= -o smtpd_restriction_classes= -o smtpd_client_restrictions= -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o mynetworks=127.0.0.0/8 -o smtpd_authorized_xforward_hosts=127.0.0.0/8 -o strict_rfc821_envelopes=yes -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1000 -o smtpd_milters= -o non_smtpd_milters=
Функция MILTER деактивируется двумя строками «-o *_milters=".
В качестве альтернативы настройке в файле "main.cf", MILTER также можно настроить в определении службы SMTP в файле "master.cf". Этот тип настройки не так прост, как main.cf, но он имеет преимущество в предотвращении случайного включения MILTER для нескольких служб SMTP.
# =========================================================================== # тип службы private unpriv chroot wakeup maxproc command + args # (да) (да) (да) (никогда) (100) # =============================================================================== smtp inet n - - - - smtpd -o smtpd_milters=unix:/benno-milter/benno-milter.sock -o non_smtpd_milters=local:/benno-milter/benno-milter.sock -o milter_default_action=tempfail
Если отправки также привязан, конфигурацию MILTER необходимо добавить и сюда.
При указании пути к сокету важна конфигурация chroot chroot установлено значение n n , путь должен быть указан как полный путь к сокету. В приведенном выше примере путь задается относительно каталога chroot.
Предварительно скомпилированная программа, включая скрипты инициализации и описание, может быть установлена из архива tar maildump-milter.tar.gz.
Перед настройкой демона MILTER убедитесь, что существует каталог очереди печати /srv/benno/inbox . Этот каталог должен был быть создан в системе во время установки Benno MailArchiv. Если демон MILTER установлен в другой системе, каталог необходимо создать позже, а также создать пользователя "benno". Этому пользователю должны быть предоставлены права на запись в /srv/benno/inbox .
В системе Debian установлен пакет benno-milter . Он автоматически выполняет шаги по запуску демона MILTER.
useradd –system –gid postfix –shell /bin/false –home /srv/benno/inbox bennoadduser benno postfixmkdir /srv/benno/inboxchown benno.postfix /srv/benno/postfixmkdir /var/spool/postfix/maildump-milterchown benno.postfix /var/spool/postfix/maildump-miltercp init.d/maildump-milter /etc/init.d/maildump-milterupdate-rc.d maildump-milter start 05 2 3 4 5 . stop 01 0 1 6 .cp default/maildump-milter /etc/default/maildump-miltercp sbin/maildump-milter /usr/local/sbin/maildump-milter/etc/init.d/maildump-milter startВ файл main.cf добавлены следующие строки.
### Benno MailArchive Milter smtpd_milters = unix:/maildump-milter/socket non_smtpd_milters = local:/maildump-milter/socket #milter_default_action = Accept milter_default_action = tempfail ## if lmtp milter существует : # lmtpd_milters = unix:/maildump-milter/socket ### /Бенно MailArchive Милтер
cp sbin/maildump2smtp /usr/local/sbin/maildump2smtpcp sbin/benno-maildumpimport /usr/local/sbin/benno-maildumpimportcp cron.d/benno-import /etc/cron.d/benno-import/Работа сервиса регистрируется с помощью syslog с использованием механизма LOG_MAIL.
Для целей тестирования демон также можно запустить с консоли, используя следующую команду.
sudo -u benno -g postfix / usr / sbin / benno - milter \ -p local : /var/spool/postfix/benno-milter/benno-milter.sock \ -o / srv / benno / inbox -l /tmp/benno-milter.pid
параметр -l /tmp/benno-milter.pid необходимо опустить.
Der Benno MILTER Daemon wird mittels systemd gestartet. Die Konfiguration des Services wird im Servicefile /etc/systemd/system/benno-milter.service festgelegt.
В конечном итоге запуск демона осуществляется следующим вызовом:
/ usr / sbin / benno-milter \ -l ${RUNTIME_DIRECTORY} / benno-milter.pid \ -p ${SOCKET_TYPE} : ${SOCKET} \ -o ${SPOOLDIR} ${MILTERARGS}
Указанные здесь переменные среды предварительно настроены в файле службы:
# systemctl show benno-milter --property=Environment
SOCKET_TYPE = local SOCKET = / var / spool / postfix / benno - milter / benno - milter.sock SPOOLDIR = / srv / benno / inbox PIDFILE = /run/benno-milter/benno-milter.pid
Эти переменные могут быть перезаписаны настройками в конфигурационном файле /etc/default/benno-milter .
Если MILTER подключен к Postfix через сокет домена UNIX, служба запускается от имени пользователя "benno" и группы "postfix". При подключении через сокет TCP этот параметр может отличаться. Текущие параметры конфигурации можно получить с помощью следующих команд:
# systemctl show benno-milter --property=User # systemctl show benno-milter --property=Group
Настройки, отклоняющиеся от стандарта, определяются в конфигурационном файле /etc/systemd/system/benno-milter.service.d/override.conf .
eval $ ( systemctl show benno-milter --property =User --property =Group \ --property =Environment --property =RuntimeDirectory | \ perl -pe 's/^Environment=//' ) ; \ . / etc / default / benno-milter; \ sudo -u $User -g $Group \ / usr / sbin / benno-milter \ -l / run / ${RUNTIME_DIRECTORY} / benno-milter.pid \ -p ${SOCKET_TYPE} : ${SOCKET} \ -o ${SPOOLDIR} ${MILTERARGS}