sostituire horde con roundcube su plesk 10
Scenario: avete un server (dedicato, virtualizzato, cloud, ecc..) su cui gestite diversi domini per i vostri clienti tramite il pannello di controllo plesk.
In questa guida sostituiremo il client di posta horde fornito insieme a plesk con il più semplice ed intuitivo roundcube per ciascuno dei domini attivi sul server. Non verrà sostituita o alterata l’installazione di horde, pertanto sarà semplicissimo tornare alla configurazione di default e non ci saranno problemi con gli aggiornamenti di plesk.
Per ottenere questo risultato, creeremo su plesk un template personalizzato (come descritto su questa guida) per la generazione della configurazione di apache che permetterà di raggiungere roundcube tramite il terzo livello ‘webmail’ per ciascun dominio configurato con plesk (es. http://webmail.nomedominio.it).
Prerequisiti:
- accesso come root al server
- plesk 10 già installato e configurato con almeno un dominio
Iniziamo:
- scarichiamo roundcube (per questa guida è stata utilizzata l’attuale versione stabile 0.6) ed installiamolo su un dominio già configurato con plesk tramite il wizard all’indirizzo
http://www.nomedominio.it/roundcube/installer/
(la parte in corsivo è da modificare in base al dominio scelto ed al percorso utilizzato per installare roundcube) - spostiamo roundcube appena installato in un percorso indipendente dal dominio, per esempio in
/usr/share/roundcube
(questo percorso è lo stesso che dovrà essere utilizzato nel file descritto nel punto seguente, alla riga 4), tramite il comando:
mv /var/www/vhosts/nomedominio.it/httpdocs/roundcubemail-0.6 /usr/share/roundcube
- creiamo (tramite
vi
o qualunque altro editor) il file/opt/psa/admin/conf/templates/custom/horde.php
(che è la versione adattata al nostro scopo del template di default fornito con plesk per la generazione della parte di configurazione di apache necessaria a far funzionare horde), in cui inseriamo il seguente codice:[php] <?php $ipAddresses = $VAR->server->ipAddresses->all; $ipLimit = $VAR->server->webserver->apache->vhostIpCapacity; $hordeDocroot = "/usr/share/roundcube"; $domainsBootstrap = $VAR->domainsWebmailHordeBootstrap; $modPHPAvailiable = $VAR->server->php->ModAvailable; ?> <?php for($ipAddress = reset($ipAddresses); $ipAddress; $ipAddress = next($ipAddresses)): ?> <VirtualHost \ <?php echo "{$ipAddress->escapedAddress}:{$VAR->server->webserver->httpPort}" ?> \ <?php for ($n = 1; $n < $ipLimit && $ipAddress = next($ipAddresses); ++$n): ?> <?php echo "{$ipAddress->escapedAddress}:{$VAR->server->webserver->httpPort}" ?> \ <?php endfor; ?> > ServerName roundcube.webmail ServerAlias roundcube.webmail.* ServerAdmin "<?php echo $VAR->server->admin->email ?>" Include "<?php echo $domainsBootstrap ?>" <?php if (!file_exists($domainsBootstrap)) { $writer = new Template_Writer_Apache($domainsBootstrap); $writer->write(Template_Bootstrap_Apache::WARNING_MESSAGE); } ?> UseCanonicalName Off DocumentRoot "<?php echo $hordeDocroot ?>" <?php echo $VAR->includeTemplate('domain/PCI_compliance.php') ?> <Directory "<?php echo $hordeDocroot ?>"> <?php if ($modPHPAvailiable): ?> <IfModule <?php echo $VAR->server->webserver->apache->php4ModuleName ?>> php_admin_flag engine on php_admin_flag magic_quotes_gpc off php_admin_flag safe_mode off php_admin_value upload_tmp_dir "/tmp/" php_admin_value open_basedir "<?php echo "$hordeDocroot:/tmp/:/var/tmp/" ?>" </IfModule> <IfModule mod_php5.c> php_admin_flag engine on php_admin_flag magic_quotes_gpc off php_admin_flag safe_mode off php_admin_value upload_tmp_dir "/tmp/" php_admin_value open_basedir "<?php echo "$hordeDocroot:/tmp/:/var/tmp/" ?>" </IfModule> <?php else: ?> SetHandler None AddHandler php-script .php Options +ExecCGI <?php endif; ?> Order allow,deny Allow from all </Directory> </VirtualHost> <?php endfor; ?> <IfModule mod_ssl.c> <?php for($ipAddress = reset($ipAddresses); $ipAddress; $ipAddress = next($ipAddresses)): ?> <?php if ($ipAddress->sslCertificate->ce): ?> <VirtualHost \ <?php echo "{$ipAddress->escapedAddress}:{$VAR->server->webserver->httpsPort}" ?> > ServerName roundcube.webmail ServerAlias roundcube.webmail.* ServerAdmin "<?php echo $VAR->server->admin->email ?>" Include "<?php echo $domainsBootstrap ?>" UseCanonicalName Off DocumentRoot "<?php echo $hordeDocroot ?>" SSLEngine on SSLVerifyClient none SSLCertificateFile "<?php echo $ipAddress->sslCertificate->ceFilePath ?>" <?php echo $VAR->includeTemplate('domain/PCI_compliance.php') ?> <Directory "<?php echo $hordeDocroot ?>"> <?php if ($modPHPAvailiable): ?> <IfModule <?php echo $VAR->server->webserver->apache->php4ModuleName ?>> php_admin_flag engine on php_admin_flag magic_quotes_gpc off php_admin_flag safe_mode off php_admin_value upload_tmp_dir "/tmp/" php_admin_value open_basedir "<?php echo "$hordeDocroot:/tmp/:/var/tmp/" ?>" </IfModule> <IfModule mod_php5.c> php_admin_flag engine on php_admin_flag magic_quotes_gpc off php_admin_flag safe_mode off php_admin_value upload_tmp_dir "/tmp/" php_admin_value open_basedir "<?php echo "$hordeDocroot:/tmp/:/var/tmp/" ?>" </IfModule> <?php else: ?> SetHandler None AddHandler php-script .php Options +ExecCGI <?php endif; ?> SSLRequireSSL Order allow,deny Allow from all </Directory> </VirtualHost> <?php endif; ?> <?php endfor; ?> </IfModule> [/php]
- creiamo la cartella
imp
all’interno di roundcube:
mkdir /usr/share/roundcube/imp
- creiamo il file
/usr/share/roundcube/imp/login.php
in cui inseriamo il seguente codice:[php] <?php $user = $_REQUEST["imapuser"]; header("Location: /?_user=" . $user); ?> [/php]
- rigeneriamo la parte server della configurazione di apache, tramite il comando:
/opt/psa/admin/sbin/httpdmng --reconfigure-server
- facciamo leggere ad apache la nuova configurazione:
/etc/init.d/apache reload
Adesso dovreste poter raggiungere roundcube all’indirizzo http://webmail.nomedominio.it
(i punti 4 e 5 di questa procedura servono a far funzionare anche i link al client roundcube in corrispondenza a ciascuna casella di posta, all’interno della pagina “posta” in plesk)
Per ritornare alla situazione precedente, con horde al posto di roundcube, basterà cancellare il file /opt/psa/admin/conf/templates/custom/horde.php
ed eseguire i punti 6 e 7.