Linux zgodne komande, deo 4

Kako TAR-ovati više foldera odjednom, is ve što je pod tim folderima, uz očuvanje vlasništva :
#tar cvfp ime-fajla.tar /apsolutni-put-do-foldera
c – kreiranje arhive
v – verbose
f – fajl koji će biti arhiva
p – preserve, čuva karakteristike (vlasništvo, grupa)

Linux – zgodna komanda, deo 3

Jedna mnogo zgodna komanda, ako vam treba da ceo folder, ili možda i ceo server pretražite po ključnoj reči, ali ne u imenu fajla, nego u samom sadržaju fajla :
# grep -H -r “ključna-reč” /home
/home/korisnik1/test1:nmhsdav,jhvfjh,gključna-reč
/home/korisnik2/test2:ključna-reč kjwhagf

Ako se umesto “H” stavi “l” onda se kao izlaz dobijaju samo imena fajlova, ne i lokacija u fajlu gde je ključna reč.
A “r” je rekurzivno, pretražuju se i fajlovi u potfolderima…

Linux backup

Kako raditi backup za bilo šta što imate pod Linux OS-om?
Pa ima dosta divnih free programa za to, ali ja sam odabrala BackupPC, i dobro mi služi (i da, bilo je prilike da se vadi kestenje iz vatre ;-)).
BackupPC se može naći ovde.

Možda jeste malčice stariji, ali dobro radi svoj posao, i što je najlepše radi i za Windows, he he he! Isprobano.
Za oba OS-a radi na nivou fajla, što je meni u proncipu dovoljno. Ja sam ga podigla na RHEL4U5. Jedino što bi bilo lepo da ima, a nema, je dodatni backup site (tj. da bekapuje sam sebe).

BackupPC server, i na šta obratiti pažnju :
Obavezno isključiti SELinux!!! Čudo može da napravi…
Ima nekih Perl modula koji su mu neophodni za rad : Compress::Zlib, Archive::Zip, File::RsyncP, XML::RSS
Takođe mu je neophodan i backuppc nalog, pod kojim radi : # useradd -s /bin/false backuppc
Fajl spustiti, untar-ovati, i pokrenuti instalaciju :
# perl configure.pl

Konfiguracija se nalazi onda u /etc/BackupPC/config.pl
Program se pokreće sa # service backuppc start
Program ima vrlo upotrebljiv WEB interfejs (e, da interfeJs), i treba ga maksimalno koristiti.
Da bi on radio, treba nam Apache, koji treba adekvatno konfigurisati. Dakle izmene u /etc/httpd/conf/httpd.conf fajlu :
………….
User backuppc
Group backuppc
………….
DocumentRoot “/var/www”
………….
LoadModule perl_module modules/mod_perl.so
PerlModule Apache2
………….

SetHandler perl-script
PerlResponseHandler ModPerl::Registry
PerlOptions +ParseHeaders
Options +ExecCGI
Order deny,allow
Deny from all
Allow from 10.11.12
AuthName “Backup administrator”
AuthType Basic
AuthUserFile /etc/httpd/conf/korisnici
U ovom fajlu smo definisali naloge za pristup WEB interfejsu, videti za Basic autentifikaciju pod Apache-om
Require valid-user

…………..

Setenv REMOTE_USER korisnik1
Setenv REMOTE_USER korisnik2

U folderu /var/www/cgi-bin podesiti potrebna vlasništva :
-r-xr-xr– 1 backuppc backuppc 3993 Dec 4 15:53 BackupPC_Admin
lrwxrwxrwx 1 root root 13 Dec 4 15:59 html -> /var/www/html
(e da, link je neophodan, i pravi se sa : # ln -s /var/www/html /var/www/cgi-bin)

Program se poziva sa :
http://10.10.10.10/cgi-bin/BackupPC_Admin

Kada se bekapuju Linux hostovi, koristi se rsync servis, uz predhodnu razmenu ključeva između BackupPC servera i klijenta koji se bekapuje, ali o tome u sledećim postovima.

BlackBerry server

Šta ako neko iz vaše mreže hoće da koristi BlackBerry (u daljem tekstu BB ;-)) uređaj?
I šta uopšte BB uređaj/telefon radi?
Pa BB u stvari obaveštava svog korisnika svaki put kad dobije mail, i naravno taj mail može da se pročita, na njega da se odgovori, itd. Naravno to sve zajedno uopšte nije TAKO prosto kao što zvuči (nikad nije, zar ne?).
Da bi stvari tako radile kako je potrebno za BB uređaj, potrebno je da BB serveri kominiciraju sa vašim lokalnim mail serverom, sa koga vuku korisničku poštu, i preko koga je šalju.
Takođe BB uređaj treba preko mobilne mreže takođe da prostupa vašem mail serveru, kao i BB serverima.

Pa postoje dve opcije za realizaciju cele ove priče :
1. Celu tu skalameriju pustiti na vaš lokalni mail server – ne naročito sigurna, ili preporučljiva opcija
2. Izdvojiti jedan mail server (može i neka stara mašina, relativno slaba, ako se vrti pod Linux-om (a na čemu bi brugom???) – dovoljan je i 1G RAM-a i neki mali disk) i žrtvovati ga, a u slučaju security problema, to je nešto što se može relativno bezbolno rekonfigurisati, provremeno ugasiti i sl.

Jasno je šta je bolje uzeti, zar ne?

Ako se uzme konfiguracija broj 2, onda to izgleda ovako nekako :

Šta se konfiguriše i kako na kom od servera, biće u sledećim postovima.

Fedora i ubacivanje novog repository-ja

U pitanju je Fedora 14, koja u startu ima samo svoj repository.
Ali kako hoću da vidim malo kako izgledaju OpenSource zamene za MS Exchange, i u tu svrhu sam izabrala Citadel (videti o tome ovde), naleteh na problem.
Nikako da Citadel repo dodam u moju Fedoru.

Dakle evo postupka :
# cd /etc/yum.repos.d
# wget http://download.opensuse.org/repositories/home:homueller:citadel/Fedora_15/home:homueller:citadel.repo
Ako ovako neće da se skine citadel repo fajl (jer izgleda da im link ne valja), pa napravite ga peške, tako što ćete otići na glavni sajt, i onda korak po korak do željenog repo fajla. Na lokaciji /etc/yum.repos.d napravite fajl željeno-ime.repo i u njega ubacite iskopirani tekst. I radiće 😉

Evo kako u tom slučaju izgleda fajl /etc/yum.repos.d/citadel.repo :
[home_homueller_citadel]
name=Citadel Groupware Server (Fedora_16)
type=rpm-md
baseurl=http://download.opensuse.org/repositories/home:/homueller:/citadel/Fedora_16/gpgcheck=1
gpgkey=http://download.opensuse.org/repositories/home:/homueller:/citadel/Fedora_16/repodata/repomd.xml.key
enabled=1

Greška koja se obično javlja kada pokušavate da skinete repo fajl ka kome link ne valja je ovako nešto :
Resolving download.opensuse.org… 195.135.221.134, 2001:67c:2178:8::13
Connecting to download.opensuse.org|195.135.221.134|:80… failed: Connection timed out.
Connecting to download.opensuse.org|2001:67c:2178:8::13|:80… failed: Address family not supported by protocol.
# less citadel.repo
Tu u fajlu treba da bude sledeće : enabled=1
I dalje raditi normalno :
# yum install po-želji

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/