SquirrelMail i njegova šminka

Ili kako podesiti na stranici za logovanje da se vidi sopstveni logo i željeno ime, a ne veverica sa pismima (mada je red negde na strani ostaviti ili malu vevericu ili natpis SquirrelMail).

Konfiguracioni fajl koji treba menjati (ali uvek pre promene sačuvati original!) je /etc/squirrelmail/config.php
Evo kako :
$org_name = “Željeno ime firme”;
$org_logo = SM_PATH . ‘images/željena-slika.png’;
$org_logo_width = ‘250’;
$org_logo_height = ‘230’;

Sliku pod nazivom željena-slika.png staviti u folder /usr/share/squirrelmail/images . I da mora da bude u png formatu.
Visinu i širinu slike, pa probate šta najbolje izgleda. Ništa ne mora da se restartuje, samo se zapamti fajl, i pod browser-om ponovo učita strana (ctrl+F5 uglavnom).

Ostale stavke u principu nema potrebe menjati.
Server je i onako (skoro uvek) localhost, a domen ćemo određivati za svakog korisnika, kroz /var/lib/squirrelmail/prefs/ fajlove (ali o tome u nekom drugom postu).

Anti spam pomoću ključnih reči

Dakle konfiguracija je ista kao što smo i do sada imali (Sendmail, MailScanner, MailWattch, SpamAssassin, RHEL 6U2).
Kako koristiti ključne reči koje se javljaju u temi (Subject) poruke i za njih vezane težinske faktore u borbi sa spam-om.
Ključne reči se koriste kroz SpamAssassin (kod mene verzija 3.3.1-2).
Mi ovde imam olakšavajuću okolnost što većina službenih/ham mail poruka nije na Engleskom jeziku, pa je spam malo lakše okarakterisati kao takav (jer je on uglavnom na Engleskom…).
Napomena : Ključne reči zastarevaju. Treba redovno “pročišćavati” fajl sa ključnim rečima! Pratite mail poruke na vašem serveru, i vidite koje reči se javljaju u spam porukama. Ume to da ide sezonski 😉

Fajl koji sadrži ključne reči i pripadajuće težinske faktore je /etc/MailScanner/spam.assassin.prefs.conf (za starije verzije) i /etc/mail/spamassassin/local.cf (za novije verzije, i ovu moju) i popunjava se sa ovakvim skupovima :
#===
header kljuc1 Subject =~ /viagra/i
describe kljuc1 The Subject: containes viagra
score kljuc1 10.0
#===
header kljuc2 Subject =~ /porn/i
describe kljuc2 The Subject: containes porn
score kljuc2 15.0
#===
Ključ1 odnosno 2 je naziv dodeljen skupu reč+težinski faktor. Paziti da se u nazivu NE koriste takve stavke kao što je +, -, _, (blanko). Smeju se koristiti samo alfanumerički znakovi.
Stavka /i znači da se ne uzimaju u obzir velika i mala slova.
Stavka “score” je težinski faktor. Tu paziti koji ste skor dodelili unutar MailScanner.conf fajla a da poruka bude definitivno spam i da se briše (kod nas je tako namešteno). Ako stavite veću vrednost od te, onda samo ta jedna reč poruku tera za brisanje.

Na kraju obavezno pustiti test konfiguracije i pratiti izlaz :
# spamassassin -D –lint

Kako gledano kroz /var/log/maillog izgleda “hvatanje” jedne takve poruke :

Jul 2 10:51:10 mail-server MailScanner[9904]: Message q628pttD087021 from 127.0.0.1 (moj.nalog@moj.domen) to moj.domen is spam, SpamAssassin (not cached, score=14.003, required 6, autolearn=spam, ALL_TRUSTED -1.00, FSL_RCVD_USER 0.00, TVD_RCVD_IP 0.00, TVD_RCVD_IP4 0.00, kljuc2 15.00)

Kako kod MailScanner-a izvući poruke iz karantina

