Roundcube kasutamine operatsioonisüsteemiga Debian
Sissejuhatus
Roundcube http://roundcube.net/ on veebipõhine eposti klient, mis töötab tavaliselt teenusepakkuja serveris ja kuhu kasutaja pöördub oma brauseriga. Roundcube sisaldab eposti kasutamiseks olulist funktsionaalsust, pakkudes kasutajale mugava kasutajaliidese. 2013 aasta keskel on Debian Wheezy v. 7 paketihalduses oleva Roundcube versioon 0.7.2.
Veebimaili kasutamine on populaarne ja kasutajale mugav seetõttu, et kasutaja arvutisse ei pea paigaldama ja seadistama mingit eposti-spetsiifilist tarkvara. Kuna kõik eposti puudutavad andmed, saadetud ja vastuvõetud kirjad, aadressraamat jms asuvad serveris, ei pea kasutaja muretsema nende varundamise pärast (eeldusel, et seda teeb teenusepakkuja).
Squirrelmail Squirrelmail tarkvara kasutamisel võiks kaaluda Roundcube lahenduse juurutamist.
Tööpõhimõte
Roundcube sisaldab ainult IMAP v.4 postimasinaga suhtlemiseks vajalikku veebiliidest, st ta ei pea ise kasutajate kirjadega postkaste, ei autendi kasutajat vms. Joonisel võiks kujutada eposti kasutamise komponente selliselt
kasutaja brauser ^ | v veebiserver ( Roundcube rakendus ) ^ | kirjade lugemine | | kirjade saatmine IMAP | | SMTP või /usr/sbin/sendmail | v Cyrus (IMAP server) Postfix postimasin
kus
- kasutaja pöördub brauseriga veebiserveris töötava Roundcube rakenduse poole
- kui kasutaja loeb veebiserveris töötava rakenduse kasutajaliideses kirju, siis kopeerib rakendus IMAP serverist andmeid
- kui kasutaja saadab kasutajaliideses kirju, siis sõltuvalt rakenduse seadistusest saadetakse kiri otse üle võrgu SMTP serverile või lokaalselt nn /usr/sbin/sendmail programmi poolt (see eeldab, et veebiserverisse on samuti MTA, nt Postfixi eksemlar paigaldatud)
- kõige all on kujutatud postimasinat, kus töötab kirjade lugemiseks vajalik IMAP server, nt Cyrus ja kirjade saatmiseks vajalik server, nt Postfix; need teenused võivad esineda ka kahes erinevas postimasinas
Ettevalmistused Roundcube kasutamiseks
Kuna Roundcube on veebirakendus, siis Roundcube kasutamiseks on tarvis
- töötavat veebiserverit, nt võiks kasutada Apache tarkvara
- töötavat kasutaja postikasti, nt Cyrus tarkvara abil realiseeritud postimasinat
- töötavat smtp releed, mille abil saab veebirakendus kirju välja saata
- töötavad PostgreSQL andmebaasi, mida Roundcube kasutab sessiooniandmete, aadressraamatu jms jaoks (või MySQL)
Failisüsteem
# groupadd roundcube # useradd -g roundcube -m -d /opt/roundcube -s /bin/false roundcube
PostgreSQL andmebaas
postgres=# CREATE ROLE roundcube LOGIN PASSWORD 'parool' NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION; postgres=# CREATE DATABASE roundcube WITH OWNER = roundcube ENCODING = 'UTF8' TABLESPACE = pg_default LC_COLLATE = 'et_EE.UTF-8' LC_CTYPE = 'et_EE.UTF-8' CONNECTION LIMIT = -1;
MySQL andmebaas
Kui baas on paigaldatud, sobib öelda
# mysql --defaults-file=/etc/mysql/debian.cnf
mysql> create database roundcube character set utf8 collate utf8_general_ci; mysql> grant all privileges on roundcube.* to 'roundcube'@'%' identified by 'parool'; mysql> grant all privileges on roundcube.* to 'roundcube'@'localhost' identified by 'parool';
Kui baas on eraldi arvutis, siis peab MySQL serveris olema puudu rida failis /etc/mysql/my.cnf (välja kommenteeritud)
# bind-address = 127.0.0.1
MariaDB andmebaas
Paigaldamiseks sobib öelda
# apt-get install --no-install-recommends mariadb-server
TODO
Tarkvara paigaldamine
Nagu ikka tarkvara, põhimõtteliselt saab Roundcube paigaldada kahel erineval viisil
- operatsioonisüsteemi paketihaldusest - paigaldatakse automaatselt kõik vajalikud sõltuvused (st tarkvara tööd abistavad programmid, teegid jms), kuid tarkvara ei ole nii uus; samas hoolitsevad operatsioonisüsteemi pidajad tarkvara uuenduste eest
- lähtetekstist, mida reeglina otse arendaja jagab - eelmise punkti asjaolud, aga vastupidiselt
Esimesel juhul teisel juhul peab ise seda tegema.
Paigaldamine paketihaldusest
Esmalt tuleb paigaldada pgsql tugi, vastasel korral paigaldatakse vaikimisi mysql tugi koos MySQL andmebaasiga
# apt-get install roundcube-pgsql # apt-get install roundcube
Seejärel küsitakse, kas seadistada andmebaasi kasutamine dbconfig-command abil, vastata nt jaatavalt. Millegipärast andmebaasi seadistamine siiski ebaõnnestub, minna ignore abil üle ja paigaldada lõpuni. Seejärel aga öelda
# dpkg-reconfigure roundcube-core
Ning siis saab baasi ära seadistada ja populeerida, selleks tuleb usaldada rakendusele baasi privilegeeritud kasutaja ligipääs.
Paigaldamine lähtetekstist
Esmalt tuleks teha kindlaks vajalikud sõltuvused ja need paigaldada. Nt kui paketihalduses on olemas, siis öelda
# apt-get install roundcube -s
Seejuures mitte paigaldada midagi, teha märkmed ja siis sõltuvused paigaldada. Tundub, et 2015 kevadel on sõltuvused sellised
apache2 apache2-mpm-prefork apache2-utils apache2.2-bin apache2.2-common aspell aspell-en dbconfig-common dictionaries-common fontconfig-config javascript-common libapache2-mod-php5 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libaspell15 libfontconfig1 libgd2-xpm libicu48 libjpeg8 libjs-jquery libjs-jquery-ui libltdl7 libmcrypt4 libonig2 libpng12-0 libqdbm14 libxpm4 php-auth php-auth-sasl php-mail-mime php-mail-mimedecode php-mdb2 php-mdb2-driver-mysql php-net-smtp php-net-socket php-pear php5 php5-cli php5-common php5-gd php5-intl php5-mcrypt php5-mysql php5-pspell roundcube roundcube-core roundcube-mysql tinymce ttf-dejavu-core wwwconfig-common
Mugavam on öelda
# apt-get install `echo $(apt-get install roundcube -s | grep ^Inst | grep -v roundcube | awk {'print $2'})` -s
- /etc/php5/apache2/php.ini
date.timezone = "Europe/Tallinn"
Roundcube on PHP rakendus, st kompileerida pole midagi tarvis, piisab tarkvara pakkida lahti veebijuurika alla kataloogi, nt (soovitav valida nn complete variant)
# cd /var/www # tar zxf /var/tmp/roundcubemail-1.0.2.tar.gz # mv roundcubemail roundcube # chown -R www-data:www-data roundcube
Seejärel tuleb avada brauseris ning järgida juhiseid
https://imool.org/roundcube/installer/
kus
- General Configuration
- Logging & Debugging
- Database setup - näidata baasi ligipääs
- IMAP Settings
auto_create_user - tuleb jätta tavaliselt true
- SMTP Settings - outgoin meiliserver
- Display settings & user prefs
- Plugins
Tulemusena tekitatakse seadistusfail
roundcube/config/config.inc.php
# chown -R roundcube:roundcube roundcube # chown -R www-data:www-data roundcube/temp roundcube/logs
ning pressida nuppu
Initialize database
Lõpus öeldakse brauserisse
After completing the installation and the final testsplease remove the whole installer folder from the document root of the webserver or make sure that enable_installer option in config.inc.php is disabled
Roundcube seadistamine
Seadistamise eesmärgid
- et kirjadega saaks kasutada nö mõistlikult suuri attachmente
- webmail pöördub IMAP serveri poole üle krüptitud ühenduse
- webmail saadab kirju välja läbi SMTP server, pöördumine on krüptitud ühendusega ning SMTP serveri kasutamiseks kasutaja autenditakse oma IMAP sisselogimise kasutaja ja parooliga
Failisuurused
Seadistused on kirjas failis
/etc/roundcube/main.inc.php
Lisaks võib olla vajalik muuta nt max attachmenti suuruse muutmiseks (või /srv/www-yhine/html/mail/.htaccess)
# cat /etc/roundcube/htaccess .. php_value upload_max_filesize 25M php_value post_max_size 30M php_value memory_limit 64M ...
PHP teegi konfis /etc/php5/apache2/php.ini
.. upload_max_filesize = 20M ... post_max_size = 25M ....
IMAPS ühendus
Selleks, et webmail saaks IMAPS serveriga suhelda üle SSL/TLS ühenduse (mitte STARTTLS), sobib kasutada seadistusfailis selliseid direktiive, on oluline, et toimuks nö puhas ühendumine (webmail teab serveri sertifikaati või ahela juurikat, webmail pöördub imap serveri poole kasutades sertifikaadis olevat nime)
$config['default_host'] = 'tls://mail.imool.org'; $config['imap_conn_options'] = array( 'ssl' => array( 'verify_peer' => true, 'verify_depth' => 3, 'cafile' => '/var/www/html/roundcube/config/imap.pem', ), ); $config['default_port'] = 993;
kus
- mail.imool.org - serveri nimi
- /var/www/html/roundcube/config/imap.pem - ahela või serveri selfsigned sertifikaadi asukoht
SMTP AUTH TLS ühendus
Selleks, et webmail saaks SMTP serveri port 587 kaudu suhelda kasutades STARTTLS protokolli, sobib kasutada seadistusfailis selliseid direktiive, on oluline, et toimuks nö puhas ühendumine(webmail teab serveri sertifikaati või ahela juurikat, webmail pöördub imap serveri poole kasutades sertifikaadis olevat nime)
$config['smtp_server'] = 'tls://post-fend.imool.org'; $config['smtp_port'] = 587; $config['smtp_user'] = '%u'; $config['smtp_pass'] = '%p'; $config['smtp_auth_type'] = 'PLAIN'; $config['smtp_conn_options'] = array( 'ssl' => array( 'verify_peer' => true, 'verify_depth' => 3, 'cafile' => '/var/www/html/roundcube/config/smtp.pem', ), );
kus
- tls:// - ühendus on üle krüptitud kanali, väga oluline on kasutada siin hostname'i mitte ip aadressi, vastasel korral krüpto kokkuleppimine ei õnnestu
- 587 - kasutatakse just STARTTLS protokolli
- %u ja %p - webmail pöördumisel SMTP serveri poole kasutatakse autentimisel webmaili sisselogimiseks kasutatud kasutajanime ja parooli
- /var/www/html/roundcube/config/smtp.pem - ahela või serveri selfsigned sertifikaadi asukoht
Roundcube kasutamine
Kirja lugemine
Peale sisselogimist paistab Roundcube kasutajaliides välja selline
kus
- TODO
Kirja koostamine
- Paremal all saab valida, kas kasutatakse plain tekst või html formaadis editori
Kasutaja seadistused
Kasutajaliidesega töötamisel võiks tähale panna
- Kas näidatakse lõimesid (ingl. k. threads)
Settings -> Folders -> List view Mode -> Threads
- Oma saatja aadressi kirjeldamine (from address)
Settings -> Identities -> väärtus -> Edit item
- Kui palju ridu kirju esitatakse
Settings -> Preferences -> User Interface -> Rows per page
- Kas preview pane on vaikimisi avatud
Settings -> Preferences -> Mailbox view -> Show preview pane
- nn spetsiaalsete folderite seostamine konkreetsete folderitega
Settings -> Preferences -> Special Folders
- Kui postkasti loetakse ka muude programmidega, siis võib olla folderile compact jäänud tegemata ning seal on nn deleted olekus kirju, kas neid näidata
Settings -> Preferences -> Server Settings -> Do not show deleted messages
- Kas tühjedada trash ja inbox väljalogimisel
Settings -> Preferences -> Server Settings -> Clear trash on logout ja compact inbox on logout
Aadressiraamat
TODO
Plugins
TODO
Managesieve
Roundcube v. 1.0.2 koosseisus olev Managesieve plugin võimaldab sieve teenuse abil seadistada kasutada filtreid. Plugin asub kataloogis
plugins/managesieve
Kasutamiseks tuleb plugin seadistada, näidades teenuse aadressi, nt localhost ja port 4190
# cp plugins/managesieve/config.inc.php.dist plugins/managesieve/config.inc.php
Seadistusfailis näidata IMAP serveri asukoht, nt
.. $config['managesieve_host'] = '10.0.6.143';
ning vajadusel
// use or not TLS for managesieve server connection // Note: tls:// prefix in managesieve_host is also supported $config['managesieve_usetls'] = true; // Connection scket context options // See http://php.net/manual/en/context.ssl.php // The example below enables server certificate validation $config['managesieve_conn_options'] = array( 'ssl' => array( 'verify_peer' => true, 'verify_depth' => 2, 'cafile' => '/var/www/html/roundcube/config/le-chain.pem', ), );
Roundcube seadistusfailis tuleb plugin lubada
# tail -n 2 roundcube/config/config.inc.php $config['plugins'] = array('managesieve');
Kasutamine toimub avades Roundcube veebiliideses
Settings -> Filers -> ...
Vacation teadete võimaluse aktiviseerimiseks tulub config.inc seadisusfailis kirjeldada muutujale sobiv väärtus
// Enables separate management interface for vacation responses (out-of-office) // 0 - no separate section (default), // 1 - add Vacation section, // 2 - add Vacation section, but hide Filters section $config['managesieve_vacation'] = 1;
authres
Märkused
- imapproxy paketist võib olla abi veebiseveri ja imap arvuti vahelise suhtlemise koormuse vähendamisel
- Veebimeili kasutamisel tuleb arvestada, et võõrast arvutit kasutades võib jääda brauserisse maha olulisi jälgi loetud meilist, nt brauseri cache'i või kui peale kasutamist ei logita korrektselt välja, siis saab arvuti omanik nö kasutamist jätkata.
- Veebimeili kasutajaliides on soovitav seadistada käima üle https:// kanali, Roundcube toetab ilusti ssl offloaderi kasutamist
- Kui postimasina ja selle veebiserveri, kus töötab Roundcube rakendus vahel on märkimisväärne vahekaugus, saab Roundcube vahenditega korraldada IMAPS ühenduse; lisaks on võimalik kasutada nö generic lahendusi, nt Stunnelit.
Tarkvara uuendamine
Enne uuendamist
- veenduda, et olemasolev süsteem töötab
- teha koopia rakenduse failisüsteemist
- teha koopia rakenduse andmebaasist
Kopeerida järgmine (tundub, et versioone saab ka vahele jätta, nt 1.2.1 -> 1.2.3, ju upgrade skript ütleb) tõenäoliselt nn complete versioon failisüsteemi
$ wget https://github.com/roundcube/roundcubemail/releases/download/1.2.1/roundcubemail-1.2.1-complete.tar.gz
pakkida ajutisse kataloogi lahti ning öelda seal
# chown -R roundcube:roundcube /var/tmp/roundcubemail-1.2.0 root@www-4:/var/tmp/roundcubemail-1.2.0# ./bin/installto.sh /srv/www.moraal.ee/yyyy_xxxx/html/mail .. Running update script at target... WARNING: Dependency check failed! (Some of your configuration settings require other options to be configured or additional PHP modules to be installed) - spellcheck_engine: This requires the pspell extension which could not be loaded. Please fix your config files and run this script again! See ya. Executing database schema update. This instance of Roundcube is up-to-date. Have fun! All done.
kus
- TODO
# chown -R www-data:www-data mail/temp mail/logs
1.4.2 -> 1.4.8 uuendamisel saab
... NOTICE: JavaScript dependencies installation skipped. Running update script at target... Executing database schema update. NOTICE: Update dependencies by running `php composer.phar update --no-dev` This instance of Roundcube is up-to-date. Have fun! All done.
SSL offload
Tundub, et Roundcube töötab väga hästi ssl offloaderi, nt NginX taga. Selleks, et lisada kirjale manuseid on tõenäoliselt vajalik kasutada NginX seadistuste juures client_max_body_size parameetrit
server { listen 443; .. client_max_body_size 25m ... }
Keskkonna uuendamine Debian v. 8 -> v. 9
Peale operatsioonisüsteemi keskkonna uuendamist tuleb paigaldada paketid
# apt-get install php-mbstring php-xml php-gd php-intl php-ldap php-imagick
ning käivitada korraks tmp url aadressil roundcube installer ning veenduda seal sisalduva keskkonna kontrolli abil, et kõik vajalikud php teegid jms on olemas.
IMAP Dovecot juures sql baasi kasutamine
Muu hulgas peab olemas Dovecot passwd direktiiv seadistatud selliselt
passdb { driver = sql args = /etc/dovecot/dovecot-sql.conf.ext }
ja dovecot-sql.conf.ext selliselt
# egrep -v "^$|^#" /etc/dovecot/dovecot-sql.conf.ext driver = pgsql connect = host=127.0.0.1 user=postkast dbname=db_postkast password=parool default_pass_scheme = SHA512-CRYPT password_query = \ SELECT userid as username, domain, password \ FROM users WHERE userid = '%n' AND domain = '%d'
Kusjuures postgresql andmebaasi ettevalmistamiseks sobib öelda
# apt-get install postgresql # su - postgres $ psql sql> create role postkast login; sql> \password postkast ... create database db_postkast owner=postkast; # psql -h 127.0.0.1 -U postkast db_postkast sql> CREATE TABLE users ( user_id serial NOT NULL, userid VARCHAR(128) NOT NULL, domain VARCHAR(128) NOT NULL, password VARCHAR(64) NOT NULL, home VARCHAR(255) NOT NULL, uid INTEGER NOT NULL, gid INTEGER NOT NULL );
Tabeli andmetega sisustamiseks sobib öelda
sql> insert into users (userid, domain, password, home, uid, gid) values ('imre', 'moraal.ee', '{SSHA}56jyUIxHzMA0HeFVoAmW9jJdFECxFArx', '/noexistant', 5005, 5005);
Funktsiooni tekitamiseks, mida kasutab Roundcube php skript (plugin) parooli muutmiseks sobib öelda
CREATE OR REPLACE FUNCTION update_passwd(hash text, account text) RETURNS integer AS $$ DECLARE res integer; BEGIN UPDATE users SET password = hash WHERE userid = split_part(account, '@', 1) AND domain = split_part(account, '@', 2) RETURNING user_id INTO res; RETURN res; END; $$ LANGUAGE plpgsql SECURITY DEFINER;
kus
- TODO
IMAP serveri parooli haldamine
Osutub, et Roundcube plugin 'password' sobib hästi IMAP serveri parooli haldamiseks. Selle eelduseks on, et Dovecot hoiab kasutajate konto andmeid PostgreSQL baasis. Tulemusena saab kasutaja peale Roundcube rakendusse sisselogimist muuta seal baasis olevat IMAP parooli ning tulemusena on efektiivselt ka Roundcube parool kasutaja jaoks muudetud kuna Roundcube autendib IMAP serveri abil oma kasutajat.