Une des fonctionnalités intéressantes dans postfix est la possibilité d’utiliser des adresses « plused », de type user+foo@domain.com. Cela vous permet entre autre d’utiliser des adresses mails sans avoir a recréer des alias a tout bout de champ, ou bien encore savoir qui a vendu votre adresse mail lors de votre inscription sur un site.
Cette fonctionnalité existe aussi dans Zimbra, pour cela il suffi de faire les manipulations suivantes :

su - zimbra
zmprov mcf zimbraMtaRecipientDelimiter +
zmmtactl restart

Il y a de cela un petit moment, j’ai fait l’acquisition d’un Synology DiskStation DS410J.
Pour des raisons budgétaires je n’ai d’abord acheté qu’un seul disque de 2To. Puis les mois passant j’ai décidé d’acheter les trois disques restants.
Afin de bénéficier d’un maximum d’utilisation de l’espace qui m’est disponible, j’opte pour un Raid 5. Cela me permet d’avoir un disque qui reconstruira le RAID en cas de crash.
J’ai donc suivi la documentation afin de transformer, depuis l’interface graphique, le mode de RAID de mon NAS.
Une fois la resynchronisation terminé (qui a quand même durée 1 semaine), je me retrouve avec un espace utile de 3,57To…
Une question me trotine dans la tête : Mais comment c’est possible ???
La solution est simple, le NAS est passé d’un RAID 1 à un RAID 5 + Spare. Ce n’était pas l’effet escompté.
Après une petite recherche sur internet, je me rend vite compte qu’il n’est pas possible de passer de RAID 5 + Spare à un RAID 5 standard.
Ce NAS étant à base de Linux, je me dit qu’il est forcement possible de régler le problème. Après avoir regardé le fonctionnement de mon NAS, je me rend compte que l’interface graphique appel l’utilitaire mdadm pour gérer le RAID.
La solution est donc trouvé, je vais passer mon RAID 5 + Spare à un RAID5 standard via les outils standard de gestion de RAID sous linux. Voici don comment faire :
Pré-requis
En premier lieu il faut avoir un accès ssh à son NAS.
Puis il faut trouver sur quel volume est le RAID :

cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4]
md2 : active raid5 sdc3[0] sdb3[2] sdd3[3] sda3[1]
5846379840 blocks super 1.1 level 5, 64k chunk, algorithm 2 [4/4] [UUUU]

Le miens est donc le md2 car c’est la ou il y le plus de disques. Les autres disques sont les disques sytsèmes.
Action !
On passe le nombre disque dur actif à 4 :

[code lang= »bash »][/code]

mdadm –grow /dev/md2 –raid-devices=4

[code][/code]

Vérification
Une fois l’opération effectué (cela peut prendre du temps), on vérifie que cela c’est bien déroulé :

