Как переместить спам в папку со спамом?

Я уже установил postfix, dovecot, Clamav, Spamassassin и amavisd-new на моем centos 5.10. Учебник находится здесь: http://catatanlepas.com/komputer/aplikasi/server-mail/postfix/359-instalasi-postfix-menggunakan-dovecot-di-centos-5-5

Я просто не устанавливаю Razor, Pyzor, dan DCC в этом учебнике.

Все работает нормально в /var/log/maillog, если есть спам-адрес электронной почты n не попадает в папку "Входящие", но я хочу переместить спам-адрес электронной почты в папку со спамом.

Мой вопрос: 1. Как автоматически создать папку спама на моей веб-почте, поскольку она просто создает только входящие, черновики и отправленные элементы, а на моей веб-почте нет спам-папки. 2. Как переместить спам-адрес электронной почты в папку спама для каждого пользователя (я создаю пользователя в /var/vmail )

Пожалуйста, помогите мне, у меня есть поиск в google в течение 5 дней, и я столкнулся с этим: (

Спасибо.

Ответ 1

я - Установите доставку электронной почты для использования Dovecot LDA:

Исходный веб-сайт OP-подключен в автономном режиме, однако я полагаю, что доставка электронной почты происходила по программе sendmail, которую нужно сделать с помощью Dovecot LDA за то, что вам нужно. (Чтобы избежать изменения заголовка источника электронной почты).

Изменить постфикс master.cf (в начале):

smtp      inet  n       -       -       -       -       smtpd -o content_filter=spamassassin

И в конце файла:

spamassassin unix -     n   n   -   -   pipe
    flags=DROhu user=vmail:vmail argv=/usr/bin/spamc -f -e 
    /usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop} 

Теперь отредактируйте Postfix main.cf и добавьте (необязательно, проверьте (3) ниже):

spamassassin_destination_recipient_limit = 1

Теперь ваша электронная почта будет доставлена ​​через Dovecot LDA без изменений заголовка. Для любопытных, вот некоторые подробности в моей конфигурации:

  • Эта конфигурация может использоваться с разделителями плюс-адресация/суб-адресация/получатель (адреса электронной почты, адресованные [email protected], будут доставлены в папку [email protected]) - вот почему я добавил -d ${user}@${nexthop} это удалит + и все до домена. Чтобы включить эту функцию, обязательно добавьте recipient_delimiter = + в main.cf;
  • Мои флаги flags=DROhu, они не добавляют ничего ненормального, но они могут быть поняты здесь: http://www.postfix.org/pipe.8.html;
  • spamassassin_destination_recipient_limit = 1 требуется, чтобы каждый получатель получал индивидуальную обработку spamassassin. Это необходимо из-за флага D выше (включает заголовок X-Original-To). Если вам не нужен этот заголовок, вы можете удалить флаг, и это не нужно.

II - Переместите СПАМ в папку Junk:

(С некоторой помощью от @Electronic Technologies в fooobar.com/questions/547688/...)

