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 CentOS
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.
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_default = /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","mailbox"];
if header :contains "X-Spam-Flag" "YES" {
fileinto :create "INBOX.Junk E-mail";
stop;
}
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;
Jeśli nie żyje (debian, ubuntu etc.) to:
apt-get install dovecot-lmtpd
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
[tm_warning]Zmień domyślne hasło! [/tm_warning]
[tm_toggle style=”3″][toggle title=”Jak zmienić domyślne hasło”]
Przejdź na zakładkę Security
[/toggle][/tm_toggle]
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