Как я могу объяснить dspam, что пользователь "brandon" такой же, как "brandon@mydomain"

Я использую dspam для фильтрации спама, запустив демон "dspamd" под Ubuntu 9.10 и затем установив правило Postfix, которое говорит:

smtpd_recipient_restrictions =
    ...
    check_client_access pcre:/etc/postfix/dspam_everything
    ...

где эта карта PCRE выглядит так:

/./ FILTER lmtp:[127.0.0.1]:11124

Это хорошо работает и означает, что все пользователи в моей системе получают всю свою электронную почту, независимо от того, считает ли dspam, что она невиновна или нет, и имеют возможность фильтровать свои решения или игнорировать их.

Проблема возникает, когда я хочу обучить dspam, используя мои почтовые архивы. Прочитав о команде "dspam", я попробовал это для файлов в папках "Входящие" и "Спам" (дата, когда я использовал другое решение для фильтрации):

for file in Mail/Inbox/*; do cat $file | dspam --class=innocent --source=corpus; done
for file in Mail/spam/*; do cat $file | dspam --class=spam --source=corpus; done

Симптом, который я заметил после всего этого, был то, что dspam был ужасен при классификации спама - он не мог найти ни одного! Когда я выследил его, проблема заключалась в том, что я обучал пользователя "brandon" с помощью приведенных выше команд, но вместо этого входящее электронное письмо сравнивалось с именем пользователя "brandon @ mydomain", поэтому оно работало с полностью пустой базой данных обучения.!

Итак, что я могу сделать, чтобы вышеперечисленные команды фактически обучили мой полный адрес электронной почты, а не мое имя пользователя? Я хотел бы избежать запуска "dspam" от имени пользователя root с опцией "--user". Я ожидал бы, что файлы конфигурации "dspam" имели бы атрибут "append_domain" или что-то, с помощью чего можно было бы украшать локальные имена пользователей соответствующим доменом электронной почты, но я не могу найти ничего подобного.

Когда я использовал бэкэнд Berkeley DB для "dspam", я решил эту проблему, создав символическую ссылку с одной из баз данных на другую.:-) Но это решение в конечном итоге умерло, потому что серверная часть BDB не является поточно-ориентированной, поэтому теперь я перешел на серверную часть PostgreSQL и мне нужен способ решения этой проблемы. И, нет, таблица, в которой хранятся имена пользователей, имеет ограничение UNIQUE, которое не позволяет мне перечислять оба имени пользователя в качестве сопоставления одному и тому же идентификатору.:-)

1 ответ

Простое решение - создать общую группу прививок

я: Brandon, Брендон @ mydomain.com

/ var / spool / dspam / group - при установке Debian

Я полагаю, что по умолчанию включено включение групп прививки / общих групп в debian, и в этом случае вам нужно всего лишь создать файл группы в каталоге пользователя, и он будет использоваться автоматически.

Другие вопросы по тегам