ZPUSH-articles Installation  et configuration du Push Mail entre Zimbra OSE via Z-push


Je travaille depuis un moment sur Zimbra.
J'ai remplacé il y à peu mon serveur d'entreprise Lotus Domino par Zimbra NE

Dans sa version NE, Zimbra possède un outil de synchro mobile intégré et très performant donc pas de problème.

Par contre j'utilise aussi la version Zimbra OSE pour mes potes et des associations. C'est pour cela qu'il était pour moi interessant de fournir à mes utilisateurs
une solution de Push-mail performante et gratuite.

C'est pour cela que je me suis penché sur Z-push
Z-Push est une solution Open-Source de Zarafa qui permet de faire du push mail depuis des terminaux mobiles.
Mais aussi la synchro des contacts et des calendriers !
 Z-Push utilise le protocole Microsoft ActiveSync qui est supporté sur un grand nombre de terminaux mobiles (Iphone, Android, Windows Mobile, Maemo, Symbian...)


J'ai effectué mon install sur un DomU Xen routed à base d'un template Ubuntu 10.04 64 bits paravirtualisé






Installation des prérequis:

Installation de apache2, php5 et php-curl openssl
Activation de ssl dans apache a2enmod ssl

Installation de Z-push

Téléchargement de Z-push téléchargé sur http://prdownload.berlios.de/z-push/z-push-1.5.1.tar.gz
Téléchargement du backend Zimbra sur http://sourceforge.net/projects/zimbrabackend/files/Release48/zimbra48.tgz/download

J'ai placé z-push à la racine de mon espace web /var/www

#tar xvfz z-push-1.5.1.tar.gz -C /var/www


J'ai extrait le backend Zimbra zimbra.php dans /var/www/z-push/backend/

#tar xvfz zimbra48.tgz -C /var/www/z-push/backend

Modifications des droits
#chown -R www-data:www-data /var/www/z-push
#chmod 755 /var/www/z-push/state
#chown www-data:www-data /var/www/z-push/state


configuration de Z-push et Apache:

Mon serveur est un DomU Xen dédié nommé push.info16.fr
Il sera accessible en http et https
Penser à activer l'écoute sur les 2 ports 80 et 443 dans /etc/apache/ports.conf

  •           Virtualhost en http ( non ssl): etc/apache2/sites-enabled/default
                 
<VirtualHost *:80>
ServerName push.info16.fr
DocumentRoot /var/www/z-push/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/z-push/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/ssl_access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
Alias /Microsoft-Server-ActiveSync /var/www/z-push/index.php
php_flag short_open_tag on
php_flag magic_quotes_runtime off
php_flag register_globals off
php_flag magic_quotes_gpc off
</VirtualHost>





  •           Virtualhost en https ( ssl) : /etc/apache2/sites-enabled/ssl

<VirtualHost *:443>
ServerName push.info16.fr
DocumentRoot /var/www/z-push/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/z-push/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/ssl_access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
Alias /Microsoft-Server-ActiveSync /var/www/z-push/index.php
php_flag short_open_tag on
php_flag magic_quotes_runtime off
php_flag register_globals off
php_flag magic_quotes_gpc off

SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /etc/apache2/ssl/push.crt
SSLCertificateKeyFile /etc/apache2/ssl/push.key
SSLProxyCACertificateFile /etc/apache2/ssl/push.crt

<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
BrowserMatch ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0

</VirtualHost>

Creation des certificats 2048 bits
#cd /etc/apache2/ssl

#openssl genrsa -out push.key 2048
#openssl req -new -key push.key -out push.csr
#openssl x509 -req -days 365 -in push.csr -signkey push.key -out push.crt



Pensez bien sur à activer les vhosts:
#a2ensite default; a2ensite ssl

Modification de /var/www/z-push/config.php
<?php
/***********************************************
* File : config.php
* Project : Z-Push
* Descr : Main configuration file
*
* Created : 01.10.2007
*
* Copyright 2007 - 2010 Zarafa Deutschland GmbH
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License, version 3,
* as published by the Free Software Foundation with the following additional
* term according to sec. 7:
*
* According to sec. 7 of the GNU Affero General Public License, version 3,
* the terms of the AGPL are supplemented with the following terms:
*
* "Zarafa" is a registered trademark of Zarafa B.V.
* "Z-Push" is a registered trademark of Zarafa Deutschland GmbH
* The licensing of the Program under the AGPL does not imply a trademark license.
* Therefore any rights, title and interest in our trademarks remain entirely with us.
*
* However, if you propagate an unmodified version of the Program you are
* allowed to use the term "Z-Push" to indicate that you distribute the Program.
* Furthermore you may use our trademarks where it is necessary to indicate
* the intended purpose of a product or service provided you use it in accordance
* with honest practices in industrial or commercial matters.
* If you want to propagate modified versions of the Program under the name "Z-Push",
* you may only do so if you have a written permission by Zarafa Deutschland GmbH
* (to acquire a permission please contact Zarafa at trademark@zarafa.com).
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* Consult LICENSE file for details
************************************************/
// Defines the default time zone
if (function_exists("date_default_timezone_set")){
date_default_timezone_set("Europe/Paris");
}

