Filtrowanie Spamu w Rainloop (Cyberpanel, Dovecot, Sieve)

Standardowa instalacja Cyberpanel dostarcza nam klienta poczty Rainloop, bez funkcji filtrowania wiadomości e-mail. Oznacza to, że wszystkie maile łącznie ze spamem trafiają do głównego katalogu Inbox. A miło by było gdyby jednak spam leciał do dedykowanego katalogu…

Mam już zainstalowanego SpamAssassin, w wiadomościach które kwalifikowane są jako spam dodaję na początku tytułu [***SPAM***] wygląda to mniej więcej tak:

Dzięki temu w skrzynce odbiorczej od razu widzę który mail to spam.

Na początku zróbmy kopię plików konfiguracyjnych

cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-bak
cp /etc/postfix/master.cf /etc/postfix/master.cf-bak
cp /etc/postfix/main.cf /etc/postfix/main.cf-bak

Bo jak coś pójdzie nie tak, to będziesz mógł przywrócić starą konfigurację poleceniami:

cp /etc/dovecot/dovecot.conf-bak /etc/dovecot/dovecot.conf
cp /etc/postfix/master.cf-bak /etc/postfix/master.cf
cp /etc/postfix/main.cf-bak /etc/postfix/main.cf
service dovecot restart && service postfix restart;
service dovecot status && service postfix status;

Instalacja wymaganych pakietów

Na Ubuntu

apt-get install -y dovecot-managesieved dovecot-sieve net-tools pflogsumm

Na CenOS

yum install dovecot-pigeonhole postfix-perl-scripts -y

Modyfikujemy teraz zawartość pliku /etc/dovecot/dovecot.conf

nano /etc/dovecot/dovecot.conf

aby wyglądał mniej więcej jak poniżej.

Wersja dla leniwych

Możesz też wyczyścić jego zawartość i skopiować gotowca.

> /etc/dovecot/dovecot.conf

protocols = imap pop3 lmtp sieve
log_timestamp = "%Y-%m-%d %H:%M:%S "
mail_location = maildir:/home/vmail/%d/%n/Maildir
#mail_location = mdbox:/home/vmail/%d/%n/Mdbox
 
ssl_cert = <cert.pem
ssl_key = <key.pem
 
mail_plugins = zlib
 
mdbox_rotate_size = 2M
 
namespace {
    type = private
    separator = .
    prefix = INBOX.
    inbox = yes
}
 
service auth {
    unix_listener auth-master {
        mode = 0600
        user = vmail
    }
 
    unix_listener /var/spool/postfix/private/auth {
        mode = 0666
        user = postfix
        group = postfix
    }
 
user = root
}
 
service auth-worker {
    user = root
}
 
protocol lda {
    log_path = /home/vmail/dovecot-deliver.log
    auth_socket_path = /var/run/dovecot/auth-master
    postmaster_address = postmaster@example.com
 
    mail_plugins = zlib
}
 
protocol pop3 {
    pop3_uidl_format = %08Xu%08Xv
    mail_plugins = $mail_plugins zlib
}
 
protocol imap {
    mail_plugins = $mail_plugins zlib imap_zlib
}
 
passdb {
    driver = sql
    args = /etc/dovecot/dovecot-sql.conf.ext
}
 
userdb {
    driver = sql
    args = /etc/dovecot/dovecot-sql.conf.ext
}
 
plugin {
 
  zlib_save = gz
  zlib_save_level = 6
 
}
service managesieve-login {
  inet_listener sieve {
    port = 4190
  }
}
service managesieve {
}
protocol sieve {
    managesieve_max_line_length = 65536
    managesieve_implementation_string = dovecot
    log_path = /var/log/dovecot-sieve-errors.log
    info_log_path = /var/log/dovecot-sieve.log
}
plugin {
    sieve = /home/vmail/%d/%n/dovecot.sieve
    sieve_global_path = /etc/dovecot/sieve/default.sieve
    sieve_dir = /home/vmail/%d/%n/sieve
    sieve_global_dir = /etc/dovecot/sieve/global/
}
protocol lda {
    mail_plugins = $mail_plugins sieve quota
    postmaster_address = postmaster@example.com
    hostname = server.example.com
    auth_socket_path = /var/run/dovecot/auth-master
    log_path = /var/log/dovecot-lda-errors.log
    info_log_path = /var/log/dovecot-lda.log
}