U do sada formiranoj konstelaciji (videti ranije postove, MailWatch Version = 1.2.0, MailScanner Version = 4.84.5, PHP Version = 5.3.3, MySQL Version = 5.1.61), karantin MailScanner-a se nalazi pod folderom /var/spool/MailScanner. Da bi se kroz MailWAtch+MailScanner mogle puštati poruke iz karantina, potrebno je da ovaj folder ima prava koja Apache korisniku dozvoljavaju WRX (kod nas je HTTP korisnik apache) :
[root@mail-server MailScanner]# pwd
/var/spool/MailScanner
[root@mail-server MailScanner]# ll
drwxrwx— 30 root apache 4096 Mar 31 00:55 quarantine
To se postiže ovako :
[root@mail-server MailScanner]# chown root.apache quarantine/
[root@mail-server MailScanner]# chmod 770 quarantine/
Takođe je neophodno da linije u MailScanner.conf fajlu glase ovako :
Quarantine User =
Quarantine Group = apache
Quarantine Permissions = 0660
Kao posledica ovoga dnevni karantin fajlovi i folderi pod /var/spool/MailScanner/quarantine imaju ovakva vlasništva :
drwxrwx— 3 root apache 4096 Jun 29 10:30 20120629

Napomena : ako se pri pokušaju povraćaja poruke iz karantina ne desi jednostavno ništa (poruka se ne vraća, kroz MailWatch se ne vidi ništa, u /var/log/maillog nema ni jednog upisa) pogledati log fajl : /var/log/httpd/ssl_error.log . Ako je u njemu upis koji liči na ovo :
[Fri Jun 29 10:37:40 2012] [error] [client 10.10.10.11] PHP Parse error: syntax error, unexpected T_VARIABLE in /usr/share/squirrelmail/mailscanner/pear/Mail/mime.php on line 598, referer: https://10.10.10.12/mailscanner/detail.php?id=q5T8U0fVee4643

Treba uraditi sledeće :
Fajl /usr/share/squirrelmail/mailscanner/pear/Mail/mime.php iz MailWatch 1.2.0 instalacije zameniti sa istim fajlom malo starije verzije i resetovati server.

Dump MySQL baze MailScanner-a

E obećala sam ovo, zar ne?
Dakle na Fedori i RHEL-u, pod MySQL-om 4.1.20 (ili višlja verzija), kada broj poruka u bazi priđe broju od 700.000 počinje da se javlja kašnjenje mail poruka, zbog sporosti upisa u MySQL bazu. To ukazuje na potrebu pražnjenja baze. Naravno, bekap hoćemo da sačuvamo!
Dakle evo kako se to radi :
1.
Zaustaviti MailScanner
#service MailScanner stop
2.
Dump same baze
#mysqldump -u root -pmoja-lozinka mailscanner > ime-servera-datum.sql
3.
Provera dump-a listanjem fajlova
4.
Export same strukture baze
# mysqldump -u root -pmoja-lozinka –no-data mailscanner > ime-servera-datum-samo-struktura.sql
5.
Import samo strukture baze, čime se brišu podaci
#mysql -u root -pmoja-lozinka mailscanner < ime-servera-datum-samo-struktura.sql
6.
Ponovno postavljanje korisnika mailwatch u sada ispražnjenu bazu mailscanner
#mysql -u root -p
mysql> use mailscanner;
Ovbu naredbu sam morala da stavim kao sliku, jer inače obori WordPress….
MySQL komanda
mysql> select username,password from users;
+———–+———————————-+
| username | password |
+———–+———————————-+
| mailwatch | 2c9e2hh7bf5hjz4318arr551c93b30ea |
+———–+———————————-+
7.
Ponovo pokrenuti MailScanner
#service MailScanner start
8.
Provera urađenog kroz Internet Explorer
Uđemo na MailWatch sajt za server, odemo u stavku “Reports” i pogledamo kako broj poruka kreće od nule….
Pratiti prolazak i logovanje mail-ova.
9.
Prebacivanje urađenog na backup server :
# scp ime-servera-datum-samo-struktura.sql root@11.12.13.14:/backup/MySQL-dump/
# scp ime-servera-datum.sql root@11.12.13.14:/backup/MySQL-dump/

Slani miševi

