lundi 26 novembre 2012

NRPE : Problème avec la commande check_procs.

NRPE : Problème avec la commande check_procs.

Dernièrement, j'ai eu la malchance d'avoir un problème hard (carte RAID H.S.) sur un de mes serveurs de production.
Bon, ça arrive, le serveur n'était pas tous jeune... Le problème c'est que ce genre de désagrément se produit toujours le week-end :-) Sans être fataliste, d'un autre côté le week-end, l'utilisation des services est moindre, donc l'un d'en l'autre : on va pas se plaindre !!!
La priorité était de remettre les services en route le plus rapidement possible. Une fois le problème hardware mis en évidence (impossible de redémarrer le serveur), il était plus couteux d'essayer de réparer plutôt que de migrer sur un serveur de secours. Donc la solution choisie, voire imposée par les circonstance et le bon sens, consistait à migrer les services.
Après migration et remise en production des services, tous était redevenu à la normale. Ouf, j'ai eu chaud... C'est dans de telle situation que l'on est content d'avoir mis en place des sauvegardes régulières :-)

Touche finale: il ne restait plus qu'à remettre en place mes scripts de supervision sur le nouveau serveur de production.
Une partie du serveur étant déjà supervisé, je n'avais que les scripts spécifiques à mes services à remettre en place. Et là, grosse surprise, la supervision de la présence  de certain processus me renvoyer :
 - PROCS CRITICAL: 0 processes with args 'com.naos.enews.privateInterfaces.utilities.SendingSchedulingEmailings'
- PROCS CRITICAL: 0 processes with args 'com.naos.enews.privateInterfaces.utilities.NewNpaiManager'

Bizarre, car après vérification sur le serveur de production, les processus étaient bien présent et en cours d'exécution.
J'ai exécuté les commandes en direct sur le serveur sans passer par NRPE et là, le résultat était bien celui attendu :
# ./check_procs -c 1:1 -a com.naos.enews.privateInterfaces.utilities.NewNpaiManager
PROCS OK: 1 process with args 'com.naos.enews.privateInterfaces.utilities.NewNpaiManager'

Déduction logique : le problème venait du check_nrpe...
Hop, un petit coup de google and co... Dur dur de trouver la bonne informations...
Après pas mal d'heures de tests, de compilation des sources et pas mal d'heure de recherche sur le net (voire quelques jours...), j'ai enfin trouver "THE SOLUTION".
A priori, le problème proviennait d'une variable d'environnement permettant de limiter le nombre de caractères en sortie de la commande "ps". Lorsque je passais mes tests en local, j'utilisais le compte root. Donc il était normal que j'obtienne le résultat attendu. Par contre en passant pas NRPE, le compte utilisateur était celui de nagios. Le résultat de la commande "ps" était tronqué et la pattern recherchée était absente.

Finalement, la solution la plus élégante pour corriger le problème, a été trouvé via le lien suivant.
J'ai mis en application en modifiant mon fichier de configuration NRPE sur la machine à superviser :

command[check_sending_enews_procs]=COLUMNS=512 /usr/lib/nagios/plugins/check_procs -c 1:1 -a com.naos.enews.privateInterfaces.utilities.SendingSchedulingEmailings
command[check_smtp_log_enews_procs]=COLUMNS=512 /usr/lib/nagios/plugins/check_procs -c 1:1 -a com.naos.enews.privateInterfaces.utilities.NewNpaiManager


Après avoir sauvegardé et relancer le daemon nrpe, j'obtiens afin sur le serveur de supervision le  résultat attendu :

# /usr/local/nagios/libexec/check_nrpe -H 192.168.0.146 -c check_smtp_log_enews_procs
PROCS OK: 1 process with args 'com.naos.enews.privateInterfaces.utilities.NewNpaiManager'

# /usr/local/nagios/libexec/check_nrpe -H 192.168.0.146 -c check_sending_enews_procs
PROCS OK: 1 process with args 'com.naos.enews.privateInterfaces.utilities.SendingSchedulingEmailings'


En conclusion :
Il devient de plus en plus dur de trouver de l'information pertinente sur les moteurs de recherche. Pourtant les problèmes à résoudre sont de plus en plus pointus et demandent quand même une bonne dose de réflexion... D'un autre côté, si c'était facile, ça ne serait pas aussi marrant :-) pour se remuer les méninges non ???

lundi 8 octobre 2012

Optimiser les images de sa lettre

Gérer et optimiser vos images dans vos lettres d'informations.

Le choix du format HTML comme format de diffusion de vos lettres d'informations, vous permet de mettre en valeur votre message par l'insertion d'images et d'illustrations graphiques ce qui va améliorer la lecture de votre message en la rendant plus animée.
Généralement, ces images proviennent soit de votre bibliothèque d'entreprise, soit d'une bibliothèque d'images que vous aurez préalablement sélectionné sur le web. Dans la majorité des cas, les images choisis ne sont pas à la bonne dimension, au bon poids ou parfois vous souhaitez ne récupérer qu'une partie de l'image. Sans les bons outils, nous sommes souvent désemparées lorsqu'il faut optimiser, retailler ou modifier le format d'une image.
Notre article a pour objectif de vous donner quelques pistes afin de réaliser ce type d'opération sans engloutir votre budget communication.

Vous trouverez sur le net, de nombreux logiciels qui sont capables de vous permettre de retailler, d'extraire ou d'optimiser vos images. Loin d'être exhaustif, nous avons sélectionné et testé trois applications sur les environnements Mac et PC. L'investissement des deux premières applications restent raisonnables, un peu moins pour la troisième, mais on ne pouvait pas passer à côté de la référence actuelle du traitement d'image qu'est Photoshop.

Même si aujourd'hui la bande passantes des réseaux est de plus en plus performante, l'optimisation de vos images va vous permettre d'alléger le poids global de votre lettre et favoriser un affichage plus rapide dans les gestionnaires de courriers de vos destinataires.
1BleuPHOTOFILTRE 2BleuPIXELMATOR 3BleuPHOTOSHOP
PhtofiltreLogoCompatible PC
Version gratuite (selon usage) et version Pro . Budget inférieur à 50€.
LogoPixelMatorCompatible MAC
Budget inférieur à 50€
LogoPhotoshopCompatible MAC et PC
Budget supérieur à 400€
PROCEDURE
Commencer par effectuer une copie de sauvegarde de votre image origine.
♦ Pour recadrer/rogner votre image :
Ouvrir votre copie d'image avec Photofiltre phfiltre1
Votre écran se présente avec votre image au centre, une barre horizontale de menus et d'outils dans le haut, une barre verticale d'outils à droite.
Sélectionner dans la barre d'outils, l'outil "Sélection"phfiltre2 .
Sélectionner avec la souris la partie de l'image que vous souhaitez conserver. La partie sélectionnée est encadrée par un pointillé.
Sélectionner
dans le menu "Image", le sous-menu "Recadrer" (ou utiliser le raccourci Maj+ctrl+H).
Il ne vous reste plus à l'écran que la partie souhaitée.