Вы также можете настроить Dovecot для перемещения электронной почты, обнаруженной как СПАМ, в папку Junk IMAP. Просто следуйте этому:

  • Измените /etc/dovecot/conf.d/15-mailboxes.conf и раскомментируйте/добавьте папку Junk с (должно быть в разделе namespace inbox рядом с mailbox Trash):

    mailbox Junk {
       special_use = \Junk
    }
    
  • Установите dovecot-sieve с помощью apt-get install dovecot-sieve;

  • Измените /etc/dovecot/conf.d/90-sieve.conf и прокомментируйте строку: #sieve = ~/.dovecot.sieve

  • Изменить /etc/dovecot/conf.d/90-plugin.conf как:

    plugin {
        sieve = /etc/dovecot/sieve/default.sieve
    }
    
  • Отредактируйте /etc/dovecot/conf.d/15-lda.conf и /etc/dovecot/conf.d/20-lmtp.conf для соответствия:

    protocol lda/lmtp { # do not copy/paste this line!
      mail_plugins = $mail_plugins sieve
    }
    

    ПРЕДУПРЕЖДЕНИЕ. У вас могут быть другие настройки в разделе protocol, сохраните их. Строка protocol lda/lmtp изменяется в файлах, сохраняйте оригинал.

  • Создать папку /etc/dovecot/sieve/

  • Создайте файл /etc/dovecot/sieve/default.sieve с этим контентом:

    require "fileinto";
    if header :contains "X-Spam-Flag" "YES" {
        fileinto "Junk";
    }
    
  • Измените права на папку для своего виртуального пользователя электронной почты и группы, например: chown vmail:vmail /etc/dovecot/sieve/ -R. Если вы пропустите этот голубь, он будет жаловаться!

  • Перезагрузите все: service postfix restart; service dovecot restart; service spamassassin restart

  • Попробуйте отправить электронное письмо на какой-либо адрес электронной почты на сервере (с внешнего сервера), сначала обычное письмо, а затем другое с этой темой: XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X. Второе электронное письмо должно состоять в папке Junk и первом в вашем почтовом ящике.

Если это не сработает при первой попытке, посмотрите журналы: tail -f /var/log/mail.log и отправьте электронное письмо, пока выполняется tail. Хорошая рабочая настройка должна сообщать stored mail into mailbox 'INBOX' или stored mail into mailbox 'Junk'.

Ответ 2

для Dovecot 2.1+ изменить /etc/dovecot/dovecot.conf:

namespace {
    type = private
    separator = .
    inbox = yes
  mailbox Trash {
    auto = subscribe # autocreate and autosubscribe
    special_use = \Trash
  }
  mailbox Drafts {
    auto = subscribe
    special_use = \Drafts
  }
  mailbox Sent {
    auto = subscribe
    special_use = \Sent
  }
  mailbox Junk {
    auto = subscribe
    special_use = \Junk
  }
}

plugin {
    sieve = /home/spam/default.sieve
}

protocol lda {
            auth_socket_path = /var/run/dovecot/auth-master
            mail_plugins = $mail_plugins sieve
}

затем /etc/postfix/master.cf - добавьте

spamassassin unix -     n   n   -   -   pipe
  user=vmail argv=/usr/bin/spamc -f -e  /usr/libexec/dovecot/deliver -f ${sender} -d ${recipient}

(!!) user = vmail - измените пользователя на тот, который настроен для spamassassin

и добавьте фильтр контента в smtp

smtp  inet  n  - - - -  smtpd -o content_filter=spamassassin

в/etc/mail/spamassassin/local.cf

add_header all Status _YESNO_, score=_SCORE_ required=_REQD_ version=_VERSION_
#rewrite_header Subject *****SPAM*****
bayes_ignore_header X-Bogosity
bayes_ignore_header X-Spam-Flag
bayes_ignore_header X-Spam-Status

Я добавлю заголовки X-Spam к сообщению, которое будет использоваться для последующей фильтрации сит Перезапустите spamassassin, перезагрузите dovecot и postfix

Папка нежелательной почты будет создана автоматически. Вся нежелательная почта будет доставлена ​​локально в нежелательный почтовый ящик

Я также добавлю пример фильтра сита, чтобы переместить все помеченные как спам-сообщения (конфигурацию spamassassin выше) в папку Junk.

require "fileinto";
  if exists "X-Spam-Flag" {
          if header :contains "X-Spam-Flag" "NO" {
          } else {
          fileinto "Junk";
          stop;
          }
  }

Ответ 3

Ну, есть несколько способов, но это то, что я нашел для работы. После установки postfix, dovecot, spamassassin и (я рекомендую procmail) вы можете сообщить procmail/spamassassin, как распределить спам в разных папках. С dovecot. Я использую следующие 4 папки:

