Push Mail pour serveur Imap (local ou distant)

eb0996d725ea9ae3e95da132acafd9fcPour continuer la construction pas à pas de notre serveur mail (cf installation d’un serveur mail brique par brique), nous allons offrir à nos utilisateurs de terminaux Windows Mobile le luxe du ‘push mail‘ (on ne peut pas demander à tout le monde d’avoir un SmartPhone sous Androïd, ceci dit, moi, ça me plairait assez !).  Contrairement à une configuration classique, où le terminal interroge le serveur (en Pop ou Imap), nous allons faire en sorte que ce soit le serveur qui « pousse » les nouveaux mails vers le mobile.

Avant de commencer, nous aurons besoin :

Z-Push

Commençons par décompresser les sources à la racine de notre serveur web :

# tar xvzf  z-push-1.2.2.tar.gz -C /var/www/

Le répertoire /var/www/z-push/state doit être accessible en écriture par l’utilisateur Apache :

# chmod 700 /var/www/z-push/state
# chown www-data:www-data /var/www/z-push/state

Editons ensuite le fichier de configuration  (/var/www/z-push/config.php)

...
// The data providers that we are using (see configuration below)
    $BACKEND_PROVIDER = "BackendIMAP";
...
    // ************************
    //  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/ssl/novalidate-cert');
 
    // 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', 'username');
 
    // copy outgoing mail to this folder. If not set z-push will try the default folders
    define('IMAP_SENTFOLDER', '');
 
...

Les paramètres ci-dessus sont adaptés au serveur imap local. Ils peuvent être ajustés à un autre serveur. Ceci devrait fonctionner avec n’importe quel serveur IMAP.

Par exemple, pour Gmail :

define('IMAP_SERVER', 'imap.gmail.com');
define('IMAP_PORT', 993);
define('IMAP_OPTIONS', '/notls/norsh/ssl/novalidate-cert');
define('IMAP_DEFAULTFROM', 'username')
define('IMAP_SENTFOLDER', '');

Apache

Nous allons avoir besoin de satisfaire quelques dépendences avant d’attaquer la configuration d’Apache.  Z-Push a en effet besoin de quelques paquets pour pouvoir fonctionner correctement :

#  apt-get install pear php5-imap php5-mail php5-mail-mime php5-pear
# pear install –alldeps Mail

Nous avons ensuite deux alternatives :

Virtualhost

Pour créer un VirtualHost, il nous faut ajouter un fichier dans /etc/apache2/sites-available. Arbitrairement, nous allons choisir z-push comme nom de fichier.

/etc/apache2/sites-available/z-push

	ServerAlias zpush.mondomaine.net
	ServerAdmin webmaster@mondomaine.net
	DocumentRoot /var/www/z-push
	Alias /Microsoft-Server-ActiveSync /var/www/z-push/index.php
 
		Options -Indexes
		AllowOverride none
		Order allow,deny
		allow from all
		php_flag magic_quotes_gpc off
		php_flag register_globals off
		php_flag magic_quotes_runtime off
		php_flag short_open_tag on
 
	ErrorLog /var/log/apache2/zpush-error.log
	LogLevel warn
	CustomLog /var/log/apache2/zpush-access.log combined
	ServerSignature Off

La commande a2ensite (Apache2 Enable Site) permet de rendre le VirtualHost actif (équivaut à faire un lien symbolique dans /etc/apache2/sites-enabled)

$ sudo a2ensite z-push
$ /etc/init.d/apache2 reload

Config par défaut ou .htaccess

La deuxième technique  consiste à ne configurer que le répertoire z-push, sans création d’un VirtualHost. Pour cela, nous ajouterons simplement les lignes suivantes dans le fichier de configuration du site par défaut (normalement /etc/apache2/sites-avaible/defaut) ou directement dans un fichier un .htaccess à la racine du site :

	Alias /Microsoft-Server-ActiveSync /var/www/z-push/index.php
 
		Options -Indexes
		AllowOverride none
		Order allow,deny
		allow from all
		php_flag magic_quotes_gpc off
		php_flag register_globals off
		php_flag magic_quotes_runtime off
		php_flag short_open_tag on

Le mobile

La configuration du serveur étant terminée, nous pouvons tester sur un terminal. Nous allons configurer ActiveSync pour qu’il se connecte au serveur.

La méthode est biensûr perfectible par l’ajout du support SSL. Je ne suis pas arrivé, pour l’instant, à une solution très satisfaisante concernant ce point. A moins qu’ils ne nous soit possible de faire certifier le certificat serveur par un autorithé reconnue, il faudra importer ce cetificat sur le mobile. La chose est plutôt fastidieuse, l’option d’import n’étant pas disponible dans Internet Explorer mobile. Il est nécessaire de passer par un export au format xml, que l’on insère ensuite dans un fichier cab pour l’installer sur le terminal. Bref, du bon gros bricolage !

Références : http://andrew.tj.id.au/activesync-for-gmail/

Laissez votre message après le bip...Biiiiip

Commentaires

au risque de dire une connerie, il me semble bien que les certificats s’installent sur WM6 en collant le .csr sur le mobile et en double cliquant dessus depuis le navigatuer de fichier du smartphone…

Je vais pouvoir essayé je suis un malheureux propriétaire d’un WM6 :p merci pour ce tuto !

Merci pour ce site. Je viens de le découvrir et je me régale.
J’attends avec impatience votre prochain article.

Bonne continuation

(marc)

Dans ton exemple pour gmail, il ne faudrait pas mieux :
define(‘IMAP_SERVER’, ‘imap.gmail.com’);

Enfin c’est ce que dit le guide dont tu t’es inspire en tout cas 🙂

Merci pour le guide, ca fonctionne nickel 🙂

Laisser un commentaire

(requis)

(requis)