Copyright ©2003.-2017. CARNet. Sva prava pridržana.
Mail to portal-team(at)CARNet.hr
SquirrelMail je jedna od najpopularnijih aplikacija otvorenog programskog koda namijenjena rukovanju elektroničkom poštom putem web sučelja i IMAP protokola, tzv. "webmail" aplikacija. Njezina se funkcionalnost može proširiti s mnogim modulima, a najbitniji od njih je dobavljiv i u obliku CARNet paketa (squirrelmail-change-pass-cn). Najveća prednost webmaila je to što ne traži dodatna podešavanja, i sav mail ostaje na poslužitelju, koji se kasnije može obristi ili prebciti na osobno računalo putem POP3 protokola.
Službena adresa SquirrelMaila je http://www.squirrelmail.org [1].
Kako povećati veličinu privitka kod SquirrelMaila, pitanje je koje se često postavlja helpdesku. Naime, sistemci znaju povećati MaxMessageSize u sendmail.mc, ali to nije dovoljno, jer treba "frizirati" i PHP.
PHP4:
PHP ima podešeno ograničenje koji određuje koliko velika može biti pridružena datoteka. Za promjenu tog ograničenje potrebno je urediti datoteku php.ini (najčešće je to /etc/php4/apache/php.ini). Treba promjeniti slijedeće vrijednosti:
memory_limit
post_max_size
upload_max_filesize
Upisuje se vrijednost u byteovima (1,048,576 po MB), ali se može
upisati i u MB (npr. 8M).
Za slanje većih datoteka treba promijeniti vrijednost varijable upload_max_filesize.
Pripazite da memory_limit bude veća od vrijednosti post_max_size.
Poslije unešenih promjena ponovo pokrenite Apache.
Sendmail:
Kao što smo rekli na početku, ograničenje treba povećati i u konfiguraciji sendmaila. To se radi sa direktivom MaxMessageSize u /etc/mail/sendmail.mc. Evo primjera:
O MaxMessageSize=10000000
Zatim treba obnoviti sendmail.cf i restartati sendmail naredbom:
# sendmailconfig
Squid:
Ako koristite Squid proxy, potrebna je još i promjena direktive
"request_body_max_size". Podrazumijevana vrijednost je 1MB. I Squid treba restartati.
Više o tome na linkovima:
http://www.squirrelmail.org/wiki/en_US/AttachmentSize [3]
http://nz2.php.net/manual/en/ini.core.php#ini.memory-limit [4]
http://nz2.php.net/manual/en/ini.core.php#ini.post-max-size [5]
http://nz2.php.net/manual/en/ini.core.php#ini.upload-max-filesize [6]
Jedan od najpopularnijih sustava za rad s elektroničkom poštom je svakako Squirrelmail. Korisnicima je ovaj webmail dosta drag, je nije težak za uporabu, ima mnoštvo modula, poput onog za promjenu zaporke, a vjerojatno i zbog toga što na naslovnoj stranici ima simpatičnu sliku vjeverice. S druge strane, i administratori ga vole jer dolazi u obliku CARNet paketa koji svu konfiguraciju obavlja umjesto njih, a eventualne kasnije izmjene su jednostavne (ili jednostavno možete rabiti CARNetov servis webmail.carnet.hr [9]).
Ipak, squirrelmail kod preseljenja na drugi poslužitelj, a bez uloženog dodatnog truda, gubi neke CARNet modifikacije, kao i sve promjene koje ste samostalno napravili. Ovo uglavnom nije problem, jer se sve postavke mogu ručno vratiti.
Jedan od najčešćih problema je gubitak hrvatskog jezika. Ovo je ponekad prouzrokovano greškom u konfiguraciji, bilo u osnovnoj, bilo u pojedinim korisničkim konfiguracaijama.
Za početak, provjerite nalazi li se ovaj redak u datoteci /usr/share/squirrelmail/config/config.php:
$squirrelmail_default_language = 'hr_HR';
Također, provjerite jesu li instalirani paketi locales i squirrelmail-locales, te provjerite postoji li unos hr_HR ISO-8859-2 u /etc/locale.gen:
# grep hr_HR /etc/locale.gen
hr_HR ISO-8859-2
Ukoliko nije, napravite sljedeće:
# echo "hr_HR ISO-8859-2" >> /etc/locale.gen
# dpkg-reconfigure -f noninteractive locales
Još jedan korak je provjera postoji li prijevod na hrvatski:
# ls -l /usr/share/squirrelmail/locale/hr_HR/LC_MESSAGES/squirrelmail.mo
-rw-r--r-- 1 root 56385 Jan 6 2007 /usr/share/sq..mail/locale/hr_HR/LC_MESSAGES/squirrelmail.mo
Zadnji korak je provjera postavki kod korisnika, jer oni individualno mogu odrediti jezik:
# grep lang /var/lib/squirrelmail/data/*
/var/lib/squirrelmail/data/korisnik.pref:language=de_DE
Dakle, korisnik je sam promijenio jezik (u de_DE, njemački), pa mu savjetujte da vrati na hrvatski, ili to učinite sami umjesto njega.
Naravno, sve ovo prilikom instalacije CARNetov squirrelmail paket napravi umjesto vas, ali nije loše znati kako to ručno podesiti. Ukoliko je sve podešeno kao što je gore opisano, hrvatski jezik na Squirrelmailu će raditi.
Spomenuli smo korisničke postavke. Logično je da se te datoteke moraju prebaciti na drugi poslužitelj kako bi korisnicima ostale stare postavke, uključujući i adresare. Svi korisnički podaci se nalaze u direktoriju /var/lib/squirrelmail/data/:
# ls -l /var/lib/squirrelmail/data/
-rw------- 1 www-data www-data 59 Dec 6 2005 boris.pref
-rw------- 1 www-data www-data 59 Dec 22 2005 doris.pref
-rw------- 1 www-data www-data 659 Dec 22 2005 doris.abook
-rw------- 1 www-data www-data 0 Feb 28 2006 fran.abook
-rw------- 1 www-data www-data 59 Feb 28 2006 fran.pref
Ovdje se mogu nalaziti i druge datoteke, što također možete prebaciti na drugi poslužitelj. Važno je samo da su datoteke u vlasništvu korisnika "www-data", odnosno korisnika pod kojim se "vrti" web poslužitelj.
Dosta često se mogu čuti upiti kako se mogu povećati veličine attachmenata. Kako je Squirrelmail pisan u PHP-u, ovo je čisto PHP postavka. Iako smo o tome već pisali, ponovit ćemo upute.
U datoteci /etc/php4/apache2/php.ini, odnosno /etc/php5/apache2/php.ini treba upisati, odnosno promijeniti sljedeće postavke:
upload_max_filesize = 256M
memory_limit = 64M
post_max_size = 64M
Vrijednosti su određene količinom memorije na poslužitelju (16M za manje od 512M, 32M za manje od 1GB, 64 za 1 GB i više), dok upload_max_filesize može biti i više. Nemojte pretjerivati s vrijednostima, da korisnici ne bi zagušili poslužitelj. Ne treba zaboraviti da treba sinhronizirati veličinu attachmenta s vrijednošću message_size_limit u postfixu, u ovom slučaju je to 64M:
message_size_limit = 67108864
Važno: nemojte pisati "MB", nego "M". Zanimljiva posljedica pisanja "MB" je da će se to protumačiti kao "B", dakle maksimalna veličina attachmenta će biti 256 bajtova!
Od ostalih najčešće korištenih postavki, spomenut ćemo:
$org_logo = SM_PATH . 'images/sm_carnet_logo.png';
$org_logo_width = 0;
$org_logo_height = 0;
Ove postavke definiraju logotip ili neku drugu oznaku koja će se pojaviti iznad naslovne stranice Squirrelmaila. Imena druge dvije varijable sasvim jasno govore da su namijenjene određivanju dimenzija logotipa i time bržem učitavanju stranice, ali nisu obvezne pa im možete ostaviti vrijednost '0'.
$default_charset = 'iso-8859-2';
U slučaju da rabite hrvatski jezik kao osnovni, ova postavka je obvezna.
$domain = trim(implode('',file('/etc/'.(file_exists('/etc/mailname')?'mail':'host').'name')));
CARNet paket pokušava da se domena doznaje iz datoteke /etc/mailname, ne iz datoteke /etc/hostname, koja sadržava samo ime računala bez domene. Preporučujemo da u /etc/mailname stavite puno ime računala (FQDN), koje dobijete pomoću naredbe "hostname --fqdn".
$data_dir = '/var/lib/squirrelmail/data/';
Ovdje možete promijeniti lokaciju gdje se drže korisnički podaci, zgodno ako imate neki dijeljeni folder gdje se podaci nalaze, ili jednostavno želite te podatke imati na drugom mjestu.
$imap_server_type = 'dovecot';
U standardnoj CARNet-Etch distribuciji, ovdje može stajati samo 'dovecot'. Promijenite ako imate drugi IMAP poslužitelj, npr. Cyrus.
$default_folder_prefix = '';
U varijablu $default_folder_prefix se upisuje relativna putanja od IMAP root foldera do korisničkih mail pretinaca. Najčešće je dovoljno ovu opciju ostaviti praznom, ali ponekad je potrebno navesti "mail", "Mail" ili neki drugi folder gdje se nalaze korisnikovi pretinci (/home/korisnik/mail, odnosno /home/korisnik/Mail). Ova postavka je povezana s postavkom mail_location* u Dovecot POP3/IMAP poslužitelju, te sve promjene treba koordinirati s promjenama u Dovecotu. Pretpostavljena konfiguracija na CARNetovim poslužiteljima je:
Dovecot:
mail_location = mbox:~/mail:INBOX=/var/mail/%u
Squirrelmail:
$default_folder_prefix = '';
Ovo znači da se korisnički pretinci očekuju u /home/korisnik/mail, a u tom slučaju IMAP klijente nije potrebno posebno konfigurirati.
* Napomena: varijabla "mail_location" u Dovecotu se nekad zvala "default_mail_env".
TAGS: SQUIRRELMAIL VJEVERICA
[12]Squirrelmail očigledno pokazuje znakove starenja, jer se problem s prikazom poruka i dalje pojavljuje. Ukoliko poruka sadrži naše dijakritičke znakove, moguće je da poruka neće biti prikazana, odnosno neće biti prikazan pošiljatelj ili samo naslov poruke. Čini se da se kod nekih korisnika ovaj problem ne događa, ili je riješen zakrpom koju smo objavili u članku http://sistemac.carnet.hr/node/1332 [13]. No, ne kod svih.
Kolegi Kružiću nije pomoglo ni navedena zakrpa, pa je još prošle godine našao dodatnu zakrpu, citiramo:
U datoteci /usr/share/squirrelmail/functions/i18n.php sam u funkciji charset_decode unio sljedeću promjenu (187. redak):
if (! $save_html) $string = sm_encode_html_special_chars($string);
sam zamijenio s
if (! $save_html) $string = sm_encode_html_special_chars($string, ENT_COMPAT, 'ISO-8859-1');
Nakon ove promjene mi sve prikazuje uredno.
Kako nam se neki dan javio još jedan kolega s istim problemom, očigledno u pojedinim kombinacija klijenata i različitih encodinga mailova (ISO8859-2, UTF-8, Windows-1250...) može doći do pogrešnog prikaza mailova. Ukoliko imate sličnih problema, primjenite ovu zakrpu, ili jednostavno prijeđite na pouzdan https://webmail.carnet.hr/ [14].
Nažalost, u sljedećem stabilnom izdanju Debiana dolazi ista inačica Squirrelmaila. Novi Squirrelmail nije čak ni u unstableu, nego u experimentalu. Je li vrijeme za izbacivanje Squirrelmaila iz CARNetove distribucije Debiana?
Napišite svoje mišljenje u komentarima.
Squirrelmail je, kako smo već nekoliko puta napominjali, izuzetno popularan webmail sustav. Dio popularnosti duguje mnogim dodacima (pluginovima), koji proširuju mogućnosti samog Squirrelmaila. Pozabavit ćemo se dodatkom kojeg nema u standardnoj Debian distribuciji, ali dolazi u obliku CARNetovog paketa squirrelmail-change-pass-cn.
Ovaj dodatak omogućava korisniku da primijeni e-mail zaporku na sustavu, putem poppassd procesa, dakle na jednostavan i relativno siguran način. Pri tome ne mora poznavati naredbe Unix/Linux ljuske, što je najveća prednost. Ukoliko to njegov e-mail klijent dopušta, može i njega upotrijebiti za promjenu zaporke.
Squirrelmail-change-pass-cn paket ovisi o dva paketa: squirrelmail-compatibility (omogućava kompatiblinost između različitih inačica dodataka i samog Squirrelmaila) i poppassd (servis koji omogućava promjenu zaporke).
Nakon instalacije paketa, servis poppassd će se pokrenuti preko xinetd superserver servisa, a sam dodatak će se instalirati i aktivirati unutar Squirrelmaila (ne morate ga ručno instalirati). Vaši korisnici će moći promijeniti zaporku, ako nakon prijave u Squirrelmail kliknu na "Postavke" (ili "Options"), te potom na "Change Password". Pri tome se u /etc/hosts.allow (libwrap [16]mehanizam) dodaje da se poppasd servisu može pristupiti samo sa localhosta (dakle, zaporka se može promijeniti samo direktno preko Squirrelmaila), pa sigurnosnih problema ne bi smjelo biti.
Vrlo jednostavno, sigurno i efikasno rješenje.
No, kako se poppassd daemon vrti pod root korisnikom, moguće je zaobići određena ograničenja navedena u PAM (Pluggable Authentication Modules [17]) sustavu. Primjerice, unos min=4 u /etc/pam.d/common-password:
password required pam_unix.so nullok obscure min=4 max=8 md5
određuje da zaporka mora biti dugačka najmanje 4 znaka (opcija max, za razliku, ne znači maksimalnu duljinu zaporke, nego duljinu zaporke nakon koje se dodatne provjere kompleksnosti ne vrše!). No, ove odredbe ne vrijede za root korisnika, pa tako ni za poppassd daemon. Korisnik će u ovom slučaju moći napraviti zaporku duljine manje od 4 znaka, pa čak i jedan znak. Ovo je određeni sigurnosni rizik, pa je potrebno onemogućiti pravljenje zaporki premale duljine.
Kako bi to napravili napravite datoteku (ako već ne postoji) /usr/share/squirrelmail/plugins/change_pass/config.php
sa sadržajem:
#$poppass_server = 'localhost';
#$poppass_port = 106;
$min_pass_length = 8;
$max_pass_length = 9999999;
Ova datoteka već postoji kao config_example.php u istom direktoriju, pa je možete jednostavno preimenovati i promijeniti. Jedina varijabla koju trebate promijenti je $min_pass_length, za čiju vrijednost preporučujemo da stavite 8. Nakon ovoga, korisnici neće moći kreirati zaporke kraće od osam znakova. Nikakav restart apache2 procesa nije potreban, a u logovima (/var/log/syslog) ćete u slučaju da korisnik pokuša staviti prekratku zaporku moći vidjeti:
Jan 27 10:57:00 server poppassd[6145]: PAM error: BAD PASSWORD:
it is WAY too short
U suprotnom, kad je sve u redu, moći ćete vidjeti samo obavijest:
Jan 27 11:01:36 server poppassd[6595]: changed POP3 password for korisnik
Druge promjene ne morate raditi. U dokumentaciji potražite više [18], ako uopće ima što više za znati...
Squirrelmail je svima poznat webmail sustav, jer se godinama isporučuje u obliku CARNetovog paketa i time briga sistemca oko podešavanja prestaju. Mnogi su se naviknuli na njegovo sučelje, te ne pomišljaju zamjenu za neki jači webmail sustav. Većini korisnika, zaista, i ne treba puno mogućnosti, pa im je uz poznato i jednostavno sučelje Squirrelmail sasvim dovoljan. No, neki korisnici ipak imaju više potreba, što je nedavno prouzrokovalo zanimljiv problem.
Naime, problem je nastao kod korisnika koji je imao blizu 300 korisnika u svom adresaru. To nije nikakav problem, iako Squirrelmail smješta kontakte u flat tekstualnu datoteku (/var/lib/squirrelmail/data/korisnik.abook), što nije pretjerano dobar način pravljenja baze podataka, ali za ovu svrhu radi dobro. (Za vašu informaciju, Squirrelamail korisničke podatke može spremati u MySql bazu, a uz plugin i u LDAP imenik).
Kad je korisnik htio obrisati višak kontakata iznad 200-og unosa, to nije mogao učiniti. Nikakve posebne poruke o greški nije bilo. Kolega sistemac se javio za zamolbom za pomoć, no standardne provjere nisu dale rezultata. No, na sugestiju kolege i uz pomoć logova (/var/log/user.log, odnosno /var/log/syslog), uspjelo se doći do poruke o greški:
Jan 21 13:21:31 server suhosin[20984]: ALERT - configured POST variable
limit exceeded - dropped variable '1:email@domena.hr' (attacker
'161.53.XX.YYY'), file '/usr/share/squirrelmail/src/addressbook.php')
Sada je moguće odrediti "krivca": Suhosin. Suhosin je modul za zaštitu PHP koda od poznatih, ali i nepoznatih napada. To čini tako da ograničava određene tipove pristupa, slanja i primanja web formi i slično. U ovom slučaju, ograničio je pristup POST metodi slanja podataka serveru, jer sadržava previše unosa. Kad pogledamo default vrijednosti, vidjet ćemo zbog čega je došlo do problema:
;suhosin.post.max_vars = 200
Sve vrijednosti Suhosin sprema u datoteku /etc/php5/conf.d/suhosin.ini, a iako su zakomentirane, sve te vrijednosti su ukompilirane u sam Suhosin. Ukoliko želite neku vrijednost promijeniti, samo je otkomentirajte i stavite novu vrijednost. U našem slučaju, i nakon nekoliko pokušaja, došli smo do zadovoljavajućeg rezultata:
;suhosin.post.max_vars = 200
suhosin.post.max_vars = 1024
;suhosin.request.max_vars = 200
suhosin.request.max_vars = 1024
Dakle, povećali smo vrijednost oko 5 puta. Sama vrijednost zapravo i nije bitna, radilo bi vjerojatno i neka druga (500, 700, 1000...), bitno je zapamtiti nekoliko stvari ukoliko imate instaliran Suhosin:
- provjerite logove (/var/log/user.log i /var/log/syslog) kad neka PHP web aplikacija ne radi kako treba
- provjerite i druge varijable koje bi mogle utjecati na problem (u ovom slučaju ".request")
- ne zaboravite restartati Apache, kako bi se suhosin modul ponovo inicijalizirao
Više informacija možete potražiti na web stranici projekta, koju svakako konzultirajte prije nego što idete mijenjati osnovne vrijednosti Suhosina:
http://suhosin.org/stories/index.html [19]
Na Squirrelmail smo se svi navikli, a pogotovo naši korisnici. Zato, kada Squirrelmail ne radi, nastaje panika (iako je dostupno puno bolje i moćnije sučelje na sustavu Horde/IMP na http://webmail.carnet.hr [9]). Jedan od dosad nezabilježenih problema je problem s prijavom nakon nadogradnje na Wheezy, odnosno problem s prekidima sjednica kada se jednom uspijemo prijaviti. Jedan kolega je poslao upit da "nemoguće je prijaviti se u Squirrelmail, a u logovima je sve izgleda regularno", i zaista:
Jun 9 13:32:23 server slapd[30725]: conn=8077 op=293 ENTRY
dn="uid=pperic,dc=domena,dc=hr"
Jun 9 13:32:23 server dovecot: imap-login: Login: user=<pperic>,
method=PLAIN, rip=127.0.0.1, lip=127.0.0.1, mpid=25848, secured,
session=<iY1fkGX74gB/AAAB>
Jun 9 13:32:23 server dovecot: imap(pperic): Disconnected: Logged out
in=44 out=721
Jun 9 13:32:23 server 0: Successful webmail login: by pperic
(server.domena.hr) at 193.198.X.Y on 09/06/2014 11:32:23:
U web sučelju Squirrelmaila piše samo "Pogreška: za pristup ovoj stranici nužno je ulogirati se". Dodatno, svakih nekoliko puta je moguće prijaviti se, a onda nekoliko puta nije.
Nakon što smo zamijenili zaostalu konfiguraciju s izdanja Squeeze s onom iz PHP-a 5.4.4, te izbacili neke module, Squirrelmail nije proradio. No, pronašli smo na identičan problem opisan na adresi:
http://squirrelmail.5843.n7.na bble.com/login-problems-with-1 -4-23-svn-td25746.html [20]
Problem se odnosi na aktualnu inačicu Squirrelmaila u Wheezyju, i do sada se manifestirala samo u jednom slučaju. Ukoliko imate ovaj problem, odgovarajuća zakrpa se nalazi na http://sourceforge.net/p/squirrelmail/code/14444 [21].
U biti, patchiranje se svodi samo na dvije izmjene, koje možete napraviti ručno.
U datoteci /usr/share/squirrelmail/functions/plugin.php u retku 71 umjesto
$ret = '';
treba staviti
$ret = NULL;
U datoteci /usr/share/squirrelmail/src/read_body.php u retku 669 umjesto
if($ret != '') {
treba staviti
if(!is_null($ret)) {
Ne moramo napominjati, ova dvije sitne promjene su riješile problem.
Links
[1] http://www.squirrelmail.org
[2] https://sysportal.carnet.hr./sysportallogin
[3] http://www.squirrelmail.org/wiki/en_US/AttachmentSize
[4] http://nz2.php.net/manual/en/ini.core.php#ini.memory-limit
[5] http://nz2.php.net/manual/en/ini.core.php#ini.post-max-size
[6] http://nz2.php.net/manual/en/ini.core.php#ini.upload-max-filesize
[7] https://sysportal.carnet.hr./taxonomy/term/22
[8] https://sysportal.carnet.hr./taxonomy/term/25
[9] http://webmail.carnet.hr
[10] https://sysportal.carnet.hr./taxonomy/term/11
[11] https://sysportal.carnet.hr./taxonomy/term/28
[12] https://sysportal.carnet.hr./
[13] https://sysportal.carnet.hr./node/1332
[14] https://webmail.carnet.hr/
[15] https://sysportal.carnet.hr./taxonomy/term/17
[16] http://en.wikipedia.org/wiki/Libwrap
[17] http://en.wikipedia.org/wiki/Pluggable_Authentication_Modules
[18] http://www.squirrelmail.org/plugin_view.php?id=21
[19] http://suhosin.org/stories/index.html
[20] http://squirrelmail.5843.n7.nabble.com/login-problems-with-1-4-23-svn-td25746.html
[21] http://sourceforge.net/p/squirrelmail/code/14444