♦ Pour redimensionner votre image :
Sélectionner
dans le menu "Image", le sous-menu "Taille de l'image". Une fenêtre apparaît vous permettant de saisir vos paramètres.
phfiltre4
Cocher l'option 'Conserver les proportions" pour effectuer un redimensionnement homothétique.
Saisir la longueur ou la hauteur en pixels.
Saisir la résolution (généralement 72 pour le web) puis valider.
phfiltre5
♦ Pour sauvegarder l'image modifiée :
Sélectionner dans le menu "Fichier", le sous-menu "Enregistrer sous".
phfiltre6
Choisir le format de l'image (gif ou jpeg). Eviter "png" pour l'emailing.
Sélectionner le répertoire d'enregistrement et valider.
PROCEDURE
Commencer par effectuer une copie de sauvegarde de votre image origine.
♦ Pour recadrer/rogner votre image :
Ouvrir votre copie d'image avec Pixelmator Pixelm1
Votre écran se présente avec votre image au centre, une barre horizontale de menus dans le haut, une barre verticale d'outils à gauche, deux autres fenêtres sur la droite.
Sélectionner dans la barre d'outils, l'outil "Rogner"Pixelm2 .
Sélectionner avec la souris la partie de l'image que vous souhaitez conserver. Pixelm3La partie non sélectionnée est opacifiée.
Valider
votre opération en cliquant en haut à droite sur le bouton "Rogner" Pixelm4.
Il ne vous reste plus à l'écran que la partie souhaitée. Pixelm5♦ Pour redimensionner votre image :
Sélectionner
dans le menu "Image", le sous-menu "Taille de l'image". Une fenêtre apparaît vous permettant de saisir vos paramètres.
Pixelm6
Cocher l'option 'Echelle proportionnelle" pour effectuer un redimensionnement homothétique.
Saisir la longueur ou la hauteur en pixels.
Saisir la résolution (généralement 72 pixels/pouce pour le web) puis valider.
Pixelm7
♦ Pour sauvegarder l'image modifiée :
Sélectionner dans le menu "Partage", le sous-menu "Exporter pour le web".
Choisir les options en haut de l'image telles que
• le format de l'image (gif ou jpeg). Eviter "png" pour l'emailing;
• la qualité de 0 à 100%. Le poids de l'image s'affiche à gauche, en jouant avec ce paramètre, il est possible de le baisser. Il faut alors trouver le bon compromis entre poids et qualité d'image.
Cliquer sur suivant pour finaliser l'enregistrement de votre image et sélectionner le répertoire d'enregistrement.
PROCEDURE
Commencer par effectuer une copie de sauvegarde de votre image origine.
♦ Pour recadrer/rogner votre image :
Ouvrir votre copie d'image avec Photoshopphotoshop1
Votre écran se présente avec votre image au centre, une barre horizontale de menus dans le haut, une barre verticale d'outils à droite ou à gauche, d' autres fenêtres sur la droite.
Sélectionner dans la barre d'outils, l'outil "Rogner"photoshop2 .
Sélectionner avec la souris la partie de l'image que vous souhaitez conserver. photoshop8La partie non sélectionnée est opacifiée.
Valider
votre opération en cliquant en haut à droite sur le bouton "Valider" photoshop4.
Il ne vous reste plus à l'écran que la partie souhaitée. photoshop5
♦ Pour redimensionner votre image :
Sélectionner
dans le menu "Image", le sous-menu "Taille de l'image". Une fenêtre apparaît vous permettant de saisir vos paramètres.
photoshop6
Cocher l'option 'Echelle proportionnelle" pour effectuer un redimensionnement homothétique.
Saisir la longueur ou la hauteur en pixels.
Saisir la résolution (généralement 72 pixels/pouce pour le web) puis valider.
photoshop7
♦ Pour sauvegarder l'image modifiée :
Sélectionner dans le menu "Fichier", le sous-menu "Enregistrer pour le web".
Choisir les options à droite de l'image telles que
• le format de l'image (gif ou jpeg). Eviter "png" pour l'emailing;
• la qualité. Le poids de l'image s'affiche sous l'image, en jouant avec ce paramètre, il est possible de le baisser. Il faut alors trouver le bon compromis entre poids et qualité d'image.
Valider pour finaliser l'enregistrement de votre image et sélectionner le répertoire d'enregistrement.
Voilà, avec ces informations, vous devriez être capable à présent de retailler ou d'optimiser vos images pour vos lettres d'informations.

Chantal KERMAIDIC
Responsable de la communication

Images bloquées, quelles parades ?

Impact de l'attribut "alt" dans les images de votre lettre.

Les images d'une newsletter sont parfois bloquées à l'arrivée sur les postes destinataires en fonction de  l'outil de messagerie utilisé ou de son paramétrage. Votre objectif est d'arriver à rendre votre lettre suffisament attractive  pour que votre destinataire s'y intéresse même si les images sont bloquées.
Dans cette situation, qui ne dépend malheureusement pas de vous, les questions suivantes se posent :
  • comment réussir à intéresser votre destinataire ?
  • comment éviter qu’il ignore ou efface votre email immédiatement?
  • comment lui suggérer d’aller vers votre site ?
  • comment éviter qu’il ne se désabonne ?
  • comment l’inciter à débloquer les images ?
Dans le code HTML de votre lettre, l'insertion d'une image nécessite au minimum l'ajout du code : <img src="nom du fichier"  />
Pour faciliter la mise en page,  les valeurs de longueur et largeur sont généralement renseignés ainsi qu'un texte alternatif :  <img src="nom du fichier" height="hauteur" width="largeur" alt="mon image" />
Dans la réalisation d'une lettre d'information il est fortement conseillé de renseigner les attribut de taille de l'image.
D'autres attributs existent permettant de gérer la position de l'image (droite, gauche, ...) ainsi que sa distance par rapport au texte environant (horizontalement, verticalement,).
Dans cet article, nous allons nous intéresser de plus près à l'attribut "alt".
Comme énoncé plus haut, l'attribut "alt" (pour "alternatif") permet de définir le texte à afficher en lieu et place de l'image si celle-ci ne s'affiche pas suite à un problème de connexion, un problème d'indisponibilité du serveur qui héberge l'image, etc....
Renseigner ce champ évite dans certain cas, de trouver sur sa page (lorsque les images sont bloquées) des images de remplacement du style :

exemple1 ou exemple2
Il devient donc logique de se poser les bonnes questions lors de la réalisation de son message :
  • Dans quels cas faut-il renseigner ce champ ?
  • Quel type de texte faut-il insérer ?
  • Comment mettre en valeur ce texte ?
Si le texte de subsitution s'affiche en lieu et place de l'image, il faut avoir en tête que ce contenu va disposer de l'espace initialement prévu pour l'image.Cette contrainte doit être prise en compte au moment de la rédaction du texte.
Bien sur tous les images n'ont pas besoin de disposer d'un texte alternatif. En effet, certaines images qui composent votre lettre sont purement décoratives (angles arrondis, des séparations graphiques, ...) et ne nécéssitent aucun texte de subsitution.Malgrè tout, si nous voulons éviter "l'affreuse image bloquée", nous allons renseigner notre attribut "alt" avec un seul caractère discret (du style "." ou "-" par exemple). Dans la suite de cet article, nous vous montrerons comment nous pouvons jouer sur son style CSS pour le rendre encore plus discret si nécessaire.
Pour des images du type puce imagée, nous mettrons comme attribut un caractère symbolisant une puce (point, flèche, ...).
Pour des images du type bouton à cliquer, l'attribut "alt" sera renseigné selon le cas par un texte du type "cliquez ici pour vous inscrire". Le destinataire saura ainsi où cliquer et pour quelle raison sans voir l'image.
Pour substutuer un logo, le nom de la société, de la marque ou du produit qu'il symbolise peut-être utilisé.
Pour une "grosse" image contenant un texte (avec une police particulière ou un fond spécifique), utilisez l'attribut pour réécrire le texte ou l'accroche. Attention, si pour des raisons d'intégration votre image a été découpée en plusieurs images, évitez de renseigner l'attribut de chaque morceau avec un texte. Faites-le sur le ou les plus grosses images, ou l'image la mieux placée et pour les autres mettez juste un seul caractère discret comme texte de subsitution.