spam          (for known spam based on Bayes setting)
spam-learn    (for spam that slipped through, you move it here)
spam-probably (for spam ID'd as probably spam by Bayes setting)
spam-unlearn  (messages flagged as spam, that are NOT spam go here)

с настройками папок и постфиксными настройками для фильтрации почты через procmail с помощью:

mailbox_command = /usr/bin/procmail -a "$EXTENSION"

теперь вы можете настроить procmailrc, чтобы помещать спам в нужное место, как оно поступает в ваш почтовый ящик. Ваш ~/.procmailrc должен выглядеть примерно так:

PATH=/usr/bin/vendor_perl:/usr/bin:/bin:/usr/local/bin:.
MAILDIR=$HOME/Mail/
LOGDIR=$HOME/log
#DEFAULT=$HOME/Mail/
LOGFILE=$LOGDIR/procmail.log
VERBOSE=ON
## with spamc
:0fw: spamc.lock
* < 256000
| spamc
#| /usr/bin/vendor_perl/spamc
# Mails with a score of 15 or higher are almost certainly spam (with 0.05%
# false positives according to rules/STATISTICS.txt). Let put them in a
# different mbox. (This one is optional.)
:0:
* ^X-Spam-Level: \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
spam
#Mail/spam

# All mail tagged as spam (eg. with a score higher than the set threshold)
# is moved to "probably-spam".
:0:
* ^X-Spam-Status: Yes
spam-probably
#Mail/spam-probably

# Work around procmail bug: any output on stderr will cause the "F" in "From"
# to be dropped.  This will re-add it.
:0
* ^^rom[ ]
{
LOG="*** Dropped F off From_ header! Fixing up. "

:0 fhw
| sed -e '1s/^/F/'
}

Теперь последний ключ к тому, чтобы все это работало автоматически, - это использовать fetchmail для сканирования сообщений по мере их поступления в ваш почтовый ящик, передавая procmail, чтобы помещать спам/спам, вероятно, в правильные папки и читать сообщения в спам (удалить) и спам-unlearn (узнать как ham). Типичным файлом fetchmail script является ваш ~/.fetchmailrc. Он просто будет содержать команды для опроса вашего почтового ящика:

poll mail.yourserver.com protocol IMAP : user yourname with password yourpass ssl \
sslfingerprint "D9:73:1A:FE:C6:7C:E7:9B:F1:31:F8:A1:A0:E1:F9:27"

(вы можете получить отпечаток своего сервера, просто выполнив fetchmail --verbose по вашему файлу .fetchmailrc и распечатав отпечаток сервера, проверьте текущий, скажите, что они не соответствуют и не закрывают соединение, но - вы только что получили правильный отпечаток пальца в следующий раз: -)

Наконец, настройте пару заданий cron, чтобы запустить все это, прочитав ваши папки для спама и спама. Почасовой достаточно. script может выглядеть следующим образом:

#!/bin/bash

## log file location and per-user name
LDIR=/home/admin/log
LFN="${LDIR}/${USER}.log"

## Retrieve and Process Spam & Ham from 'spam-learn' & 'spam-unlearn' folders
/usr/bin/fetchmail -a -s -n --folder spam-learn -m '/usr/bin/vendor_perl/sa-learn --spam' &>/dev/null
mss=$?
sleep 2
/usr/bin/fetchmail -a -s -n --folder spam-unlearn -m '/usr/bin/vendor_perl/sa-learn --ham' &>/dev/null
mhs=$?

## test and create log dir in noexist
[[ -d "$LDIR" ]] || mkdir -p "$LDIR"
if [[ -w "$LDIR" ]]; then

## check return from fetchmail and write log info
if [[ $(($mhs+$mss)) -le 2 ]]; then
    echo "$(date +'%b %e %R:%S') $HOSTNAME ${0##*/}: sa-learn completed successfully for user $USER" >>$LFN
else
    echo "$(date +'%b %e %R:%S') $HOSTNAME ${0##*/}: sa-learn FAILED for user $USER" >>$LFN
fi
fi

И задание cron просто выполнит файл spamv.sh выше:

05 * * * * /usr/local/bin/spamv.sh

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

P.S. Рейзор стоит загрузить.