// Defines the base path on the server, terminated by a slash
define('BASE_PATH', dirname($_SERVER['SCRIPT_FILENAME']) . "/");

// Define the include paths
ini_set('include_path',
BASE_PATH. "include/" . PATH_SEPARATOR .
BASE_PATH. PATH_SEPARATOR .
ini_get('include_path') . PATH_SEPARATOR .
"/usr/share/php/" . PATH_SEPARATOR .
"/usr/share/php5/" . PATH_SEPARATOR .
"/usr/share/pear/");

define('STATE_DIR', BASE_PATH.'/state');

// Try to set unlimited timeout
define('SCRIPT_TIMEOUT', 0);

//Max size of attachments to display inline. Default is 1MB
define('MAX_EMBEDDED_SIZE', 1048576);

// Device Provisioning
define('PROVISIONING', false);

// This option allows the 'loose enforcement' of the provisioning policies for older
// devices which don't support provisioning (like WM 5 and HTC Android Mail) - dw2412 contribution
// false (default) - Enforce provisioning for all devices
// true - allow older devices, but enforce policies on devices which support it
define('LOOSE_PROVISIONING', false);

// Default conflict preference
// Some devices allow to set if the server or PIM (mobile)
// should win in case of a synchronization conflict
// SYNC_CONFLICT_OVERWRITE_SERVER - Server is overwritten, PIM wins
// SYNC_CONFLICT_OVERWRITE_PIM - PIM is overwritten, Server wins (default)
define('SYNC_CONFLICT_DEFAULT', SYNC_CONFLICT_OVERWRITE_PIM);

// The data providers that we are using (see configuration below)
$BACKEND_PROVIDER = "BackendZimbra";

// ************************
// BackendICS settings
// ************************

// Defines the server to which we want to connect
define('MAPI_SERVER', 'file:///var/run/zarafa');

define('ZIMBRA_URL','https://webmail.info16.fr');
define('ZIMBRA_USER_DIR','zimbra');
define('ZIMBRA_SYNC_CONTACT_PICTURES', true);
define('ZIMBRA_VIRTUAL_CONTACTS',true);
define('ZIMBRA_VIRTUAL_APPOINTMENTS',true);
define('ZIMBRA_VIRTUAL_TASKS',true);
define('ZIMBRA_IGNORE_EMAILED_CONTACTS',true);
define('ZIMBRA_HTML',false);
define('IMAP_DEFAULTFROM', '');
define('IMAP_SENTFOLDER', '');



// ************************
// BackendIMAP settings
// ************************

// Defines the server to which we want to connect
// recommended to use local servers only
define('IMAP_SERVER', 'localhost');
// connecting to default port (143)
define('IMAP_PORT', 143);
// best cross-platform compatibility (see http://php.net/imap_open for options)
define('IMAP_OPTIONS', '/notls/norsh');
// overwrite the "from" header if it isn't set when sending emails
// options: 'username' - the username will be set (usefull if your login is equal to your emailaddress)
// 'domain' - the value of the "domain" field is used
// '@mydomain.com' - the username is used and the given string will be appended
define('IMAP_DEFAULTFROM', '');
// copy outgoing mail to this folder. If not set z-push will try the default folders
define('IMAP_SENTFOLDER', '');
// forward messages inline (default off - as attachment)
define('IMAP_INLINE_FORWARD', false);
// use imap_mail() to send emails (default) - off uses mail()
define('IMAP_USE_IMAPMAIL', true);


// ************************
// BackendMaildir settings
// ************************
define('MAILDIR_BASE', '/tmp');
define('MAILDIR_SUBDIR', 'Maildir');

// **********************
// BackendVCDir settings
// **********************
define('VCARDDIR_DIR', '/home/%u/.kde/share/apps/kabc/stdvcf');

// Alternative backend to perform SEARCH requests (GAL search)
// if an empty value is used, the default search functionality of the main backend is used
// use 'SearchLDAP' to search in a LDAP directory (see backend/searchldap/config.php)
define('SEARCH_PROVIDER', '');

?>

Il ne reste plus qu'a paramétrer un mobile compatible activesync for Exchange à notre serveur Z-push.

  • username = adresse_mail
  • password= votre_mot_de_passe
  • domaine= adresse_mail
  • serveur= push.info16.fr