Dakle još jedan recept sa tikvicama.
Dobar je topao i hladan, može za ručak i za doručak.
1 veća rendana tikvica
4 jajeta
1 prašak za pecivo
so, biber, kari po ukusu
100gr pšeničnog griza
100gr integralnog brašna
oko 400gr običnog brašna
Umešati dobro. Kašikom stavljati po malo u vrelo ulje.
Zato se i zovu miševi, jer imaju repiće …. 😉
Odlično je uz kajmak ili majonez. Hladno sa maslinkama je fantastično.

MailScanner i neželjeni mail

Dakle kako se rešiti neželjenih mail poruka.
Ne spam-a, nego neželjenih tipova attachment-a koji idu uz poruke; na primer avi, wmv, mp3, dll, exe. Ovakve poruke uzimaju prostor i procesorsko vreme, odvlače pažnju korisnika 😉 a mogu i biti opasne po njegov kompjuter…
Dakle kako zabraniti određene attachment-e uz poruke (bilo po tipu dokumenta ili po imenu), a ako ipak neku poruku želite da pustite, kako ih pustiti iz karantina – što će biti dato u nekom od sledećih postova.

Deo u MailScanner.conf fajlu koji se odnosi na ovu problematiku :
Filename Rules = %etc-dir%/filename.rules
Filetype Rules = %etc-dir%/filetype.rules

Fajlovi u kojima se konkretno određuju imena i tipovi zabranjeni za prolaz kroz mail server nalaze se na lokaciji /etc/MailScanner/ :
filename.rules
Određuje za koje mail naloge važi fajl filename.rules.allowall.conf (kojim se propušta sve ka i od tog naloga) a za koje mail naloge važi fajl filename.rules.conf (u koj su stavljene razne zabrane)
filename.rules.allowall.conf
filename.rules.conf

filetype.rules
Određuje za koje mail naloge važi fajl filetype.rules.allowall.conf (kojim se propušta sve ka i od tog naloga) a za koje mail naloge važi fajl filetype.rules.conf (u koj su stavljene razne zabrane)
filetype.rules.allowall.conf
filetype.rules.conf

Evo kako izgledaju fajlovi /etc/MailScanner/filename.rules i filetype.rules :
From: postmaster@moj.domen.rs /etc/MailScanner/filename.rules.allowall.conf
FromOrTo: jedan.nalog@moj.domen.rs /etc/MailScanner/filename.rules.allowall.conf
FromOrTo: default /etc/MailScanner/filename.rules.conf
Naravno, ova dva fajla ne moraju da sadrže iste naloge, ali zadnja linija je obavezno ista u oba fajla, i ona određuje koja pravila važe za sve ostale naloge (sem onih eksplicitno navedenih).

Kako izgledaju fajlovi /etc/MailScanner/filename.rules.allowall.conf i filetype.rules.allowall.conf :
allow .* – –
Ovo u suštini znači da za naloge za koje važe ovi konfiguracioni fajlovi ne postoje nikakve zabrane po pitanju imena ili tipa fajlova zakačenih uz mail poruku.

Fajlovi /etc/MailScanner/filename.rules.conf i filetype.rules.conf već kao takvi postoje na serveru, i u njih samo treba dodati odgovarajuće zabrane :
Na primer u fajl filename.rules.conf može se dodati sledeće :

deny \.avi$ – –
deny \.asf$ – –
deny \.dv$ – –

A u fajl filetype.rules.conf u principu nije bilo potrebe bilo šta dodavati…
Paziti kada se dodaju stavke u bilo koj od ovih fajlova, jer je OBAVEZNO KORISTITI TAB, A NE SPACE!!!!
Ako u tome pogrešite, pri startu MailScanner-a se javlja ovakva greška :

Jun 22 10:54:27 mail-server MailScanner[15582]: Possible syntax error on line 175 of /etc/MailScanner/filename.rules.conf
Jun 22 10:54:27 mail-server MailScanner[15582]: Remember to separate fields with tab characters!

Šema korišćenja ovih fajlova :

I kako izgleda log kada “upecamo” neki zabranjeni fajl :

