Я запускаю Ubuntu 16.04 LTS на виртуальной машине. Это почтовый сервер для небольшой медицинской клиники. Мы пытаемся перенести фильтрацию почты со стороны клиента на сторону сервера, и у меня возникли проблемы с файлами правил $ HOME / .mailfilter.
Я читал различные копии справочной страницы в разных местах, но информации о включении ведения журнала не так много. Пример данных, с которыми я работаю, можно найти здесь: Страница пользователя Maildrop Filter
На данный момент моя структура каталогов выглядит так:
Три файла, которые я создал для хранения правил фильтрации, содержат очень простые инструкции:
logfile "/var/log/maildropfilter.log"
log "Executing code in {file_path}"
Естественно, я заменяю "{file_path}" тем файлом, в котором я сейчас нахожусь. Я надеюсь, что если файл правил будет запущен, то в файле журнала будет выражение "Выполнение кода в {file_path}", и я буду знать, в какой из трех файлов начинать вводить логику управления.
Согласно документации, или, скорее, моей интерпретации, после получения электронного письма на мою учетную запись электронной почты для пользователя jaredclemence
, Я должен увидеть в моем файле журнала следующее:
Executing code in /etc/courier/maildroprc
Executing code in /home/jaredclemence/.mailfilter
Я не должен видеть ссылку на третий файл в Maildir, потому что этот файл не $HOME/.mailfilter
- файл, на который указывает документация. Я создал этот файл на тот случай, если $ HOME ссылается на корень Maildir вместо корня домашней папки учетной записи пользователя.
Проблема в том, что когда я отправляю электронное письмо пользователю jaredclemence
извне сети электронное письмо получено, но файл журнала пуст.
Что я делаю не так?
Есть ли что-то особенное, что мне нужно сделать, чтобы зарегистрировать мои правила фильтрации, или все, что требуется, чтобы иметь файл в правильном месте?
Если все, что требуется, это наличие файла в правильном месте, то что не так с кодом, который я написал, который устанавливает файл журнала и выводит сообщение в журнал с log
команда?
Любая помощь приветствуется.
Я прочитал man-файл maildrop и узнал больше о различных режимах, в которых он будет работать, и обнаружил, что один из трех режимов не использует правила .mailfilter.
Отметив, что есть ручной режим, я выполнил команду maildrop в ручном режиме, чтобы увидеть, был ли активирован и использован файл журнала.
После запуска команды maildrop вручную я проверил следующий вывод:
Executing commands from /home/jaredclemence/.mailfilter
Date: Thu Jan 4 09:37:05 2018
From: Synegi Inc <klally@synegi.com>
Subj: Wishing You a Happy New Year from Synegi!
File: /var/mail/jaredclemence (29594)
Это интересно, потому что файл глобальных правил никогда не активируется. Это также интересно, потому что доставляет почту в mbox по адресу /var/mail/jaredclemence
, который не является Maildir.
Это предполагает одно из двух. Либо программа maildrop не используется в качестве локального агента доставки, либо файл конфигурации изменяет местоположение доставки, когда программа maildrop запускается во «встроенном режиме», который является единственным из трех режимов, в котором не выполняется .mailfilter
файл инструкции.
Отсюда я начал читать справочные страницы для trace (8), postfix (1) и local (8), чтобы узнать, могу ли я отследить, какая программа используется агентом доставки почты.
После долгих исследований и поисков я обнаружил, что моя система не использует maildrop для доставки.
Если у вас возник тот же вопрос, сначала определите, какой агент доставки почты использует ваша система.
Начните со своего SMTP-сервера. У меня Postfix.
Postfix использует собственный локальный агент доставки в процессе, называемом local (8). В файле /etc/postfix/main.cf
найдите множество ссылок на любой из локальных (8) параметров передачи обслуживания. Двумя наиболее известными, вероятно, были бы mailbox_transport
или virtual_transport
(разница зависит от того, имеют ли люди, получающие почту, учетные записи в домашних каталогах, или учетная запись поддерживается виртуально).
Если эти параметры не установлены, то postfix, вероятно, обрабатывает свою собственную локальную доставку, и, насколько я могу судить, postfix не выполняет перенаправление на основе проверки и доставку в определенные почтовые ящики, а только с одного адреса электронной почты на другой на основе серии адреса пересылки или псевдонимы.
Итак, если вы пытаетесь реализовать расширенную фильтрацию с помощью Courier, Dovecot-LDA или Dovecot-LMTP, вам нужно будет сообщить Postfix, используя mailbox_transfer
или virtual_transfer
настройки, какую программу вызывать.