Назад | Перейти на главную страницу

Как мне заставить Courier Maildrop регистрировать данные?

Задний план

Я запускаю 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 извне сети электронное письмо получено, но файл журнала пуст.

Что я делаю не так?

  1. Есть ли что-то особенное, что мне нужно сделать, чтобы зарегистрировать мои правила фильтрации, или все, что требуется, чтобы иметь файл в правильном месте?

  2. Если все, что требуется, это наличие файла в правильном месте, то что не так с кодом, который я написал, который устанавливает файл журнала и выводит сообщение в журнал с log команда?

Любая помощь приветствуется.

Обновление 2018-01-04 10:17

Я прочитал 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 настройки, какую программу вызывать.