Jun 22 09:11:19 mail-server MailScanner[7727]: Message q5M7Akkj023525 from 11.12.13.14 (nalog1@domen1) to moj.domen is too big for spam checks (2878908 > 200000 bytes)
Jun 22 09:11:20 mail-server MailScanner[7727]: Filename Checks: (q5M7Akkj023525 fajl.wmv)
Jun 22 09:11:20 mail-server MailScanner[7727]: Saved entire message to /var/spool/MailScanner/quarantine/20120622/q5M7Akkj023525
Jun 22 09:11:20 mail-server MailScanner[7727]: Saved infected “fajl.wmv” to /var/spool/MailScanner/quarantine/20120622/q5M7Akkj023525

Anti spam, ručno pravljene liste, deo 5

Ovakve ručno pravljene liste, mogu se formirati na nekoliko mesta :

  • Na nivou iptables-a (firewall-a)
  • Kroz Sendmail access bazu
  • Kroz bazu crnih i belih lista SpamAssassin-a

Liste na nivou iptables servisa
Sem u slučajevima krajnje nužde, ovde nije dobra ideja stavljati tako nešto. A u slučaju da se stavi, obavezno aktivirati opciju logovanja iptables-a, radi praćenja događanja. Čak i kada se registruje direktni napad sa neke adrese, bolje je to zaustaviti na edge komunikacionim uređajima.

Liste na nivou access baze samog Senmdail-a
Tu vam se svakako MORA nalaziti deo koji se odnosi na lokalni server, mrežu i domen :
localhost.localdomain RELAY
localhost RELAY
127.0.0.1 RELAY
####
10 RELAY
moj.domen.rs OK
A ostatak se može dodati prema potrebama i ukusu, na primer :
From:losa.adresa@spam.domen REJECT
IP.adresa.sa.koje.dolazi.spam REJECT

Posle svake izmene treba generisati access.db bazu i restartovati MailScanner :
# makemap hash access < access # service MailScanner restart Crne i bele liste SpamAssassin-a
Nalaze se u folderu /etc/MailScanner/rules, u dva fajla :
spam.blacklist.rules
spam.whitelist.rules
U obe liste mogu se stavljati IP adrese, mail adrese, ili imena domena.
Primer crne liste :
From: 11.12.13. yes
From: *@nepristojan.domen yes
From: losa@adresa.mail yes
ToOrFrom: default no Ovo je OBAVEZNO na kraju ove liste

Primer bele liste :
From: postmaster@moj.domen yes
To: admin-postmaster@neki.domen yes
FromOrTo: default no Ovo je OBAVEZNO na kraju ove liste

Posle ovih izmena obavezno restartvovati MailScanner!

Kako izgleda kada kada je pošiljalac poruke na crnoj listi :

Jun 21 09:05:32 mail-server MailScanner[13843]: Message q5L75KdY032726 from 100.200.300.400 (nevaljala@mail.adresa) to moj.domen is spam (blacklisted)

BlackBerry problemi

Ako imate BlackBerry komunikaciju (mail server) nakačen na Sendmail, i on odjednom, i bez ikakvog vidljivog razloga počne sve traljavije da radi (najgora kombinacija, čas radi, čas ne radi), OBAVEZNO proveriti DNS resolving za dati Sendmail server….

A evo i spiska IP adresa za BlackBerry.

MailScanner provera rada

Moje verzije sa kojima radim su :
RHEL6U2, MailScanner 4.84.5, SpamAssassin 3.3.1-2, ClamAV 0.97.4, MySQL 5.1.61