lda_mailbox_autocreate = yes
lda_mailbox_autosubscribe = yes

protocol lmtp {
    mail_plugins = $mail_plugins sieve quota
    log_path = /var/log/dovecot-lmtp-errors.log
    info_log_path = /var/log/dovecot-lmtp.log
}
service stats {
    unix_listener stats-reader {
        user = vmail
        group = vmail
        mode = 0660
    }
 
    unix_listener stats-writer {
        user = vmail
        group = vmail
        mode = 0660
    }
}

Pamiętaj tylko by podmienić …

postmaster_address = postmaster@example.com
hostname = server.example.com

swoimi danymi.

Teraz zrobimy niezbędne katalogi i nadamy uprawnienia

mkdir -p /etc/dovecot/sieve/global
touch /var/log/{dovecot-lda-errors.log,dovecot-lda.log}
touch /var/log/{dovecot-sieve-errors.log,dovecot-sieve.log}
touch /var/log/{dovecot-lmtp-errors.log,dovecot-lmtp.log}
touch /etc/dovecot/sieve/default.sieve
chown vmail: -R /etc/dovecot/sieve
chown vmail:mail /var/log/dovecot-*

i w pliku /etc/dovecot/sieve/default.sieve

nano /etc/dovecot/sieve/default.sieve

wpisujemy na przykład:

require "fileinto";
if header :contains "X-Spam-Flag" "YES" {
    fileinto "INBOX.Junk";
}

kompilujemy do wersji binarnej

sievec /etc/dovecot/sieve/default.sieve

Restartujemy usługi i sprawdzamy czy wszystko żyje.

service dovecot restart && service postfix restart && service spamassassin restart;
service dovecot status && service postfix status && service spamassassin status;

i czy Sieve działa

netstat -tunlp | grep :4190

w odpowiedzi powinieneś mieć coś takiego :

[root@mail ~]# netstat -tunlp | grep :4190
tcp        0      0 0.0.0.0:4190            0.0.0.0:*               LISTEN      81135/dovecot
tcp6       0      0 :::4190                 :::*                    LISTEN      81135/dovecot

Postfix

Czas na konfigurację Postfix

nano /etc/postfix/master.cf

na końcu pliku dodaj jeśli nie masz

dovecot   unix  -       n       n       -       -       pipe
    flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${recipient}
spamassassin unix - n n - - pipe flags=R user=spamd argv=/usr/bin/spamc -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}

restartujemy posfixa

systemctl restart postfix

Konfiguracja Rainloop

Wchodzimy do panelu administratora: https://[xyz]:8090/rainloop/?admin Oczywiście [xyz] zastępujemy swoją domeną lub adresem IP np: 12.123.12.123:8090/rainloop/?admin

Domyślne dane do logowania:

  • login: admin
  • hasło: 12345

Zmień domyślne hasło!

Jak zmienić domyślne hasło

Przejdź na zakładkę Security

Wejdź do zakładki Domeny i kliknij swoją domenę, dla której chcesz włączyć tę funkcję.

Kliknij Sieve Configuration i zaznacz „Allow sieve scripts” a jeśli chcesz, aby użytkownicy ustawiali własne filtry poczty e-mail zaznacz także „Allow custom user script”. Wpisz localhost w polu Server i upewnij się, że port jest ustawiony na 4190. Jeśli chcesz przetestować połączenie kliknij przycisk Test. Jeśli połączenie się powiedzie, SIEVE zmieni kolor na ZIELONY.

Na koniec zapisz zmiany przysiekiem Update

Teraz możesz już zalogować się na skrzynkę użytkownika https://[xyz]:8090/rainloop/ i wejść w ustawienia

Tam przejdź na zakładkę Filtry i wciśnij przycisk Dodaj Filtr. W oknie możesz otworzyć dowolny filtr, ale dla przykładu ustawimy dokładnie to samo co wpisywaliśmy w pliku /etc/dovecot/sieve/default.sieve we wcześniejszych krokach.

Po wszystkim zapisujemy zmiany, i możemy przetestować działanie filtra wysyłając z innego maila wiadomość o treści :

XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Jak widać na załączonym obrazku wszystko ładnie działa.

inna prosta reguła

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *