2008. dec. 29.

Roundcube webmail telepítése, és frissítése

(Majdnem) Karácsonyi időtöltés gyanánt frissítenem kellett a szerveremen levő Roundcube Webmail ,,böngésző-alapú többnyelvű IMAP klienst''.
Ennek oka a Klaci által írt e-mail, amiből csak néhány sort idéznék:
,,Hatodik erzekem azt sugja, hogy lassan ideje lenne centauron roundcube-t frissiteni.
...
http://secunia.com/advisories/33169/
...
Amugy kellemes karacsonyt, es boldog uj evet mindenkinek! :)
"
Hát kellemest. Valójában már költözéskor meg kellett volna ejtenem a dolgot, de hajnali 3-kor már nem volt kedvem hozzákezdeni.

Előkészületek

Először gyártottam egy "Karbantartás alatt" lapot, amit szépen betettem a webmail-ek helyére. Így nézett ki a dolog:

Ezután készítettem backup-ot mindenről. Ez egy nagyon fontos lépés, hasznát is vettem a későbbiekben.
Nekem két változata volt a webmailnek. Volt egy "stable" a /var/roundcube könyvtárban, és egy "testing" a /var/www/vhost/roundcube könyvtárban. Ezeket letaroltam:

tar cvzf roundcube.20081224.tar.gz /var/roundcube/
tar cvzf roundcube.20081224.tar.gz /var/www/vhost/roundcube/

Majd a MySQL adatbázisokból is készítettem egy dump-ot:

mysqldump --user=root -p --opt roundcubemail | gzip -c -9 > /root/backup_roundcube_20081224/roundcube_20081224.sql.gz

mysqldump --user=root -p --opt rcwmtestingdb | gzip -c -9 > /root/backup_roundcube_20081224/roundcube_test_20081224.sql.gz


A Roundcube telepítése

A telepítés előtt ellenőrizni kell néhány előkövetelmény meglétét. Szükségünk van egy Apache webszerverre (jó esetben ilyennel már rendelkezünk :) ), a PHP 4.3.1-es verziójára (minimum, nekem 5.2.0-ás van) és PCRE-re (Perl Compatibile Regular Expression). Adatbázisnak MySQL, de más adatbázismotor is támogatott (pl. PostgreSQL).
A PHP beállításait nem árt ellenőrizni. A php.ini (/etc/php5/apache/php.ini) fájlban keressük meg a következő sorokat:

  • hibalog:

    • error_reporting = E_ALL & ~E_NOTICE

  • fájl feltöltés engedélyezése (levélmellékletek miatt):

    • file_uploads = On

  • fájl feltöltési limit (a mellékleteknek megfelelően, a levelező szerverhez szinkronizálva)

    • upload_max_filesize = 10M

Ha ezek megvannak, akkor kezdődhet a telepítés:

  1. Szerezzük be a legújabb Roundcube verziót innen! (A post írásakor ez a 0.2-beta.)

  2. Csomagoljuk ki a cél könyvtárba a fájlt! (Nekem ez most a /var/www/vhost/roundcube lesz.)

  3. Ellenőrizzük le, hogy a roundcube könyvtár /temp és /logs alkönyvtáraihoz hozzá fér-e a webszerverünk! Ha nem, akkor

    chown -R www-data roundcube_konyvtar/temp
    chmod +w roundcube_konyvtar/temp
    chown -R www-data roundcube_konyvtar/logs
    chmod +w roundcube_konyvtar/logs

  4. Hozzunk létre az adatbázist! Ehhez a következő lépéseket hajtsuk végre:

    1. Indítsuk el a MySQL adatbázis kezelőt adminisztrációs jogokkal! (root-ként mysql -p, majd adjuk meg a jelszót!)

    2. Hozzunk létre egy új adatbázist!

      CREATE DATABASE roundcube_testing DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

    3. Adjunk hozzá egy felhasználót, és jelszót az új adatbázisunkhoz!

      GRANT ALL PRIVILEGES ON roundcube_testing.* TO roundcube_tester@localhost IDENTIFIED BY 'jelszó';

      A 'jelszót' értelem szerűen cseréljük le ki!

    4. Az esetleges hazárdok elkerülése végett adjuk ki a következő parancsot is:

      FLUSH PRIVILEGES;

    5. Hozzuk létre az adatbázis tábláit! Ehhez a következő parancsot adjuk ki:

      mysql -p -D roundcube_testing < /roundcube_mappa/SQL/mysql5.initial.sql

      , ahol a mysql5 helyett a saját adatbázis-kezelőnknek megfelelő változatot használjuk!

  5. Nevezzük át a

    /roundcube_mappa/config/*.inc.php.dist

    fájlokat

    /roundcube_mappa/config/*.inc.php-re

  6. Szerkesszük meg a /roundcube mappa/config/main.inc.php fájl tartalmát:

    $rcmail_config['default_host'] = 'ssl://imap.sch.bme.hu:993'; //IMAP SSL támogatással
    $rcmail_config['default_port'] = 993;
    $rcmail_config['mail_domain'] = 'sch.bme.hu';
    $rcmail_config['smtp_server'] = 'ssl://mail.sch.bme.hu';
    $rcmail_config['smtp_port'] = 465; //SMTP SSL
    $rcmail_config['session_lifetime'] = 10;

    A szerverek elérési útját értelemszerűen cseréljük ki a nekünk megfelelőre!

  7. Adjuk meg a /roundcube_mappa/config/db.inc.php beállításait:

    $rcmail_config['db_dnsw'] = 'mysql://roundcube_tester:jelszó@localhost/roundcube_testing';

  8. Kezdjünk el őrülni! Az új webes levelezőkliensünk elvileg működik. :)


A Roundcube frissítése

A Roundcube frissítése hasonló a telepítéshez, ám itt nem kell új adatbázist létrehozni, csak az adatbázist tábláit kell frissíteni a következő módon:

mysql -p -D roundcubemail < /var/roundcube/SQL/mysql.update.sql

Ezután a main.inc.php és db.inc.php fájlokat kell kicsit átalakítani, ahogy az már a telepítésnél is le van írva.

Személyes gondok :)

Miután frissítettem a webmail-t a következő error-ral találtam magam szemben. A bejelentkező felület szépen megjelent, ahol megadtam a szükséges sztringeket, ám a „Belépés” gombra kattintás után ezt kaptam:

SERVICE CURRENTLY NOT AVAILABLE!
Error No. [0x01F4]

Hosszas kutakodás, adatbázis törlés, újrapakolás, tesztelgetés, hazárdok észlelése, káromkodás után a következő megoldást találtam:

A main.inc.php fájlban a

$rcmail_config['enable_caching'] = TRUE;

sor értéket FALSE-ra állítottam!
Ezután a hiba megszűnt. Sikeresen frissítettük a kliensünket. :)

Az eredmények itt láthatóak (kipróbálni csak SCHAccount-tal rendelkezők tudják ;)):
https://webmail.sch.bme.hu
https://roundcube.sch.bme.hu

2008. nov. 15.

PostgreSQL adatbázis létrehozása és a hozzátartozó jogosultságok beállítása

A héten érkezett egy mail, amiben nem csak a szokásos MySQL adatbázist kérte a felhasználó, hanem PostgreSQL-t is. Most először fordult elő ilyen kérés, amióta a dbadmin (is) én vagyok. Természetesen semmit nem tudtam arról, hogyan működik ez a "postgreizé".
A MySQL adatbázisok létrehozása egyszerű: elindítom a konzolt, kiadok néhány SQL parancsot, aztán már megy is az e-mail az eléréshez szükséges adatokkal. A PostgreSQL még ennél is egyszerűbbnek tűnt, hiszen itt a következőket kell csak tenni:

createuser -P -E

Ezután meg kell adni a felhasználó nevét, majd 3 kérdésre kell helyesen válaszolnunk :)

Shall the new role be a superuser? (y/n) (A helyes válasz az "n")
Shall the new role be allowed to create databases? (y/n) (A helyes válasz az "n")
Shall the new role be allowed to create more new roles? (y/n) (A helyes válasz az "n")

Természetesen mindezt akár kapcsolókkal is megadhatjuk:

createuser -P -E -S -D -R

Ezután létrehozzuk az adatbázist:

createdb -O felhasznalo -E utf8 adatbazis

A -O kapcsolóval megadjuk az adatbázis tulajdonosát, az -E kapcsolóval pedig szerintem mindenki rájön mit tudunk közölni a rendszerrel :)
Ezek után elvileg készen vagyunk, vagyis úgy gondoltam, hogy így van. Tévedtem.
A PostgreSQL rendszer jogosultság kezelése eltérő a már számomra "ismert" MySQL-től. Miután létrehoztam a felhasználót, és még magamnak is kreáltam egyet, majd egy adatbázist, amelynek a tulajdonosának a felhasználót adtam meg, meglepődve tapasztaltam, hogy én is hozzáférek az adatbázishoz. Sőt, nem csak hozzáférek, de új táblát is létre tudok benne hozni. Ugyan a már létezőket nem tudom módosítani, sem olvasni, de minden jogom megvan ahhoz, hogy jól telerakjam mindenféle crap-pel. Ez így nagyon nem jó!
A megoldásra először Cassus vezetett rá, aztán pedig Roadkill erősített meg a dologban. A PostgreSQL konfigurációs fájljai között van egy pg-hba.conf nevű. (Nekem a Debian rendszeremen a /etc/postgresql/8.1/main könyvtárba található) Ebben a fájlban lehet megadni, hogy melyik felhasználó honnan, és melyik adatbázishoz férjen hozzá. A következő sort kell beszúrni a többi közé:

local adatbazis felhasznalo md5

Ezután újra kell indítani az adatbázis rendszert, hogy az új szabályok érvénybe léphessenek:

/etc/init.d/postgresql-8.1 restart

Ha ezek után megpróbálunk egy olyan adatbázishoz hozzáférni, amihez nincs jogosultságunk, akkor a következő hibaüzenetet kapjuk:

psql: FATAL: no pg_hba.conf entry for host "[local]", user "reedcourty", database "adatbazis", SSL off

Ha valakinek kedve szottyanna egy kicsit megismerkedni a PostgreSQL-lel, akkor látogassa meg a http://www.postgresql.org oldalt, vagy pedig egyszerűen csak essen neki a http://www.postgresql.org/docs/8.1/interactive/index.html címen található dokumentációnak.

Források:



2008. aug. 26.

PostScript fájlok importálása GIMP-be

Találtam néhány postscript fájl a gépemen. Gondoltam kipróbálom, hogy mit tud velük alkotni a GIMP. Én a GIMPPortable-t használom, nem tudom, hogy a hagyományos verzió hogyan viselkedik (és éppen elég nagy dolog, hogy írok egy bejegyzést itten, nem hogy még a rendes verziót is föltelepítsem :D), de a következő hibaüzenetet kaptam, amikor megpróbáltam megnyitni, importálni egy ps-t:



Hm... Mondom jó, akkor telepítsünk Ghostscript-et. Letöltöm, telepítem, GIMP-et indítom, ps fájl megkeres, megnyit. Semmi, vagyis ugyanaz a hiba. A GS_PROG változót megpróbáltam beállítani, ennek a gswin32.exe-hez kell a teljes útvonalat megadni, de ez sem segített a problémán.
Néhány fórum bejegyzés után megtaláltam a megoldást. A GIMP /bin mappájába kell a Ghostscript /bin/gswin32c.exe fájl bemásolni, és így minden naccerűen müxik.