A ce stade, si les images sont bloquées, votre lettre devrait déjà être plus lisible et le code HTML de la déclaration de votre image devrait ressembler à ceci :<img src="nom du fichier" height="hauteur" width="largeur" border="0" alt="mon texte de substitution" /> (hormis les autres attributs d'image qui auraient pu être renseignés).

Nous allons à présent, nous intéresser à l'enrichissement du texte de substitution afin de le "styler" pour redonner un peu plus de peps à notre lettre. Effectivement, il est tout à fait possible d'appliquer un style de texte à notre image qui ne va en aucun cas influer sur le rendu de l'image, mais qui s'appliquera au texte alternatif si celui-ci était présenté. Il est quand même à signaler que cet artifice technique, n'est pas reconnue par tous les outils de messagerie mais par la plupart.
Pour vous donner une exemple, nous allons travailler sur le texte de substitution de votre logo.
  • La taille de police pour être assez visible pourra être augmenter à 24px ou plus.
  • La couleur de la police pourra être choisie en fonction de la couleur dominante de votre charte graphique.
  • Si vous avez une couleur de fond foncée, la couleur de votre texte de substitution devra être d'une couleur clair, pour qu'il soit visible (voir l'exemple ci-dessous, le texte de substitution apparaît en blanc).
Votre code devrait ressembler à : <img src="nom du fichier" height="hauteur" width="largeur" Alt="mon texte de substitution" style="font-family: Arial, Helvetica, Verdana, Tahoma, sans-serif; font-size: 12px; color: #fff;"/>
Pour les textes de subsitutions contenant les caractères "discrets" cités plus hauts, vous pouvez minimiser leur présence choisissant une taille de police très petite.
Voici ci-dessous un exemple de mise en valeur de newsletter avec l'utilisation de l'attribut Alt
AvecouSansImages
Voilà, à vous de jouer avec le "alt" à présent !
Votre message pourra désormais avoir un impact plus percutant même si les images sont bloquées...
Chantal KERMAIDIC
Reponsable de la communication

vendredi 4 mai 2012

NUMERICABLE: Sécurité et port ouvert

Depuis que j'ai subi l'installation d'un cheval de Troie sur un de mes serveurs il y a maintenant presque deux ans de cela, je suis devenu de plus en plus prudent et surtout de plus en plus restrictif (voire paranoïaque) sur l'accès des services au niveau de mes serveurs. A l'époque, j'avais eu l'outrecuidance de croire que les applications OpenSource que j'installais et que j'utilisais, étaient plus ou moins sécurisées. Je n'avais pas pris la peine de vérifier et de mettre à jours régulièrement phpMyAdmin. Ayant laissé les scripts de setup ouverts, il n'a pas fallu longtemps à mes assaillants pour installer un cheval de Troie. Alerté par le trafic réseau anormal et après quelques heures de recherche, je suis arrivé à nettoyer le serveur infecté et à combler le trou de sécurité.

Depuis cette époque, j'ai installé sur chacun de mes serveurs un firewall système (iptable) et je n'ouvre les services qu'avec parcimonie et à bon escient.

Dernièrement j'installe une nouvelle version d'eGroupWare que j'envisage de faire fonctionner sur le port 445 (microsoft-ds). je vérifie, avant bien sur, dans le fichier /etc/services à quoi correspond l'utilisation de ce port. Pas de souci, c'est un port qui est réservé par le protocole Samba, que je n'utilise pas.

En déplacement lors de mon installation, mes tests de validations sont donc effectués depuis une connexion ADSL chez SFR. Je configure l'accès de port 445 depuis l'adresse IP que j'utilise à ce moment là :

root# iptables -t filter -A INPUT -p tcp --dport 445 -s xxx.xxx.xxx.0/24 -j ACCEPT
root# iptables -t filter -A OUTPUT -p tcp --dport 445 -s xxx.xxx.xxx.0/24 -j ACCEPT

et pas de souci, tous fonctionne correctement. De retour chez moi avec une connexion ADSL Free et après avoir mis les bonnes autorisations, pas de souci aussi, ça fonctionne.
Par contre, de retour au bureau avec une connexion numéricable, là même après avoir configuré convenable mon firewall, impossible d'accès à mon site avec un joli message super bien explicite :


Après avoir passé quelques heures à faire des tests dans tous les sens au niveau de la configuration de mon firewall, je me rends compte qu'avec ou sans firewall, impossible d'accéder à ce service quoi que je fasse. Alors qu'un autre service sur un port différent, passe sans problème. Du coup, je me mets à suspecter le port en question. Effectivement, après une recherche sur le net, j'apprends que le port 445 qui est utilisé par le port Samba est potentiellement un trou de sécurité et peut permettre la récupération des mots de passes d'un PC, donc bloqué chez numéricable.... Mais je suis sur Mac moaaaaa !!!!
Pour résoudre mon problème, j'ai modifié le port d'accès et à présent cela fonctionne...

Beaucoup de temps perdu pour une information qui n'est pas diffusé par numéricable, mais bon c'est toujours satisfaisant de trouver la solution à un problème.


jeudi 26 avril 2012

OpenSuse 12.1: Installer eGroupWare

J'utilise eGroupWare depuis pas mal de temps, pour le module "Base de connaissance". Bon, je sais, installer un outil aussi complet pour n'utiliser qu'un seul module, c'est un peu du luxe. Mais (pour l'instant, car je continu de chercher) je n'ai pas trouvé d'outils OpenSource me permettant de gérer convenablement les informations techniques que j'amasse quotidiennement. Donc comme j'ai les serveurs, comme j'ai les ressources et comme j'ai les compétences, pourquoi ne pas s'offrir le luxe d'installer eGroupWare sur un de nos serveurs ?

Ma dernière installation d'eGroupWare (en version 1.4), remontait à plus de 3ans... mon premier réflexe a donc été d'essayer de mettre à jours, la version existante. Bien mal m'en a pris... Heureusement que dans ma grande sagesse (et surtout avec déjà beaucoup d'upgrade manqués aux compteurs), j'avais sauvegardé à la fois la base et le répertoire d'eGroupWare. Ce qui m'a permis de revenir en arrière sans avoir perdu la moindre information.... Ouf ...
Donc après cette petite mésaventure, je me décide à installer une nouvelle instance d'eGroupWare sur un serveur à part, histoire d'être tranquille.
Le souvenir que j'en avais, c'était qu'eGroupWare avait beaucoup de dépendances au niveau des modules php et que lors de mes premières installations, j'avais pas mal galéré pour toutes les ajouter à la main.
Utilisant depuis quelques temps maintenant le super outil de gestion des packages d'OpenSuse 'zypper', je me dis pourquoi ne pas en profiter pour l'installation d'eGroupWare ? Effectivement, sur le site d'eGroupWare, on trouve justement un repository pour pouvoir utiliser zypper.

Et voilà que l'installation commence.

Etape 1 : ajouter les référence du repository
piaf:~ # zypper addrepo http://download.opensuse.org/repositories/server:/eGroupWare/openSUSE_12.1/ 'openSUSE-12.1 eGroupWare'
Adding repository 'openSUSE-12.1 eGroupWare' [done]
Repository 'openSUSE-12.1 eGroupWare' successfully added
Enabled: Yes
Autorefresh: No
GPG check: Yes
URI: http://download.opensuse.org/repositories/server:/eGroupWare/openSUSE_12.1/


Etape 2 : mettre à jours les informations du nouveau repository
piaf:~ # zypper lr -u
# | Alias                    | Name                     | Enabled | Refresh | URI                                                                       
--+--------------------------+--------------------------+---------+---------+----------------------------------------------------------------------------
1 | openSUSE-12.1 eGroupWare | openSUSE-12.1 eGroupWare | Yes     | No      | http://download.opensuse.org/repositories/server:/eGroupWare/openSUSE_12.1/
2 | repo-12.1-non-oss        | openSUSE-12.1 Non-OSS    | Yes     | No      | http://download.opensuse.org/distribution/12.1/repo/non-oss/              
3 | repo-12.1-oss            | openSUSE-12.1 OSS        | Yes     | No      | http://download.opensuse.org/distribution/12.1/repo/oss/                  
4 | repo-12.1-update         | openSUSE-12.1 Updates    | Yes     | No      | http://download.opensuse.org/update/12.1/       
                          

piaf:~ # zypper refresh
Retrieving repository 'openSUSE-12.1 eGroupWare' metadata [\]

New repository or package signing key received:
Key ID: DC0A179E47E7FC8D
Key Name: server:eGroupWare OBS Project <server:eGroupWare@build.opensuse.org>
Key Fingerprint: A8533F680C15B1B9DC69036BDC0A179E47E7FC8D
Key Created: Sat Apr  3 09:02:42 2010
Key Expires: Mon Jun 11 09:02:42 2012 (expires in 45 days)
Repository: openSUSE-12.1 eGroupWare

Do you want to reject the key, trust temporarily, or trust always? [r/t/a/?] (r): a
Retrieving repository 'openSUSE-12.1 eGroupWare' metadata [done]
Building repository 'openSUSE-12.1 eGroupWare' cache [done]
Repository 'openSUSE-12.1 Non-OSS' is up to date.
Repository 'openSUSE-12.1 OSS' is up to date.
Retrieving repository 'openSUSE-12.1 Updates' metadata [done]
Building repository 'openSUSE-12.1 Updates' cache [done]
All repositories have been refreshed.
 


Etape 3 : installation d'eGroupWare
piaf:~ # zypper search egroupware
Loading repository data...
Reading installed packages...

S | Name                       | Summary                                                   | Type     
--+----------------------------+-----------------------------------------------------------+-----------
  | eGroupware                 | EGroupware is a web-based groupware suite written in php. | package  
  | eGroupware                 | EGroupware is a web-based groupware suite written in php. | srcpackage
  | eGroupware-bookmarks       | The EGroupware bookmarks application                      | package  
  | eGroupware-calendar        | The EGroupware calendar application                       | package  
  | eGroupware-core            | The EGroupware core                                       | package  
  | eGroupware-developer_tools | The EGroupware developer_tools application                | package  
  | eGroupware-egw-pear        | The EGroupware egw-pear application                       | package  
  | eGroupware-emailadmin      | The EGroupware emailadmin application                     | package  
  | eGroupware-felamimail      | The EGroupware Webmail application                        | package  
  | eGroupware-filemanager     | The EGroupware filemanager application                    | package  
  | eGroupware-gallery         | The EGroupware gallery application                        | package  
  | eGroupware-importexport    | The EGroupware importexport application                   | package  
  | eGroupware-infolog         | The EGroupware infolog application                        | package  
  | eGroupware-manual          | The EGroupware manual application                         | package  
  | eGroupware-news_admin      | The EGroupware news_admin application                     | package  
  | eGroupware-notifications   | The EGroupware notifications application                  | package  
  | eGroupware-phpbrain        | The EGroupware phpbrain application                       | package  
  | eGroupware-phpfreechat     | The EGroupware chat application                           | package  
  | eGroupware-phpsysinfo      | The EGroupware phpsysinfo application                     | package  
  | eGroupware-polls           | The EGroupware polls application                          | package  
  | eGroupware-projectmanager  | The EGroupware projectmanager application                 | package  
  | eGroupware-registration    | The EGroupware registration application                   | package  
  | eGroupware-resources       | The EGroupware resources application                      | package  
  | eGroupware-sambaadmin      | The EGroupware sambaadmin application                     | package  
  | eGroupware-sitemgr         | The EGroupware Sitemanager CMS application                | package  
  | eGroupware-syncml          | The EGroupware syncml application                         | package  
  | eGroupware-timesheet       | The EGroupware timesheet application                      | package  
  | eGroupware-tracker         | The EGroupware trouble ticket system application          | package  
  | eGroupware-wiki            | The EGroupware wiki application                           | package  

piaf:~ # zypper install eGroupware
Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following NEW packages are going to be installed:
  eGroupware eGroupware-bookmarks eGroupware-calendar eGroupware-core eGroupware-developer_tools eGroupware-egw-pear eGroupware-emailadmin
  eGroupware-felamimail eGroupware-filemanager eGroupware-importexport eGroupware-infolog eGroupware-manual eGroupware-news_admin eGroupware-notifications
  eGroupware-phpbrain eGroupware-phpfreechat eGroupware-phpsysinfo eGroupware-polls eGroupware-projectmanager eGroupware-registration eGroupware-resources
  eGroupware-sambaadmin eGroupware-sitemgr eGroupware-syncml eGroupware-timesheet eGroupware-tracker eGroupware-wiki jpgraph libc-client2007e_suse php5-bz2
  php5-gd php5-imap php5-posix php5-zip t1lib tnef

36 new packages to install.
Overall download size: 21.7 MiB. After the operation, additional 69.0 MiB will be used.
Continue? [y/n/?] (y):
Retrieving package tnef-1.4.9-1.1.x86_64 (1/36), 45.0 KiB (131.0 KiB unpacked)
Retrieving: tnef-1.4.9-1.1.x86_64.rpm [done]
Retrieving package libc-client2007e_suse-2007e_suse-9.1.2.x86_64 (2/36), 405.0 KiB (1.1 MiB unpacked)
Retrieving: libc-client2007e_suse-2007e_suse-9.1.2.x86_64.rpm [done]
Retrieving package php5-bz2-5.3.8-4.12.2.x86_64 (3/36), 27.0 KiB (28.0 KiB unpacked)
Retrieving: php5-bz2-5.3.8-4.12.2.x86_64.rpm [done (0 B/s)]
Retrieving package php5-posix-5.3.8-4.12.2.x86_64 (4/36), 27.0 KiB (32.0 KiB unpacked)
Retrieving: php5-posix-5.3.8-4.12.2.x86_64.rpm [done]
Retrieving package php5-zip-5.3.8-4.12.2.x86_64 (5/36), 49.0 KiB (88.0 KiB unpacked)
Retrieving: php5-zip-5.3.8-4.12.2.x86_64.rpm [done]
Retrieving package t1lib-5.1.2-15.7.1.x86_64 (6/36), 152.0 KiB (405.0 KiB unpacked)
Retrieving: t1lib-5.1.2-15.7.1.x86_64.rpm [done]
Retrieving package php5-imap-5.3.8-4.12.2.x86_64 (7/36), 46.0 KiB (100.0 KiB unpacked)
Retrieving: php5-imap-5.3.8-4.12.2.x86_64.rpm [done]
Retrieving package php5-gd-5.3.8-4.12.2.x86_64 (8/36), 99.0 KiB (333.0 KiB unpacked)
Retrieving: php5-gd-5.3.8-4.12.2.x86_64.rpm [done]
Retrieving package jpgraph-3.0.7-2.1.noarch (9/36), 9.8 MiB (21.8 MiB unpacked)
Retrieving: jpgraph-3.0.7-2.1.noarch.rpm [done (4.4 MiB/s)]
Retrieving package eGroupware-core-1.8.004.20120423-1.1.noarch (10/36), 5.6 MiB (23.8 MiB unpacked)
Retrieving: eGroupware-core-1.8.004.20120423-1.1.noarch.rpm [done (4.2 MiB/s)]
Retrieving package eGroupware-wiki-1.8.004.20120423-1.1.noarch (11/36), 152.0 KiB (487.0 KiB unpacked)
Retrieving: eGroupware-wiki-1.8.004.20120423-1.1.noarch.rpm [done]
Retrieving package eGroupware-tracker-1.8.004.20120423-1.1.noarch (12/36), 136.0 KiB (555.0 KiB unpacked)
Retrieving: eGroupware-tracker-1.8.004.20120423-1.1.noarch.rpm [done]
Retrieving package eGroupware-timesheet-1.8.004.20120423-1.1.noarch (13/36), 91.0 KiB (265.0 KiB unpacked)
Retrieving: eGroupware-timesheet-1.8.004.20120423-1.1.noarch.rpm [done]
Retrieving package eGroupware-sitemgr-1.8.004.20120423-1.1.noarch (14/36), 825.0 KiB (2.8 MiB unpacked)
Retrieving: eGroupware-sitemgr-1.8.004.20120423-1.1.noarch.rpm [done]
Retrieving package eGroupware-sambaadmin-1.8.004.20120423-1.1.noarch (15/36), 49.0 KiB (79.0 KiB unpacked)
Retrieving: eGroupware-sambaadmin-1.8.004.20120423-1.1.noarch.rpm [done]
Retrieving package eGroupware-resources-1.8.004.20120423-1.1.noarch (16/36), 106.0 KiB (338.0 KiB unpacked)
Retrieving: eGroupware-resources-1.8.004.20120423-1.1.noarch.rpm [done]
Retrieving package eGroupware-registration-1.8.004.20120423-1.1.noarch (17/36), 161.0 KiB (434.0 KiB unpacked)
Retrieving: eGroupware-registration-1.8.004.20120423-1.1.noarch.rpm [done]
Retrieving package eGroupware-projectmanager-1.8.004.20120423-1.1.noarch (18/36), 397.0 KiB (1.6 MiB unpacked)
Retrieving: eGroupware-projectmanager-1.8.004.20120423-1.1.noarch.rpm [done]
Retrieving package eGroupware-polls-1.8.004.20120423-1.1.noarch (19/36), 68.0 KiB (142.0 KiB unpacked)
Retrieving: eGroupware-polls-1.8.004.20120423-1.1.noarch.rpm [done]
Retrieving package eGroupware-phpsysinfo-1.8.004.20120423-1.1.noarch (20/36), 267.0 KiB (1.0 MiB unpacked)
Retrieving: eGroupware-phpsysinfo-1.8.004.20120423-1.1.noarch.rpm [done (843.8 KiB/s)]
Retrieving package eGroupware-phpfreechat-1.8.004.20120423-1.1.noarch (21/36), 971.0 KiB (4.7 MiB unpacked)
Retrieving: eGroupware-phpfreechat-1.8.004.20120423-1.1.noarch.rpm [done]
Retrieving package eGroupware-phpbrain-1.8.004.20120423-1.1.noarch (22/36), 155.0 KiB (639.0 KiB unpacked)
Retrieving: eGroupware-phpbrain-1.8.004.20120423-1.1.noarch.rpm [done]
Retrieving package eGroupware-notifications-1.8.004.20120423-1.1.noarch (23/36), 58.0 KiB (115.0 KiB unpacked)
Retrieving: eGroupware-notifications-1.8.004.20120423-1.1.noarch.rpm [done]
Retrieving package eGroupware-news_admin-1.8.004.20120423-1.1.noarch (24/36), 105.0 KiB (361.0 KiB unpacked)
Retrieving: eGroupware-news_admin-1.8.004.20120423-1.1.noarch.rpm [done]
Retrieving package eGroupware-infolog-1.8.004.20120423-1.1.noarch (25/36), 294.0 KiB (1.3 MiB unpacked)
Retrieving: eGroupware-infolog-1.8.004.20120423-1.1.noarch.rpm [done (0 B/s)]
Retrieving package eGroupware-importexport-1.8.004.20120423-1.1.noarch (26/36), 206.0 KiB (432.0 KiB unpacked)
Retrieving: eGroupware-importexport-1.8.004.20120423-1.1.noarch.rpm [done]
Retrieving package eGroupware-egw-pear-1.8.004.20120423-1.1.noarch (27/36), 105.0 KiB (503.0 KiB unpacked)
Retrieving: eGroupware-egw-pear-1.8.004.20120423-1.1.noarch.rpm [done]
Retrieving package eGroupware-developer_tools-1.8.004.20120423-1.1.noarch (28/36), 82.0 KiB (220.0 KiB unpacked)
Retrieving: eGroupware-developer_tools-1.8.004.20120423-1.1.noarch.rpm [done]
Retrieving package eGroupware-calendar-1.8.004.20120423-1.1.noarch (29/36), 467.0 KiB (2.4 MiB unpacked)
Retrieving: eGroupware-calendar-1.8.004.20120423-1.1.noarch.rpm [done]
Retrieving package eGroupware-bookmarks-1.8.004.20120423-1.1.noarch (30/36), 121.0 KiB (280.0 KiB unpacked)
Retrieving: eGroupware-bookmarks-1.8.004.20120423-1.1.noarch.rpm [done]
Retrieving package eGroupware-manual-1.8.004.20120423-1.1.noarch (31/36), 56.0 KiB (61.0 KiB unpacked)
Retrieving: eGroupware-manual-1.8.004.20120423-1.1.noarch.rpm [done]
Retrieving package eGroupware-syncml-1.8.004.20120423-1.1.noarch (32/36), 65.0 KiB (235.0 KiB unpacked)
Retrieving: eGroupware-syncml-1.8.004.20120423-1.1.noarch.rpm [done]
Retrieving package eGroupware-filemanager-1.8.004.20120423-1.1.noarch (33/36), 171.0 KiB (476.0 KiB unpacked)
Retrieving: eGroupware-filemanager-1.8.004.20120423-1.1.noarch.rpm [done (0 B/s)]
Retrieving package eGroupware-emailadmin-1.8.004.20120423-1.1.noarch (34/36), 121.0 KiB (497.0 KiB unpacked)
Retrieving: eGroupware-emailadmin-1.8.004.20120423-1.1.noarch.rpm [done]
Retrieving package eGroupware-felamimail-1.8.004.20120423-1.1.noarch (35/36), 361.0 KiB (1.6 MiB unpacked)
Retrieving: eGroupware-felamimail-1.8.004.20120423-1.1.noarch.rpm [done]
Retrieving package eGroupware-1.8.004.20120423-1.1.noarch (36/36), 30.0 KiB (0 B unpacked)
Retrieving: eGroupware-1.8.004.20120423-1.1.noarch.rpm [done]
Installing: tnef-1.4.9-1.1 [done]
Installing: libc-client2007e_suse-2007e_suse-9.1.2 [done]
Installing: php5-bz2-5.3.8-4.12.2 [done]
Installing: php5-posix-5.3.8-4.12.2 [done]
Installing: php5-zip-5.3.8-4.12.2 [done]
Installing: t1lib-5.1.2-15.7.1 [done]
Installing: php5-imap-5.3.8-4.12.2 [done]
Installing: php5-gd-5.3.8-4.12.2 [done]
Installing: jpgraph-3.0.7-2.1 [done]
Installing: eGroupware-core-1.8.004.20120423-1.1 [done]
Installing: eGroupware-wiki-1.8.004.20120423-1.1 [done]
Installing: eGroupware-tracker-1.8.004.20120423-1.1 [done]
Installing: eGroupware-timesheet-1.8.004.20120423-1.1 [done]
Installing: eGroupware-sitemgr-1.8.004.20120423-1.1 [done]
Installing: eGroupware-sambaadmin-1.8.004.20120423-1.1 [done]
Installing: eGroupware-resources-1.8.004.20120423-1.1 [done]
Installing: eGroupware-registration-1.8.004.20120423-1.1 [done]
Installing: eGroupware-projectmanager-1.8.004.20120423-1.1 [done]
Installing: eGroupware-polls-1.8.004.20120423-1.1 [done]
Installing: eGroupware-phpsysinfo-1.8.004.20120423-1.1 [done]
Installing: eGroupware-phpfreechat-1.8.004.20120423-1.1 [done]
Installing: eGroupware-phpbrain-1.8.004.20120423-1.1 [done]
Installing: eGroupware-notifications-1.8.004.20120423-1.1 [done]
Installing: eGroupware-news_admin-1.8.004.20120423-1.1 [done]
Installing: eGroupware-infolog-1.8.004.20120423-1.1 [done]
Installing: eGroupware-importexport-1.8.004.20120423-1.1 [done]
Installing: eGroupware-egw-pear-1.8.004.20120423-1.1 [done]
Installing: eGroupware-developer_tools-1.8.004.20120423-1.1 [done]
Installing: eGroupware-calendar-1.8.004.20120423-1.1 [done]
Installing: eGroupware-bookmarks-1.8.004.20120423-1.1 [done]
Installing: eGroupware-manual-1.8.004.20120423-1.1 [done]
Installing: eGroupware-syncml-1.8.004.20120423-1.1 [done]
Installing: eGroupware-filemanager-1.8.004.20120423-1.1 [done]
Installing: eGroupware-emailadmin-1.8.004.20120423-1.1 [done]
Installing: eGroupware-felamimail-1.8.004.20120423-1.1 [done]
Installing: eGroupware-1.8.004.20120423-1.1 [done]
Additional rpm output:
/var/tmp/rpm-tmp.tlGGWE: line 2: /usr/bin/php5: No such file or directory
EGroupware install log saved to /root/eGroupware-install.log


Et voilà, le tour est joué... facile non?
Juste un petit souci, car il manque l'exécutable /usr/bin/php5. Pour cela il suffit d'installer le package php5 (j'ai quand même mis un bout de temp à trouver le bon package, car un package php5 était déjà installé, mais ce n'était pas le bon) :

piaf:~ # zypper install php5
Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following package is going to be upgraded:
  php5

1 package to upgrade.
Overall download size: 1.1 MiB. No additional space will be used or freed after the operation.
Continue? [y/n/?] (y):
Retrieving package php5-5.3.8-4.12.2.x86_64 (1/1), 1.1 MiB (4.6 MiB unpacked)
Retrieving: php5-5.3.8-4.12.2.x86_64.rpm [done (0 B/s)]
Installing: php5-5.3.8-4.12.2 [done]


Beaucoup plus simple à installer car je n'ai plus à m'occuper des dépendances. Par défaut, les fichiers d'eGroupWare sont situé dans /usr/share/egroupware. Il suffit donc maintenant de configurer apaache et de suivre les instructions d'installation d'eGroupWare. Je n'ai rencontré aucun problème pour la suite, mais si vous avez un souci, n'hésitez pas à me laisser une question.

jeudi 5 avril 2012

Tester l'impact de votre campagne avant envoi (Part II)

Dans notre sujet "tester sa campagne avant envoi (part I), je vous avais énuméré quelques points importants à valider avant l’envoi de votre campagne d’emails. Ces tests concernaient essentiellement la validation de la lettre, au niveau fonctionnel et visuel.


Afin d'assurer le maximum d’impact de votre campagne , avez-vous déjà pensé à tester le contenu de votre lettre sur un échantillon de votre cible ?


Même si des études aujourd’hui mettent en évidence ce qui, dans une lettre, marche mieux ou moins bien , votre liste de contacts possède ses spécificités et par conséquent, son comportement aussi.


Lorsque vous créez une campagne, rien ne vous empêche de faire votre propre étude de comportement et ainsi optimiser l'impact.



Le principe de base est le suivant :
Vous créez 2 ou 3 sous-listes (échantillons) de votre base en extrayant 5 à 10 % (selon volume) des contacts de votre liste globale.
Sur ces différentes sous-listes, vous allez envoyer votre lettre avec différents contenus, analyser les résultats et à partir de ces échantillons décider du contenu à envoyer sur la totalité.
Vous verrez, les résultats sont surprenants et parfois inattendus !

Mais quels éléments de la lettre pouvez-vous comparer ?

Il y a trois barrières importantes à franchir dans le process de lecture d’une lettre :
1. L’identification de l’expéditeur et l’objet de la lettre
2. Le contenu du premier quart de votre lettre (« Johnson Box »)
3. Le reste de votre lettre

L’identification de l’expéditeur
Il est important d’être clairement identifié et vous n’avez pas beaucoup de choix pour le faire.
En règle générale, on utilisera le nom de la société et/ou le nom du produit/service/marque. Dans certains cas, pour la fidélisation avec ses clients, un contact commercial par exemple pourra utiliser son nom.
Ce champ doit être défini dès vos toutes premières lettres et demeurer fixe.

L’objet de la lettre
N’hésitez pas à tester différents objets (sujets) sur vos échantillons !
Lorsque vous définissez l’objet de la lettre, gardez en tête que c’est le deuxième élément après le nom de l'expéditeur qui va déclencher son ouverture.
Il peut lui aussi contenir le nom de la société, le nom d’une marque, le nom d’un produit ou service s’il n’a pas déjà été utilisé auparavant pour identifier l’expéditeur. En pratique, c’est la marque qui apparaît le plus.
Mais l’objet, c’est la première accroche de votre contact. Elle doit lui donner envie d’aller plus loin. Attention, beaucoup d’outils de messagerie tronquent l’objet du message dans la fenêtre de réception des emails à moins de 40 caractères. Soyez bref !!!

La Johnson Box
Je vous rappelle qu’il s’agit là du premier quart de votre lettre (les 30 premières lignes). Retrouvez sa définition dans la fiche pratique : Comment augmenter le taux d'ouverture de vos lettres d'information ?

Tout comme l’objet de la lettre, cette partie mérite d’être testée. En effet, il s’agit de la dernière barrière à franchir pour que le destinataire se transforme en lecteur et s’intéresse vraiment à votre message.

C’est l’introduction à votre lettre et souvent la seule partie visible à l’ouverture.
Testez différentes introductions de votre lettre sur différents échantillons de contacts !

Le contenu global de la lettre
Hormis le ou les sujets développés dans votre lettre et la façon dont ils sont traités, il a été constaté que certains éléments de la lettre peuvent influencer la réactivité des destinataires (tels que la présence d'un logo, sa localisation, le nombre de liens, . . .).
Tester ces éléments est faisable mais requiert beaucoup de temps car cela peut remettre en question le design complet de la lettre. Ces questions là, vous devez vous les poser au moment de la création de la lettre et non pas au moment de la validation. Par conséquent, plutôt que de les tester sur des échantillons de contacts, je vous incite à suivre les règles couramment pratiquées et de déduire des résultats globaux de votre campagne, s'il est nécessaire ou pas de remettre en question le design général de votre lettre.


Que déduire de vos résultats sur échantillons ?

L'analyse est très simple :
L'échantillon qui obtiendra le taux d'ouverture le plus élevé validera l'objet (ou le sujet) de la lettre le plus efficace, le plus accrocheur.
L'échantillon qui obtiendra le taux de clics le plus élevé (proportionnellement au taux d'ouverture de l'échantillon) validera la "Johnson Box" la plus accrocheuse.

Exemple :
Supposons que je crée trois échantillons de 150 contacts chacun : échantillon N°1, N°2 et N°3
Après envoi de mes différents essais (sujet des messages différents, Johnson Box différentes) de campagne sur mes échantillons, supposons que j'obtienne :
Un nombre d'ouvertures pour chaque échantillon qui est respectivement de : 84, 105 et 90
Un nombre de clics pour chaque échantillon qui est respectivement de : 13, 15 et 13
Je vais pouvoir déduire quelques taux de ces résultats :


Mes résultats décrits ci-dessus démontrent que si je veux m'assurer le maximum d'impact, j'ai tout intérêt à envoyer ma lettre en prenant "le sujet" de lettre utilisé pour mon échantillon N°2 et le contenu utilisé pour mon échantillon N°1.

Attention : Lorsque vous lancerez l'envoi définitif de votre campagne d'email, n'oubliez pas d'exclure de la liste de diffusion, les sous-listes échantillons afin d'éviter une double réception de votre lettre. Pour cela, utilisez la fonction "Exclusion de listes" de la solution ENEWS™.

Cordialement,

Chantal Kermaïdic
Responsable Marketing ENEWS™

mercredi 28 mars 2012

Audit et optimisation MySQL 5

Ca faisait un moment que je devais écrire un post sur cet excellent livre. Mais à chaque fois, je me trouve d'autres occupations. Profitant donc d'un peu de temps libre, voici mon avis sur ce livre destiné aux administrateurs.
Bon, il est vrai que le livre a été édité en mars 2010, avant l'acquisition de MySQL par ORACLE et que depuis, il a coulé beaucoup d'eau sous les ponts. Mais, il n'en demeure pas moins une excellente référence pour tous les administrateurs qui n'ont malheureusement pas le temps d'approfondir leur connaissance suite à une surcharge de travail.

Ce que j'ai particulièrement apprécié dans ce livre c'est son positionnement. Enfin un livre qui répond aux questions qu'on se pose lorsque l'on doit auditer ou optimiser une base ou le schéma d'une base, lorsque l'on doit faire face à une situation d'urgence suite à un accroissement de requêtes lors d'un burst.

Chapitre 1 : Il est essentiellement consacré à la gestion des situations d'urgences. Il est bien évident, que toutes les situations ne peuvent pas être traitées, mais on sent le vécu et l'expérience des auteurs au travers des exemples et astuces qu'il nous prodigue. Cela a été très instructif. Même si je n'ai pas eu souvent de situations catastrophiques à gérer, c'est toujours intéressant de savoir comment réagir lorsqu'un imprévu se présente.

Chapitre 2 : Ce chapitre est consacré au choix de son (ses) serveur(s) pour l'hébergement de son instance de MySQL. Cette partie, même si elle décrit les grands axes permettant de faire ses propres choix, elle reste pour moi trop généraliste. J'aurai aimé voir apparaitre le traitement de cas concrets en terme de dimensionnement, de configuration système, de paramétrage spécifique du noyau, du paramétrage des différentes variables de MySQL. Mais bon, c'est déjà bien d'avoir abordé ce sujet dans un livre? Peut-être que la prochaine édition sera beaucoup plus prolixe sur ce sujet ?

Chapitre 3 : Enfin !! un livre qui ose aborder dans le détails les différents moteurs de stockage de MySQL. Historiquement, n'ayant pas besoin de transaction dans les applications que je développe, je me suis toujours contenté du moteur de stockage par défaut qui est MyISAM. Avec le temps, je me suis aussi habitué aux outils me permettant (mysqlcheck) de réparer ou de corriger mes bases. De plus (touchons du bois) à ce jour, je n'ai eu aucune raison valable et sérieuse d'en changer :
  • les performances sont très satisfaisantes, 
  • j'ai pratiquement aucune erreur, 
  • je n'ai jamais eu de pertes de données.
Mais il était intéressant de voir quels étaient les différents moteurs de stockages et de pouvoir imaginer quel moteur choisir en fonction du type d'utilisation de l'application développée. 

A suivre...

jeudi 15 mars 2012

Tester sa campagne avant envoi (Part I)

L’une des étapes les plus importantes, et souvent négligée ou mal préparée dans la réalisation de votre campagne d’email marketing, est le test avant l’envoi.

Alors que les tests seront très succincts dans le cadre d’une lettre au format « Texte », ils devront être très approfondis pour une lettre au format « html ».
Je vous suggère d’établir dans ce second cas, une checklist des différents points à tester en incluant au minimum les différentes erreurs souvent commises et listée ci-dessous, puis en adaptant cette liste au contenu de votre lettre.
Ce travail de préparation est loin d’être inutile et pourra être réutilisé pour vos campagnes suivantes.

Vous devez impérativement tester le rendu de votre lettre depuis un ordinateur différent de celui sur lequel elle a été créée. Vous devez aussi le tester dans des environnements variés et ainsi, vérifier que l’apparence et le format correspondent à vos attentes.
Lorsque je parle d’environnements, cela signifie : visualiser votre lettre en utilisant différents navigateurs, en utilisant différents outils de messagerie, en utilisant différentes résolutions d’écran.

Votre lettre peut avoir une apparence différente selon le navigateur utilisé, selon le gestionnaire de courrier utilisé et selon la version logicielle de ceux-ci.
On rencontre deux types de gestionnaire de courriers. Des messageries de type « webmail » accessibles à partir d’un navigateur, telles que : Hotmail, Yahoo, Gmail, Orange, Aol, Free, … et des gestionnaires de courrier installées sur l’ordinateur de votre destinataire tels que Outlook, Thunderbird, Lotus, ….
Ne désespérez pas ! Pour vos premières lettres, vous devrez effectuer un bon nombre de tests, puis avec l’expérience, vous arriverez à identifier des comportements similaires ainsi que les points particuliers à valider selon les outils. Vous pourrez ainsi réduire votre panel de tests.
Il est bien sûr évident que vous ne pourrez pas tester de façon exhaustive tous les environnements utilisés par votre cible. A noter que la solution ENEWS™, vous permet d’estimer à partir de l’analyse de vos listes de diffusion, les types d’outil de messagerie les plus utilisés par vos lecteurs et ainsi d’orienter vos tests en conséquence.

Voici quelques défauts souvent constatés sur lesquels vous devrez être vigilant et qui doivent être contrôlés :

1. Les images contenues dans votre lettre Selon qu’elles sont embarquées ou distantes (cf. notre dossier : Les images de votre lettre : distantes ou embarquées ?), vérifiez qu’elles puissent s’afficher correctement.
Pour les images distantes (accessible via une url de type : http://www.ServeurDeMaSociete.com/MesImages/Image1.jpeg) contrôlez les points suivants :
- Les images sont présentes sur le site
- Les images sont accessibles
Pour les images embarquées (grâce à l’utilisation d’ENEWS™), vérifiez que :
- Les images sont correctement embarquées avec le message

2. Les polices de caractères Tous les systèmes d’exploitation ne lisent pas les mêmes polices de caractères surtout dans le cas de polices spécifiques. Lors de la réalisation de la lettre, vous pouvez choisir une liste de polices de substitution. Si malgré cela, vous souhaitez utiliser des polices « exotiques », nous préconisons alors l’utilisation d’image pour ces parties de texte. Dans le cas de polices classiques (Arial, Verdana, Times, Courrier, …), préférez le format texte plutôt que image afin de minimiser le poids de votre lettre.

3. Les résolutions d’écran
Lorsque vous créez votre message, vous avez la possibilité de dimensionner les différents éléments qui constituent votre lettre avec des tailles fixes ou proportionnelles à votre écran.
Dans le premier cas, les éléments de votre lettre seront tous placés identiquement quelle que soit la résolution de l’écran destinataire. Si la résolution de l’écran du lecteur est inférieure, il ne verra qu’une partie de la lettre et devra utiliser l’ascenseur de sa fenêtre pour voir le reste. Si au contraire, la résolution de l’écran du lecteur est supérieure, la lettre (entière) n’apparaîtra que sur une partie de celui-ci, et le rendu pourra être altéré.
Dans le second cas, quelle que soit la résolution, la lettre s’adaptera au format de l’écran. Mais attention aux décalages ! Le dimensionnement proportionnel des éléments d’une lettre peut réserver de mauvaises surprises. Votre lettre peut se déformer, des espaces vides peuvent se former : à tester !!

4. Les liens présents dans la lettre
Testez tous les liens de votre lettre. Quelle désolation de cliquer sur un lien qui ne réagit pas ou qui vous ouvre une page d’erreur « 404, not found » ! Un oubli de ce type peut réduire à néant tout le bénéfice de votre campagne alors qu’il est si simple à tester et à corriger le cas échéant. Même les liens qui sont toujours présents dans vos lettres, tel que le lien de désinscription par exemple, ou les liens d’accès à certaines pages de votre site web doivent être testés. Les adresses d’accès à ces pages ont pu être modifiées depuis votre dernière campagne. Il peut y avoir une indisponibilité passagère ou ils peuvent tout simplement avoir été mal orthographiés dans votre lettre. Lorsque les liens font référence à des pages de votre site internet, avant de lancer votre campagne, assurez-vous que le serveur est bien accessible. L’un des gros avantages de l’emailing est la rapidité d’interactions des destinataires, il ne faut pas rater cette opportunité!

5. Les fautes d’orthographe
Vous conviendrez comme moi, qu’il est plus important de focaliser l’attention de votre destinataire sur le contenu de la lettre plutôt que sur les fautes d’orthographe ou de grammaire. Essayez de les éviter.

6. Encodage de votre lettre
Le type d’encodage html de votre lettre est très important. Selon l’encodage utilisé, les caractères contenus dans votre lettre vont pouvoir être interprétés ou pas par les navigateurs, et par conséquent, votre lettre va s’afficher chez le destinataire avec l’apparence souhaitée ou comme une succession de caractères indéchiffrables. Attention, l’encodage utilisé devra être compatible avec la langue de votre cible.

7. Apparition des accents dans le sujet (l’objet) de la lettre
Méfiez-vous des accents ou des caractères spéciaux dans les sujets de lettres. Mal encodés, ils peuvent rendre l’objet de l’email illisible. Exemple :« =?iso-8859-1?Q?invitation : r=E9union pr=E9 - salon E ... »

8. Personnalisation
Si vous souhaitez personnaliser votre message ou le sujet, pensez à vous assurer que les champs utilisés dans votre base de contacts sont bien renseignés.

9. Charge du serveur distant
Votre lettre contient des liens ou des images distantes, assurez-vous que votre serveur soit capable de répondre aux sollicitations (tenir la charge).


Les défauts cités ci-dessus sont parmi les plus rencontrés. Ils peuvent facilement être évités par une phase de tests. Cette phase de tests peut être simplifiée par l’utilisation de la solution ENEWS™ qui vous aidera à valider votre lettre mais qui en plus vous évitera de tomber dans certains des pièges énumérés ci-dessus.

Une lettre qui n’apparaît pas correctement peut très vite décourager votre destinataire. Il risque de la supprimer sans même en avoir pris connaissance, ou même le pousser à se désinscrire pour ne plus recevoir les suivantes !!
N’oubliez pas que votre lettre véhicule l’image de votre société.
Au delà de la performance apporté par ENEWS™, notre solution s’entoure d’une équipe expérimentée qui est à votre écoute et qui peut vous conseiller et vous accompagner.

Cordialement,

Chantal Kermaïdic
Responsable Marketing ENEWS™

mercredi 29 février 2012

Extension du plugin NAGIOS MailBoxHealth pour EXCHANGE 2010

Dernièrement, j'ai été amené à mettre en place pour un client la supervision d'EXCHANGE 2010.
Pour cela, j'ai trouvé l'excellent plugin de Jeffrey ROBERTSON (Accéder au plugin). Malheureusement, les clients ayant des problèmes avec leurs propres spécificités, ce plugin ne pouvait les contenter en l'état.
En effet, lors de la supervision des points de montage des dossiers, certains montages n'étant pas utilisés (donc non montés), le plugin renvoyait une erreur, alors que touy fonctionné normalement.
Il a donc fallu se retrousser les manches et se mettre à faire du Powershell. Je sais, je ne suis pas vraiment un spécialiste de l'environnement Microsoft, mais à certains moments, il faut mettre ses grands principes de côté et passer à l'action afin de mener à bien sa mission :-)

Finalement, le PowerShell c'est pas si mal. Le problème, comme pour tous nouveaux langages, c'est la syntaxe. J'ai quand même eu beaucoup de mal à trouver de l'information. A croire, que les gens sont avares d'informations pertinentes lorsqu'il s'agit de toucher à l'environnement Microsoft ???

L'idée était de pouvoir passer en argument des paramètres permettant d'exclure du check des points de montage.
J'ai donc introduit dans le code, la passage des arguments suivants :
  • -A : Pour contrôler l'ensemble des points de montages
  • -X : Pour exclure du contrôle les points de montages passés en argument (une liste de noms séparés par des virgules)
  • -I : Pour exclure du contrôle la liste de mots clés passés en argument (plusieurs mots clés séparés par des virgules)
Voici le code source du script :

function Help
{
write-host "This script check the MailBox Health of Exchange 2010"
write-host ""
write-host "Options:"
write-host "-A (The default)"
write-host " Check all Exchange Databases"
write-host "-X"
write-host " Ignore the Exchange Databases indicated in arguments (list separeted by a comma)"
write-host "-I"
write-host " Keyword expression to ignore the Exchange Databases"
exit
}
function validateChecking
{
[string]$DataBaseName = $DataBase.Name ;
if ($ExcludedDatabases.length -gt 0){
ForEach ($Exclude in $ExcludedDatabases)
{
if ($DataBaseName.CompareTo($Exclude) -eq 0)
{
return $FALSE
}
}
}
if ($ExcludedKeywordsDatabases.length -gt 0){
ForEach ($KeywordExclude in $ExcludedKeywordsDatabases)
{
if ($DataBaseName.Contains($KeywordExclude))
{
return $FALSE
}
}
}
return $TRUE
}


function checkDatabases
{
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010

$NagiosStatus = "0"
$NagiosDescription = ""


ForEach ($DataBase in Get-MailboxDatabase) {
if (validateChecking)
{
ForEach ($Status in Get-MailboxDatabaseCopyStatus -Identity $DataBase.Name) {
switch ($Status.Status) {
"Failed" { 
$NagiosStatus = "2"
if ($NagiosDescription -ne "") {
$NagiosDescription = $NagiosDescription + ", "
}
$NagiosDescription = $NagiosDescription + $Status.Name + " is " + $Status.Status
}

"Dismounted" {
$NagiosStatus = "2"
if ($NagiosDescription -ne "") {
$NagiosDescription = $NagiosDescription + ", "
}
$NagiosDescription = $NagiosDescription + $Status.Name + " is " + $Status.Status
}

"Resynchronizing" {
if ($NagiosStatus -ne "2") {
$NagiosStatus = "1"
}
if ($NagiosDescription -ne "") {
$NagiosDescription = $NagiosDescription + ", "
}
$NagiosDescription = $NagiosDescription + $Status.Name + " is " + $Status.Status
}


"Suspended" {
if ($NagiosStatus -ne "2") {
$NagiosStatus = "1"
}
if ($NagiosDescription -ne "") {
$NagiosDescription = $NagiosDescription + ", "
}
$NagiosDescription = $NagiosDescription + $Status.Name + " is " + $Status.Status
}


"Mounting" {
if ($NagiosStatus -ne "2") {
$NagiosStatus = "1"
}
if ($NagiosDescription -ne "") {
$NagiosDescription = $NagiosDescription + ", "
}
$NagiosDescription = $NagiosDescription + $Status.Name + " is " + $Status.Status
}


"Healthy" {}
"Mounted" {}
}
}
}
}
# Output, what level should we tell our caller?
if ($NagiosStatus -eq "2") {
Write-Host "CRITICAL: " $NagiosDescription
} elseif ($NagiosStatus -eq "1") {
Write-Host "WARNING: " $NagiosDescription
} else {
Write-Host "OK: All Mailbox Databases are mounted and healthy."
}


exit $NagiosStatus
}


$ArgCount = 0
if (!$arg)
{
if ($args.length -gt 0){
While ($ArgCount -lt $args.length){
switch ($args[$ArgCount]){
"-A"{
$ArgCount = ($ArgCount + 1)
}

"-X"{
$ExcludedDatabases = $args[($ArgCount+1)]
$ArgCount = ($ArgCount + 2)
}

"-I"{
$ExcludedKeywordsDatabases = $args[($ArgCount+1)]
$ArgCount = ($ArgCount + 2)
}

"-h"{
Help
}

"$" {
#Correcting the problem when haven't some argument
$ArgCount = ($ArgCount + 1)
}

default{
write-host "Invalid command."
write-host "$args"
Help
}
}
}
}
}
checkDatabases

Bon, le script n'a peut-être pas été conçu dans les règles de l'art, mais j'ai du faire ce que j'ai pu avec les maigres connaissances que j'avais et le peu de temps qui m'était imparti. Ce script a été mis en place pour être utilisé avec NSClient++ côté serveur à superviser et avec un check_nrpe côté serveur de supervision.
Pour cela, il y a quelques modifications à apporter dans la configuration du serveur à superviser; dans le fichier NSCP.ini. Il faut savoir que ce fichier fonctionne par bloc et donc que même si vous avez l'impression d'avoir initialiser une variable dans un bloc et pas dans un autre, elle ne sera pas prise en compte.
Première modification dans le bloc [External Commands] :

  • allow_nasty_meta_chars=1 
  • allow_arguments=1

 Autre modification dans le bloc [Wrapped Scripts]

  • check_mailbox_health_ps1=MailboxHealth.ps1 $ARG1$
Il faut penser à relancer le process NSClient++ puis à tester côté serveur de supervision avec par exemple la commande :

  • ./check_nrpe -H hostname -t 30 -c check_mailbox_health_ps1 -a "-A"
Voilà, pour mon client cela à bien fonctionné et ça était mis en production.
J'ai publié ces modification auprès de Jeffrey ROBERTSON, qui les a inclus dans la version du plugin que vous trouverez ici.

Si vous avez un souci de mise en oeuvre, n'hésitez pas à me poster votre question.