Dovecot + Postfix + Spamassassin (виртуальные пользователи) - Автоматическое перемещение нежелательной почты

Итак, у меня есть почтовый сервер, который получает нежелательную почту, и мне нужно пересылать эти нежелательные электронные письма в папку нежелательной почты виртуальных пользователей. У меня есть dovecot, postfix и spamassassin, которые работают вместе, но моя проблема в том, что я могу ' Кажется, я не нашел способа пересылать нежелательную почту (письмо с названием ***** SPAM *****) в папку спама / нежелательной почты виртуальных пользователей. Если бы кто-нибудь мог помочь мне в этом вопросе, это было бы замечательно. Если вам нужна какая-либо информация / файлы, не стесняйтесь написать мне.

Система работает под управлением Ubuntu 14.04 LTS (64-разрядная версия) с dovecot, postfix и spamasssassin.

-1
задан 7 November 2016 в 14:08
1 ответ

Есть много способов сделать то, что вы хотите, но я предпочитаю следующий подход.

spamassassin запускается как локальная служба, доступная в файловом сокете вместо IP-порта. Это для производительности. exim скомпилирован с опцией сканирования содержимого и настроен на взаимодействие с spamassasin , который оценивает сообщения и возвращает оценку. Если оценка выше порогового значения (49 баллов в моем случае), к сообщению будут добавлены некоторые специальные заголовки:

spamd_address           = /tmp/spamd.sock

. . . . .

acl_data:
accept  hosts           =  : +relay_from_hosts
accept  condition       = ${if >{$message_size}{1M}}
warn    spam            = spamd
        condition       = ${if >{$spam_score_int}{49}}
        add_header      = X-Spam-Score: $spam_score_int
        add_header      = X-Spam-Ooops: Detected
        log_message     = SpamAssassin detected mesage
accept

Я не проверял спам-сообщения размером более 1 МБ, поскольку спам обычно намного меньше. Затем я доставил сообщение в почтовый ящик пользователя. Я делаю это с помощью транспорта через dovecot delivery :

localdelivery:
        driver          = pipe
        user            = mailnull
        command         = /usr/local/libexec/dovecot/deliver -d $local_part@$domain -f $sender_address
        temp_errors     = 64 : 69 : 70: 71 : 72 : 73 : 74 : 75 : 78
        envelope_to_add
        return_path_add
        delivery_date_add
        log_output

dovecot имеет плагин pidgeonhole , реализующий функциональность sieve . Все сообщения проходят через глобальный фильтр, который выглядит следующим образом:

####
require "fileinto";
if exists "X-Spam-Ooops"
{
   fileinto "Junk";
   stop;
}
else
{
   # Trigger to launch next script in sequence
   keep;
}
####

Логика здесь проста: если доставленное сообщение имеет заголовок X-Spam-Ooops (назначен exim на оценка sa ), он будет доставлен в подпапку INBOX.Junk для каждого конкретного пользователя. else ветвь с глаголом keep внутри необходима для дальнейшей обработки сообщения через пользовательский фильтр (ы) после обработки глобального фильтра.

0
ответ дан 5 December 2019 в 20:27

Теги

Похожие вопросы