Posle svog konfigurisanja, promena i dodavanja ima još jedna, POSLEDNJA provera za rad MailScanner servisa 🙂 :
# MailScanner –lint
(Paziti ovo je – -lint, dakle dva znaka “-” jedan za drugim, bez razmaka)
Pažljivo pratiti izlaz, u kojem se mogu određene greške.
Evo nekih od mogućih grešaka, i kako ih rešiti :
Jedan
Unrar is not installed, it should be in /usr/bin/unrar.
This is required for RAR archives to be read to check
filenames and filetypes. Virus scanning is not affected.
Unrar problem – instalirati unrar RPM
Što se Fedore, CentOS-a i RHEL-a tiče ovde mogu da se nađu RPM-ovi.
Dva
# MailScanner –lint
ERROR: The “envelope_sender_header” in your spam.assassin.prefs.conf
ERROR: is not correct, it should match X-trezor-MailScanner-From
Razlika u “envelope_sender_header” odnosno “Envelope From Header” u spam.assassin.prefs.conf i MailScanner.conf fajlovima.
Staviti u spam.assassin.prefs.conf i MailScanner.conf da bude jednako za ove dve stavke.
Tri
clamscan : unrecognized option ¨–unzip
ERROR:unknown option passed
ERROR:can,t parse the command line
Pogledati fajl , i hešovati označeno :
# vi /usr/lib/MailScanner/clamav-wrapper
#ExtraScanOptions=”$ExtraScanOptions –unzip”
#ExtraScanOptions=”$ExtraScanOptions –unzip=/usr/bin/unzip”
#ExtraScanOptions=”$ExtraScanOptions –jar”
#ExtraScanOptions=”$ExtraScanOptions –jar=/path/to/unzip”
#ExtraScanOptions=”$ExtraScanOptions –tar”
#ExtraScanOptions=”$ExtraScanOptions –tar=/path/to/tar”
#ExtraScanOptions=”$ExtraScanOptions –tgz”
#ExtraScanOptions=”$ExtraScanOptions –tgz=/path/to/tar”

I pogledati fajl i hešovati označeno :
# vi /usr/lib/MailScanner/MailScanner/SweepViruses.pm
# if ($rarcmd && -x $rarcmd) {
# $Scanners{clamav}->{CommonOptions} .= ” –unrar=$rarcmd”;
# MailScanner::Log::InfoLog(“ClamAV scanner using unrar command %s”,
# $rarcmd);
# }
Četiri
Ako se pri zaustavljanju MailScanner-a javlja (ponekad) sledeće :
# service MailScanner stop
Shutting down MailScanner daemons:
MailScanner: commit ineffective with AutoCommit enabled at /usr/lib/MailScanner/MailScanner/CustomFunctions/MailWatch.pm line 93, line 1.
Commmit ineffective while AutoCommit is on at /usr/lib/MailScanner/MailScanner/CustomFunctions/MailWatch.pm line 93, line 1.
[ OK ]
incoming sendmail: [ OK ]
outgoing sendmail: [ OK ]

To se rešava na sledeći način :
U fajlu /usr/lib/MailScanner/MailScanner/CustomFunctions/MailWatch.pm :
sub ExitLogging {
# Server exit – commit changes, close socket, and exit gracefully.
close(SERVER);
#$dbh->commit;
$dbh->disconnect;
exit;
}

Napomena : upis prestaje tek posle prvog sledećeg reseta MailScanner-a…
Pet
# MailScanner –lint
….
Use of “goto” to jump into a construct is deprecated at /usr/share/perl5/Mail/SpamAssassin/Plugin/Check.pm line 409.
….
Ako se javlja ovakva greška u Fedora 14, treba sa spamassassin verzije 3.3.1-5.fc14 preći na verziju 3.3.2-7.fc14
Šest
# MailScanner –lint
….
config: failed to parse line, skipping, in “/etc/mail/spamassassin/mailscanner.cf”: use_auto_whitelist 0
….
U fajlu : /etc /MailScanner/spam.assassin.prefs.conf treba hešovati liniju :
use_auto_whitelist 0
Ovime se ova opcija isključuje, što je i bolje jer daje prilično lažnih pozitiva za spam koji to nije.
Ako baš želite da vam ta opcija radi, mora se omogućiti, što u ovoj verziji SpamAssasin-a nije automatski (videti ovde)
Sedam
Kako proveriti verzije svih modula koji se vrte pod MailScanner-om :
MailScanner -v
Running on
Linux mail-2012.moj.domen 2.6.32-358.0.1.el6.i686 #1 SMP Wed Feb 20 11:05:00 EST 2013 i686 i686 i386 GNU/Linux
This is Red Hat Enterprise Linux Server release 6.4 (Santiago)
This is Perl version 5.010001 (5.10.1)

This is MailScanner version 4.84.5
Module versions are:
1.00 AnyDBM_File
1.30 Archive::Zip
0.23 bignum
1.11 Carp
…..
2.0.0 Text::Balanced
1.40 URI
0.77 version
missing YAML