mdadm --detail /dev/md2
/dev/md2:
Version : 1.1
Creation Time : Sun Apr 10 17:36:09 2011
Raid Level : raid5
Array Size : 5846379840 (5575.54 GiB 5986.69 GB)
Used Dev Size : 1948793280 (1858.51 GiB 1995.56 GB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent

Update Time : Thu Apr 21 07:53:50 2011
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0

On a donc bien 4 disques actifs. Il ne reste plus qu’a dire au système de fichier de rescanner l’espace disponible :

resize2fs /dev/md2

and voila 🙂

Ref : http://scotgate.org/2006/07/03/growing-a-raid5-array-mdadm/

Si comme moi vous êtes un fervent admirateur de NGINX, vous passez beaucoup de temps à modifier les fichiers de configuration de celui-ci.
Quoi de plus énervant de ne pas avoir de coloration syntaxique qui vous permet de valider qu’il ne manque pas un point virgule à la fin d’une ligne.
Pour l’instant cette coloration n’est pas incluse de base dans vim, mais les fichiers existe bien. Afin de l’installer sur votre serveur, il faut exécuter ces quelques lignes de commandes :

mkdir -p ~/.vim/syntax/
 echo "au BufRead,BufNewFile /usr/local/nginx/conf/* set ft=nginx" >> ~/.vim/filetype.vim
 wget http://www.vim.org/scripts/download_script.php?src_id=14376 -O ~/.vim/syntax/nginx.vim

et le tour est joué 🙂

Si vous êtes comme moi et que vous passez énormément de temps sur votre ordinateur à lire des lignes de codes et articles divers, vous aurez sans doute remarqué une fatigue visuelle au bout de quelque heures.
Pour éviter cela (et aussi me rendre compte de l’heure) j’utilise un petit logiciel qui change la luminosité ainsi que les couleurs de votre écran en fonction de l’heure. Flux est multiplateforme et fonctionnera donc sur votre OS favori.
Afin de le lancer il vous suffi simplement de lui rentrer en paramètre les coordonnes de votre situation géographique. Pour cela rendez vous sur ce site (par exemple) et chercher votre position, cela vous donnera votre position. Une fois ces données acquise on a plus qu’à lancer le logiciel comme suit :
[code language= »bash »]
./flux -l suivit de vos coordonnes.
[/code]
En espérant que cet article épargnera vos yeux 🙂

Update : Nouvelle version !

Ayant un serveur de messagerie personnel sous Zimbra, je voulais le synchroniser avec mon téléphone. Pour cela j’ai d’abord utilisé Funambol mais le logiciel tournant sous Java, il me prenait trop de ressources sur mon petit serveur Kimsufi. De plus il faut installer un logiciel supplémentaire sur le téléphone alors que j’ai déjà un logiciel qui permet de synchroniser via activesync.

J’ai donc fait le tour des solutions existantes qui dispose d’un connecteur pour Zimbra et malheureusement il n’y a pas grand chose de disponible à l’heure actuelle. Le projet le plus intéressant et c’est celui que j’ai mis en place est z-push qui fait partie de la solution Zarafa. Via un plug-in développé par la communauté cela me permet de synchroniser mes mails/calendrier/contacts/tâches grâce au logiciel déjà disponible sur mon téléphone.

Ce logiciel tournant sous php il n’était pas difficile de l’ajouter à mon serveur existant sans consommer de ressources supplémentaire. Le plus compliqué c’est que celui-ci tourne sous nginx et qu’il n’y a aucune documentation existante pour faire fonctionner z-push avec nginx. J’ai du pas mal tâtonner avant de réussir à le faire fonctionner correctement.  J’espère que ce tutoriel vous conviendra et qu’il sera fonctionnel pour tout le monde (les mystères de l’informatique sont parfois impénétrables 🙂 )

Votre serveur nginx doit être paramétré pour tourner avec PHP (par ex.  fastcgi php-fmp ). Il est indispensable de faire tourner PHP avec nginx car z-push s’articule entièrement autour de scripts en PHP.

Une fois que tout fonctionne correctement, rendez-vous dans votre répertoire de site web pour installer z-push

[code lang= »bash »]
cd /var/www/
wget http://download.berlios.de/z-push/z-push-1.4.3.tar.gz
wget http://downloads.sourceforge.net/project/zimbrabackend/Release47/zimbra47.tgz
tar xzvf http://download.berlios.de/z-push/z-push-1.4.3.tar.gz
tar xzvf zimbra47.tgz -C z-push/backend/
chmod 740 z-push/state
chown www-data:www-data z-push/state
[/code]

ok une fois que tous est installé on va configurer z-push pour attaquer Zimbra en backend. Pour cela modifiez le fichier le fichier config.php comme suit :

[code]
$BACKEND_PROVIDER = "BackendZimbra";
define(‘MAPI_SERVER’, ‘file:///var/run/zarafa’);
define(‘ZIMBRA_URL’, ‘http://zimbra.domain.com’);
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(‘ZIMBRA_ENFORCE_VALID_EMAIL’,true);
define(‘ZIMBRA_NOKIA_MFE_FIX’,true);
define(‘ZIMBRA_NOKIA_MFE_ALWAYS_OVERWRITE’,true);
#Si jamais vous voulez debuger passer l’option suivante a true
define(‘ZIMBRA_DEBUG’,false);
#Et enfin si vous voulez gérer vos appareils mobile depuis une interface web passer l’option suivante
#a true et suivez les instruction que vous trouverez ici :
#http://downloads.sourceforge.net/project/zimbrabackend/Release47/Release%20Notes%20-%20Revision%2047.txt
define(‘PROVISIONING’, false);
[/code]

Comme on utilise nginx avec fastcgi il faut faire quelques modifications afin que les requêtes web soient traité correctement par z-push

Il faut ajouter ces lignes à la fin du fichier compat.php juste avant « ?> »

[code lang= »bash »]
if (!function_exists(‘apache_request_headers’)) {
function apache_request_headers() {
$header = array();
$header[‘Ms-Asprotocolversion’] = $_SERVER[‘HTTP_MS_ASPROTOCOLVERSION’];
$header[‘X-Ms-Policykey’] = $_SERVER[‘HTTP_X_MS_POLICYKEY’];
$header[‘User-Agent’] = $_SERVER[‘HTTP_USER_AGENT’];

return $header;
}

list($_SERVER[‘PHP_AUTH_USER’], $_SERVER[‘PHP_AUTH_PW’]) = explode(‘:’ , base64_decode(substr($_SERVER[‘HTTP_AUTHORIZATION’], 6)));
}
[/code]

et commenter la ligne suivante dans le fichier index.php

[code lang= »bash »]
//header("Content-Length: $len");
[/code]

enfin configurez votre virtualhost

[code language= »bash »]server {
listen 80;
server_name push.domain.com;
access_log  /var/log/nginx/z-push.access.log  combined;
error_log /var/log/nginx/z-push.error.log;

location / {
root   /var/www/z-push;
index  index.php index.html;

if (!-f $request_filename) {
rewrite  ^(.*)$  /index.php?q=$1  last;
break;
}
}

location ~ \.php$ {
include /etc/nginx/fastcgi_params;
proxy_read_timeout 120;
proxy_connect_timeout 120;
fastcgi_pass  127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME /var/www/z-push/$fastcgi_script_name;
}
}[/code]

Si comme moi vous avez un autre serveur qui fait office de reverse proxy en frontal, n’oubliez pas d’ajouter ces lignes dans votre nginx.conf  sinon votre serveur n’arrivera pas à communiquer avec votre téléphone :

[code lang= »bash »]
##Sert a recuperer l’adresse ip d’origine dans les headers
##Ref : http://wiki.nginx.org/HttpRealIpModule
set_real_ip_from        XX.XX.XX.XX; <= IP du Frontal
real_ip_header          X-Real-IP;[/code]

Et voila il ne reste plus qu’a configurer votre téléphone et le tour est joué.

Références :

http://z-push.sourceforge.net/phpbb/viewtopic.php?f=4&t=1245&p=4762&hilit=apache_request_headers#p4762
http://www.jopa.fr/index.php/2009/08/05/push-mail-sur-serveur-imap-gmail/

22 bis Rue de Trey