Logiciels : installation

Logiciels : installation jpp

Ce chapitre sera destiné à détailler l'installation de logiciels spécifiques. 
Chaque logiciel sera présenté dans son contexte d'utilisation. 
Toutefois l'installation de certains logiciels peut être reportée dans un chapitre différent, par exemple :


 

Jan une IA personnelle

Jan une IA personnelle jpp

J'ai remarqué dans une revue un test d'un programme Open Source d'Intelligence Artificielle : Jan (https://jan.ai), il est possible de télécharger une archive au format Debian que je e suis empressé d'installer. Il semble qu'il faille une machine assez puissante avec de la mmémoire et de l'espace disque pour les modèles ...
Je l'ai installé sur une machine Debian (bookworm) avec un Ryzen 7 et 64Go de mémoire ainsi que de l'espace disque.
L'installation est standard avec dpkg qui installe le logiciel dans /opt et crée les entrées de menu adéquates.
Pour le premier test je lui ai demande :
Ecrit un article de vulgarisation de Linux.
Je vous livre le résultat qu'il a écrit à l'aide du modèle "LLama 3 8B Q4"

Découvrez le monde de Linux : 

Une introduction aux systèmes d'exploitation open-source.
Linux, un nom qui évoque souvent des terminaux, des lignes de commandes et des compétences techniques hors de portée pour beaucoup d'entre nous. Mais Linux est plus que cela ! Il s'agit d'un système d'exploitation open-source qui a révolutionné le monde de l'informatique et offre de nombreuses avantages pour les utilisateurs.

Qu'est-ce que Linux ?

J'ai lu ce jour dans une revue un article sur un systéme d'Intelligence Artificielle Open Source qui s'installe en local : Jan (https://jan.ai). Il est possible de récupérer une archive Debian qui s'installe sans aucun problèmes, installez le logiciel sur une machine relativement puissante avec de la mémoire car le fonctionnement demande pas mal de CPU et de mémoire. Ici la machine possède 64Go et un Ryzen 7.

Linux est un système d'exploitation open-source.

C'est-à-dire qu'il est disponible gratuitement et que son code source est accessible à tous. Il a été créé par un étudiant en physique, Linus Torvalds, en 1991. Linux est conçu pour être un système d'exploitation fiable, sécurisé et flexible, qui peut s'adapter à différents types d'appareils, des ordinateurs personnels aux serveurs, en passant par les routeurs et les routeurs Wi-Fi.

Les avantages de Linux

Les utilisateurs de Linux profitent de nombreux avantages par rapport aux systèmes d'exploitation propriétaires comme Windows ou macOS. Voici quelques-uns des avantages les plus notables :

La gratuité : Linux est disponible gratuitement, ce qui signifie que vous n'avez pas à payer de licence pour l'utiliser.
La flexibilité : Linux peut s'adapter à différents types d'appareils et peut être personnalisé pour répondre à vos besoins spécifiques.
La sécurité : Linux est considéré comme l'un des systèmes d'exploitation les plus sécurisés, car il est conçu pour être résistant aux attaques malveillantes.
La communauté : la communauté Linux est immense et active, ce qui signifie que vous pouvez trouver de l'aide et des ressources en cas de problème.

Comment utiliser Linux

Il existe de nombreuses distributions de Linux, c'est-à-dire des versions personnalisées du système d'exploitation, telles que Ubuntu, Debian, Fedora et Arch Linux. Chacune de ces distributions a ses propres caractéristiques et avantages.

Voici les étapes à suivre pour installer Linux sur votre ordinateur :

Choisissez votre distribution : sélectionnez la distribution de Linux qui vous convient le mieux.
Créez un CD ou une clé USB : créez un CD ou une clé USB contenant la distribution de Linux que vous avez choisie.
Installez Linux : insérez le CD ou la clé USB et suivez les instructions d'installation.
Configurer votre système : configurez votre système Linux en fonction de vos besoins.
Conclusion

Linux est un système d'exploitation puissant et flexible qui offre de nombreuses avantages pour les utilisateurs. Si vous êtes prêt à explorer le monde de l'informatique et à découvrir les avantages de Linux, n'hésitez pas à télécharger une distribution et à l'installer sur votre ordinateur. Vous pouvez même vous joindre à la communauté Linux et apprendre de nouvelles compétences techniques !
 

Pas trop mal pour un début ?

Jan test 2

Jan test 2 jpp

Après le premier test un deuxième essai avec un autre "modèle" : "Mistral Instruct 7B G4", le résultat généré en anglais, avec un petit peu de remise en forme (titres et sous titres en gras)le voici.

Title: Exploring the Linux Operating System: A Comprehensive Guide for Beginners

Introduction

Linux, an open-source operating system, is widely recognized for its versatility, security, and reliability. Initially developed in 1991 by Finnish software engineer Linus Torvalds, Linux has since become a cornerstone of the modern digital world, powering servers, supercomputers, and embedded devices. This article aims to provide a beginner-friendly introduction to the Linux operating system, its history, key features, and applications.

A Brief History of Linux

Linux was born out of Linus Torvalds' desire to create a free, Unix-like operating system. The initial version, Linux kernel 0.01, was released on September 17, 1991. Over the years, Linux has evolved significantly, thanks to the contributions of thousands of developers worldwide.

Today, Linux comes in various distributions, or "distros," each with its unique features, user interface, and focus. Some popular examples include Ubuntu, Debian, Fedora, Arch Linux, and CentOS.

Key Features of Linux

Open-Source: Linux is an open-source operating system, meaning its source code is freely available to everyone. This encourages collaboration, innovation, and customization.

Security: Linux's open-source nature and strong community support contribute to its robust security. The absence of proprietary code reduces the attack surface, making Linux less vulnerable to viruses and malware.

Stability: Linux is renowned for its stability and reliability. Its modular design allows for efficient resource management, minimizing system crashes and downtime.

Customization: Linux allows users to customize nearly every aspect of their operating system. This flexibility makes it ideal for users with diverse needs and preferences.

Compatibility: Linux supports a vast array of hardware and software. It can run on various architectures, from desktop computers to servers and mobile devices.

Getting Started with Linux

For beginners, choosing the right Linux distro is crucial. Ubuntu is a popular choice due to its user-friendly interface, extensive community support, and ease of installation. Other beginner-friendly distros include Linux Mint, Zorin OS, and Manjaro.

To install Linux, you'll need a computer with at least 2GB of RAM, a hard drive with at least 20GB of free space, and a CD/DVD drive or USB flash drive to create the installation media. Detailed installation guides are available for each distro.

Once installed, you can start exploring Linux by learning basic commands, navigating the file system, and customizing your desktop environment.

Applications and Uses of Linux

Linux is used in various applications, from servers and supercomputers to embedded devices and desktop computers. Google, Facebook, and Netflix all rely on Linux servers for their infrastructure. Linux is also the operating system of choice for Android smartphones.

For desktop users, Linux offers a range of productivity applications, including the LibreOffice suite, GIMP for graphic design, and VLC Media Player for multimedia.

Conclusion

Linux is an essential part of the modern digital landscape, offering a powerful, flexible, and secure operating system for a wide range of applications. Whether you're a seasoned developer, a curious beginner, or a casual user seeking an alternative to Windows or macOS, Linux is a versatile choice worth exploring. With its robust community support, extensive documentation, and wide array of applications, Linux continues to be a dynamic and evolving force in the world of operating systems.

 

 

Jan : Encore un test

Jan : Encore un test jpp

Depuis mon coin en vacances j'ai téléchargé Jan sur mon portable avec seulement deux modèles et j'ai refait un petit essai :

Ecrit un texte (francais) pour dissuader d'utiliser Wndows, directement en français :

Bien sûr, je peux vous aider à rédiger un texte en français pour dissuader de l'utilisation de Windows. Voici un exemple :
Attention ! Utiliser Windows peut être source de nombreux problèmes et représenter un coût important en termes de temps, d'argent et de frustration.

En effet, Windows est connu pour être lent, instable et sujet à des bugs, ce qui peut entraîner des pertes de données et des interruptions incontrôlées de votre travail. En plus, les mises à jour de Windows peuvent être longues et nécessiter une connexion internet stable, ce qui peut être source de frustrations supplémentaires.

De plus, Windows est développé par une entreprise privée, Microsoft, qui peut utiliser votre utilisation de son système d'exploitation pour collecter des données personnelles sans votre consentement. Cela peut représenter une violation de votre vie privée et de votre liberté.

Enfin, l'utilisation de Windows est une dépendance coûteuse en termes de licences et de maintenance. Les mises à jour de Windows peuvent coûter des centaines d'euros, tandis que les licences de Windows peuvent coûter plusieurs centaines d'euros.

Il existe de nombreuses alternatives à Windows qui sont plus rapides, plus stables et plus privées, tels que Linux ou macOS. Ces systèmes d'exploitation sont open source et gratuits, ce qui signifie que vous pouvez utiliser et modifier le code source à votre guise. En plus, ils ne collectent pas de données personnelles sans votre consentement.

En choisissant un système d'exploitation libre et open source, vous pouvez réduire les coûts, améliorer la sécurité de votre système et protéger votre vie privée. N'hésitez pas à faire le pas vers un système d'exploitation plus adapté à vos besoins.

Je vous laisse juger de la qualité du résultat.

LDAP

LDAP jpp

Nous sommes plusieurs à la maison à travailler sur des machines différentes et régulièrement l'un demande à l'autre : "peux-tu me donner le mail (ou le téléphone) de X" (phénomène identique dans une petite structure professionnelle). 
Il est donc intéressant de disposer d'un annuaire centralisé contenant l'ensemble des données de nos contacts. 
J'ai donc décidé de créer un annuaire partagé et LDAP a été choisi comme outil car:

  • C'est sa spécialité "Lightweight Directory Access Protocol" ou Protocole Simple de Gestion d'Annuaire
  • Il est interfacé avec la plupart des gestionnaires de mail.
  • Il est réputé pour être économe en moyens mémoire et CPU.

LDAP : Linux

LDAP : Linux jpp

Pour créer cet annuaire il faut installer des "paquets" suivants (pour Debian) :

  1. slapd  (le démon)
  2. ldap-utils

La structure de notre annuaire sera simple :

  • un "TOP" pour notre domaine "mondomaine.net"
  • Une branche "users" pour stocker les utilisateurs enregistrés (accès à l'annuaire)
  1. Un utilisateur "manager" : qui gère, entre autres les utilisateurs et qui peut effectuer des mises à jour.
  2. Un utilisateur  "totor" : standard pour les accès en lecture seule
  3. Le cas de l'utilisateur "propriétaire" : root (propriétaire de la base de données) est traité lors de la création de la base, il ne doit en général pas être utilisé. Son mot de passe doit donc rester secret ! 
     

Le fichier slapd.conf ne doit pas être lisible par tous : 
-rw-r-----   1 root openldap  3676 2010-01-26 20:29 slapd.conf 
S'il n'est pas correct le remettre "au secret" par : 

chown root:openldap slapd.conf 
chmod 640 slapd.conf

  • Une branche "people" qui contiendra nos contacts.

Une fois les paquets installés il faut s'occuper de la configuration et celle-ci est quasiment intégralement contenue dans le fichier "/etc/slapd.conf" 
Dont je présente les extraits importants ci dessous 
-------------------------------------------------- 
backend         bdb 
database        bdb 
# The base of your directory in database #1 
suffix          "dc=domaine,dc=net" 
rootdn          "cn=root,dc=domaine,dc=net" 
rootpw          le_mot_de_passe_secret_non_utilisé 
# Where the database file are physically stored for database #1 
directory       "/var/lib/ldap/domaine.net" 
... 
-------------------------------------------------- 
Vérifiez que les "acl" (Access Control List) sont corrects pour la mise à  jour des contacts et la mise à jour des mots de passe. Nos "acl" sont extrêmement simples et LDAP peut faire beaucoup mieux ! 
-------------------------------------------------- 
... 
# users can modify their passwords 
access to attrs=userPassword 
        by dn.regex="cn=manager,ou=users,dc=izzop,dc=net" write 
        by dn.regex="cn=root,dc=izzop,dc=net" write 
        by anonymous auth 
        by self write 
        by * read 
access to dn.base="" by * read 

# The manager has full write access to people,root too, everyone else 
# can read everything. 
access to dn.children="ou=people,dc=izzop,dc=net" 
        by dn.regex="cn=manager,ou=users,dc=izzop,dc=net" write 
        by dn.regex="cn=root,dc=izzop,dc=net" write 
        by * read 
# only root can update all 
access to * 
        by dn.regex="cn=manager,ou=users,dc=izzop,dc=net" read 
        by dn.regex="cn=root,dc=izzop,dc=net" write 
        by * read 
... 
-------------------------------------------------- 
Ainsi seul notre utilisateur principal "manager" peut modifier les mots de passe et en secours le "root". 
S'assurer que l'utilisateur principal "manager" et le propriétaire "root" peuvent accéder à tout en mise à jour : 
-------------------------------------------------- 
... 
access to * 
        by dn.regex="cn=manager,ou=users,dc=domaine,dc=net" read 
        by dn.regex="cn=root,dc=domaine,dc=net" write 
        by * read 
... 
-------------------------------------------------- 
stopper le service "slapd" et détruire la base "bdb" (c'est celle créée par défaut) située dans /var/lib/ldap/domaine.net : 
cd /var/lib/ldap/domaine.net 
rm -f * 

Copier ceci dans le fichier /var/lib/ldap/domaine.net/DB_CONFIG pour optimiser le fonctionnement 

set_cachesize 0 2097152 0 
set_lk_max_objects 1500 
set_lk_max_locks 1500 
set_lk_max_lockers 1500 

Ces valeurs ne sont pas miraculeuses mais elles fonctionnent fort bien pour la taille d'annuaire visée. 
Démarrer le service "slapd" pour recréer la base ldap puis impérativement le stopper ensuite pour exécuter les opérations suivantes. 
Créer un fichier "LDAPTOP" de définition de notre "structure" d'annuaire contenant : 
----------------- LDAPTOP -------------------------- 
dn: dc=domaine,dc=net 
dc: domaine 
description: Mon domaine à moi 
o: Domaine et Cie 
objectClass: dcObject 
objectClass: organization 
structuralObjectClass: organization 

dn: ou=users,dc=domaine,dc=net 
description: les utilisateurs 
objectClass: organizationalUnit 
objectClass: top 
ou: users 
structuralObjectClass: organizationalUnit 

dn: ou=people,dc=domaine,dc=net 
description: Les gens 
objectClass: organizationalUnit 
objectClass: top 
ou: people 
structuralObjectClass: organizationalUnit 
------------------------------------------------- 
Exécuter la commande suivante (slapd stoppé !) pour intégrer ces éléments dans la base : 

slapadd -f /etc/ldap/slapd.conf -l /root/LDAPTOP -c -v 

Créer un fichier "LDAPMANAGER" (définition de nos utilisateurs) contenant ------------------------------------------------- 
dn: cn=manager,ou=users,dc=domaine,dc=net 
cn: manager 
givenName: manager 
sn: Le responsable de l'annuaire 
userPassword: le_mot_de_passe_du_manager_qui_est_secret 
structuralObjectClass: inetOrgPerson 
objectClass: inetOrgPerson 
objectClass: top 
objectClass: person 
objectClass: organizationalPerson 

dn: cn=totor,ou=users,dc=domaine,dc=net 
cn: totor 
givenName: totor 
sn: utilisateur quelconque  
userPassword: le_mot_de_passe_pour_lecture_seule 
structuralObjectClass: inetOrgPerson 
objectClass: inetOrgPerson 
objectClass: top 
objectClass: person 
objectClass: organizationalPerson 
------------------------------------------------- 
Lancer la commande suivante pour intégrer ce fichier : 

slapadd -f /etc/ldap/slapd.conf -l /root/LDAPMANAGER -c -v 

Il reste quelques commandes pour améliorer les performances futures : 

slapindex -f /etc/ldap/slapd.conf 
cd /var/lib/ldap/domaine.net 
chown -R openldap:openldap * 

Dès que le service "slapd" est relancé l'annuaire est alors prêt pour l'enregistrement des adresses de vos contacts. 

Si vous disposez déja de données de contact vous pouvez les mettre au format suivant afin de les intégrer automatiquement ( awk est votre ami si le nombre d'adresses est étevé ) et les stocker dans le fichier "MESADRESSES" : 
--------------------------------------------------------- 
dn: cn=NOM,ou=people,dc=domaine,dc=net 
displayName: LE NOM DE DISPLAY 
objectClass: inetOrgPerson 
objectClass: person 
objectClass: organizationalPerson 
sn: NOM 
givenName: LE NOM DE DISPLAY 
mobile: 06 01 02 03 04 
homePhone: 01 01 02 03 04 
homePostalAddress: ADRESSE_RUE$ADRESSE_VILLE$CODE8POSTAL$PAYS 
cn: NOM 
mail: MAIL@DOMAINE 
-------------------------------------------------------------------------------------- 
Vous pourrez alors lancer les commandes destinées à  intégrer votre fichier d'adresses  ( les options "-c" permettent de continuer sur erreur "-v" donne un programme plus "bavard")  après avoir stoppé le service "slapd" 
# pour Debian; Ubuntu ... 
/etc/init.d/slapd stop 
# pour d'autres  
service slapd stop 
slapadd -f /etc/ldap/slapd.conf -l /tmp/MES_ADRESSES -c -v 

Relancer le service "slapd" 

Un utlitaire assez "sympa" à  utiliser pour voir et éventuellement mettre à jour le contenu d'un annuaire : "luma", c'est parfait pour changer un mot de passe. D'autres utilitaires graphiquesc LDAP: "gq" ou "lat" moins "amusants" mais aussi efficaces, on peut aussi citer "jxplorer" qui, écrit en Java, existe sur la plupart des plateformes. 
 

LDAP : la sécurité

LDAP : la sécurité jpp

J'ai maintenant un bel annuaire LDAP, il marche bien et contient, déjà, tout plein d'adresses mail, postales. 
Et si, horreur, un vilain bug passant par là me faisait perdre toutes ces données ? 
Je n'ose même pas y penser, les remarques désobligeantes de la famille, la nécessité de re-saisir ... noms, adresses mail, numéros de téléphone, être obligé de parcourir le site pagesjaunes (ou blanches) à la recherche d'une partie des données perdues. 
Il me faut une solution ! Et vite ! 
Heureusement il y a "ldap-utils" et il y a là dedans notre sauveur, on y trouve entre autres outils un petit programme appelé "slapcat" qui permet d'effectuer une copie ( "cat" ) d'un annuaire LDAP. 
Un petit script et nous voilà à l'abri d'une grosse catastrophe. 
#!/bin/bash 
mark=`date +%y_%m_%d `  
REPSAUVE='/ailleurs' 
DOMAINE='dc=domaine,dc=net' 
SAUVE=$REPSAUVE'/DumpLDAP_'$mark'.ldif' 
/usr/sbin/slapcat -f /etc/ldap/slapd.conf -b "$DOMAINE"  -l $SAUVE 
ret=$? 
if [ $ret -ne 0 ] 
   then 
    echo 'Erreur sauve ldap !!!' 
fi 
exit $ret 

Ce petit script effectue la copie dans un répertoire "/ailleurs" que vous pouvez mettre n'importe où, de préférence sur un autre disque. La sauvegarde doit être effectuée annuaire en marche et l'exécution peut être "cronée" pour s'assurer de la régularité de la sauvegarde. Au début tous les jours, puis toutes les semaines. 
Le vidage est effectué au format "ldif" qui est un standard dans le domaine LDAP et les fichiers sont "datés" pour l'historique. 
Le format "ldif" peut être utilisé avec un grand nombre d'outils tels ceux nous ayant permis de créer la structure de l'annuaire.

LDAP : haute disponibilité

LDAP : haute disponibilité jpp

J'ai un PC portable sous Linux (cela vous étonne ?) et cela m'ennuierai d'être séparé de mes chers contacts. 
Je pourrais, bien sûr, effectuer une copie locale des données. Cette opération est en général très simple à faire et est déclenchable dans les propriétés de l'annuaire de votre programme de mail favori  (Evolution et Thunderbird le font très bien). 
Mais, la nature humaine étant ce qu'elle est, on oublie la mise à jour ... et ... un seul être vous manque et tout est dépeuplé , qu'est ce que je raconte ? Il nous manquera toujours l'adresse de M. Untel dont on a un besoin urgent. 
La solution s'appelle "réplication". Il suffit d'installer un petit LDAP "local" et d'expliquer aux deux système que l'un est "Maître" et l'autre "Esclave". 
L'esclave interroge régulièrement le maître : 
"Maître avez-vous reçu des mises à jour depuis la dernière que vous m'avez fait l'honneur de me communiquer et qui portait le numéro NNN ? " 
Et le maître répond : "non esclave je n'ai aucune mise à jour " ou bien "Oui esclave j'ai des mises à jour, les voici ......". 
Grâce aux développeurs de OpenLdap il existe une possibilité toute simple de réaliser ce miracle. Quelques petites modifications dans les paramètres de configuration et ... le tour est joué. 
Modifications du "Maître"  
Dans le fichier "/etc/ldap/slapd.conf", oui oui, j'ai dupliqué le fichier avant d'y toucher : 
Au début du fichier de configuration il faut charger dynamiquement un module spécifique : 

moduleload syncprov 

Syncprov = Synchronization Provider ? 
Un peu plus loin dans le fichier, après la directive : 
"database        bdb" il faut ajouter les lignes suivantes : 

overlay syncprov 
syncprov-checkpoint 1 5 
replica host=MON_ESCLAVE:489 
        binddn="cn=root,dc=domaine,dc=net" 
        bindmethod=simple credentials="le_mot_de_passe_secret_de_root" 
        syncprov-reloadhint TRUE 

Cette petite manip permet au maître de savoir qu'il est maître de l'esclave nommé ici, les autres peuvent aller se faire voir ! 
Une fois "slapd" redémarré le maître est prêt. On n'est pas en SSL, ni sécurisé à mort, les mots de passe sont en clair dans le fichier ... on peut faire autrement, mais si c'est plus beau c'est aussi beaucoup plus difficile. Et puis le fichier de config n'est lisible que par "root" (c'est moi) et par le groupe "openldap" où je n'ai mis que le user du même nom. Et en plus les adresses dont je dispose ne sont pas classées "données sensibles", on admettra donc ce trou de sécurité. 

Modifications de l'esclave. 
Peu après la directive : 
"database bdb" il faut ajouter les lignes suivantes : 

syncrepl rid=007 
        provider=ldap://MON_MAITRE:489 
        type=refreshOnly 
        interval=00:02:00:00 
        searchbase="dc=domaine,dc=net" 
        filter="(objectClass=*)" 
        scope=sub 
        schemachecking=off 
        bindmethod=simple 
        binddn="cn=root,dc=domaine,dc=net" 
        credentials="le_mot_de_passe_secret_de_root" 

La petite zone "00:02:00:00" permet de régler la fréquence de la mise à jour (ici 2 heures) à la seconde près ! 
Dès le démarrage le client sait qu'il a un maître et va s'enquérir des nouveautés auprès de son maître. 

On peut même s'amuser à effectuer l'opération suivante ( SUR L'ESCLAVE !)  :

  1. Stopper "slapd", sur l'esclave je me répète
  2. Aller dans le répertoire "/var/lib/ldap/domaine.net"
  3. Y détruire tout (sauf le fichier DB_CONFIG), si on est bien sur la machine esclave !
  4. Relancer "slapd"

Et le miracle s'accomplit, l'annuaire est "rempli" de données toutes fraîches, c'est  m a g i q u e ! 

Donc comme cela les adresses de mon portable seront toujours "au top" car il est souvent branché sur le réseau au contact direct de son maître préféré. 
Le seul problème est que je ne peux pas saisir d'adresses sur le portable, j'ai d'ailleurs paramétré le client mail en lecture seule. 
 

LDAP : paramétrage clients

LDAP : paramétrage clients jpp

Maintenant que notre annuaire est opérationnel il faut pouvoir nous en servir et l'intermédiaire le plus courant est tout bêtement votre programme de gestion des mails. 
Il existe des interfaces permettant de consulter les annuaires LDAP et même des possibilités d'accès à cet annuaire par le Web, mais c'est une autre histoire. 

Les pages suivantes présentent le paramétrage de différents clients mails.

Note 2024 : je n'ai pas touché au paramétrage de mon mail (Evolution) depuis cette date, et cela marche toujours ...

Paramétrage Evolution

Paramétrage Evolution jpp

"Evolution" le client mail le plus abouti (et le plus complexe) sur Linux : 
Se rendre dans l'onglet "contacts" puis effectuer un clic droit dans la colonne de gauche (quelle précision) et de choisir : "Nouveau carnet d'adresses". 
Il faut ensuite remplir le premier onglet :

  1. Nommer le carnet d'adresses ici "kmail"
  2. Donner l'adresse ou le nom du serveur si vous avez un DNS.
  3. Donner le port (389 en standard, 489 ici).
  4. Choisir une connexion "pas de chiffrement" (on est chez nous à l'abri du grand méchant loup ! ).
  5. Prendre l'authentification "En utilisant de nom distinctif (DN)"
  6. Dans la zone "Connexion" inscrire "cn=manager,ou=users,dc=domaine,dc=net" pour ceux qui doivent effectuer des mises à jour des contacts ou "cn=totor,ou=users...." pour ceux qui n'ont qu'un accès en lecture. Pour ces derniers on pourraitt aussi se connecter "Anonymement".

 

 
Pour le deuxième onglet c'est beaucoup plus simple :

  1. Dans "base de recherche" on indique "ou=people,dc=domaine,dc=net"
  2. Pour "Domaine de recherche choisir "Un"
  3. "Filtre de recherche" on ne met rien, ça c'est sympa.
  4. Pour "Délai" laisser à 5 minutes
  5. Pour "Limite de téléchargement" laisser la valeur 100, sauf si vous avez une grosse base de contacts et que vous voulez la récupérer d'un seul coup.
  6. "Parcourir..." ne pas cocher

 

Il suffit ensuite  de valider et de relancer Evolution qui vous demandera le mot de passe au démarrage, pensez à cocher la case "Se souvenir du mot de passe". 
 

Vous avez alors un accès à votre liste de contacts partagés et cela peut durer plus de 10 ans ...

Paramétrage Thunderbird

Paramétrage Thunderbird jpp

Le client suivant, parmi les plus connus dont la version 2 vient de sortir est "Thunderbird" qui existe sous différents systèmes dont Windows, Mac et Linux. 
Thunderbird sous Windows XP. 
Il faut aller dans "Options" sélectionner l'onglet "Rédaction" puis dans l'onglet "Addressage" sélectionner "Serveur d'annuaire". 
 
Cliquer ensuite sur "Modifier les annuaires...". 
 
Cliquer ici sur "Ajouter". 
La boite de dialogue qui s'ouvre alors devant nos petits yeux émerveillés présente plusieurs onglets :

Premier onglet. 

  1. Nom : nommer votre carnet d'adresse
  2. Nom d'hôte : adresse IP ou nom du serveur d'annuaire
  3. Nom distinct de base : c'est la base de recherche des contacts "ou=people,dc=domaine,dc=net".
  4. Numéro de port : le port standard est le 389 (489 chez moi)
  5. Connecter avec l'utilisateur : c'est votre utilisateur, ici "cn=manager,ou=users,dc=domaine,dc=net" ou "cn=totor,ou=users,dc=domaine,dc=net".
  6. On ne coche pas "Utiliser une connexion chiffrée, on est en principe dans une zone de confiance !


Deuxième onglet : "Hors connexion" , laissez tomber pour l'instant, vous pourrez éventuellement y revenir plus tard (quand la connexion sera OK) pour effectuer une copie locale de l'annuaire. 

Troisième onglet : "Avancé" 
cocher "Un niveau" et laissez le filtre à blanc. 
 

Vous pouvez maintenant valider avec "OK". 
 
 

 

Le serveur d'annuaire apparait dans la liste :un simple "OK" suffit à vous ramener à l'écran suivant. 

 
où il ne faut pas oublier de sélectionner l'annuaire que nous venons de définir avant le "OK" final sinon cela ne sert à rien d'avoir fait tout cela ! 

La première utilisation de l'annuaire vous amènera à saisir le mot de passe sans oublier de cocher "Utiliser le gestionnaire....." pour enregistrer le mot de passe définitivement. 
 

Et en plus  ça marche : 
 
On voit bien que l'annuaire des contacts est garni. 

Allez, je vous quitte j'ai de nouveaux contacts à saisir ! Quel bagne !

Note 2024 : La machine sur laquelle était installé Thunderbird n'a pas supporté la migration vers Windows 7 avec un crash complet lors de la migration, elle ne démarrait plus ni en XP ni en 10. En montant le disque "data" sur une machine Linux j'ai réussi à récupérer l'intégralité des fichiers. Depuis Madame a une machine sous Linux, quelques grincements de dents au début (c'est pas pareil que WIndows !), et Thunderbird a démarré sur la nouvelle machine Linux quasiment sans problèmes ... et Thunderbird fonctionne toujours.

Migrations Debian

Migrations Debian jpp

Ce groupe d'articles est consacré aux migration de version Debian. 
J'utilise Debian depuis des décennies et j'ai eu à effectuer de nombreux changements de version mais, pour les plus anciens je n'ai pas conservé d'archives.

2tant très occupé à l'époque de la migration de Buster à Bullseye je n'ai réalisé aucun document sur le sujet, mais je n'ai pas eu d'ennuis majeurs.
 

Note : Certains problèmes/ennuis sont traités dans la section "conseils et ennuis divers".

De Jessie a Stretch

De Jessie a Stretch jpp

J'ai migré dernièrement la plupart de mes machines de "Jessie" à "Stretch" et cela s'est en moyenne fort bien passé malgré quelques "ennuis" mineurs, mais parfois un peu surprenants. 
Quelques utilitaires (au moins un) ont changé de répertoire et tous les appels indiquant un chemin complet pour ne pas dépendre du PATH échouent. C'est le cas de "tunctl" qui est passé de /usr/sbin à /usr/bin et cela m'a permis de lancer des machines virtuelles sans accès réseau, mais la réparation est facile ... après il faut "tuer" ces diables de machines fermées du monde extérieur. 
J'ai aussi eu une machine qui utilisait "gdm3" pour le login X et brusquement ne présentait plus l'interface X en prétextant un plantage de "gnome-session", la solution rapide ... remplacer "gdm3" par "lightdm", mais Madame a été perturbée par ce nouvel écran de login !
Dans un autre cas la version de Thruk a été rendue inopérante, mais cette version avait été compilée localement et commençait à dater un peu ... j'ai donc au passage installé la dernière version, mais c'est une autre histoire que je vous conterai dans un autre article.

Sur une autre machine j'ai voulu installer MariaDB (proposé en standard dans Stretch) à la place de Mysql, mais j'avais oublié que cette machine disposait d'un Mysql 5.7, l'installation de MariaDB a signalé une erreur lors de l'installation de la partie serveur car certaines tables présentaient des incompatibilités, la solution est très simple :

Vérifier la dernière sauvegarde, il faut toujours en faire une avant manip risquée ! 
Sauvegarder ses paramètres (/etc/mysql)

  • Tout effacer        apt-get remove --purge mariadb-server
  • Ré-installer        apt-get install mariadb-server
  • Re-créer Schémas et Utilisateurs,
  • Remettre en place un paramétrage correct, attention il y a des différences entre Mysql et MariaDB
  • Recharger la dernière sauvegarde (dump des données fait avec "mysqldump", ça sert les sauvegardes ! En plus je disposais d'une copie du disque de la machine virtuelle.

Et cela fonctionne, ce site est sur la machine virtuelle en question.

De Stretch à Buster

De Stretch à Buster jpp

Ce petit livre raconte les actions faites pour migrer de Debian 9 (Stretch) à Debian 10 (Buster). Buster n'étant pas encore mis en "stable" je me limite à des tests sur des machines virtuelles (sous KVM ou XEN).

  1. Test sur une MV simple (Xen), servira aussi de test de Linux 5.0.2 Xénifié.
  2. Test sur une MV applicative (KVM) (Apache, PHP, MariaDB ...), en partie pour effectuer aussi un passage de PHP7.0 à une version ultérieure.
  3. Passage d'une machine de production.

La migration de quelques autres MV, en suivant les règles, s'est passée sans incidents. Ce site lui même va migrer dès le passage de Buster en "stable".

Migrer MV simple

Migrer MV simple jpp

Debian passage de "Stretch" à "Buster" sur une machine virtuelle "simple" (Xen).

J'ai réalisé les tests sur une machine virtuelle déjà installée en "Stretch". 
J'ai fait le premier test dans une VM de test pour bien vérifier la marche à suivre ... et tester le kernel 5.0.2 en version "Xenifiée". 
Ordre prévu des opérations : 
1) Mise à niveau "Stretch" de cette machine. 
"apt-get update + apt-get upgrade" : mettre à jour la machine au dernier niveau de Stretch. 
Toutes les commandes suivantes sont exécutées avec "... 2>&1 | tee FICHIER.LOG" afin de garder une trace complète des actions. 
2) Modifier le fichier sources.list :

deb http://ftp.fr.debian.org/debian buster main 
deb http://ftp.fr.debian.org/debian buster-updates main 
deb http://security.debian.org buster/updates main

3) Effacer les fichiers de paquets "Stretch" : 
dans /var/lib/apt/lists : supprimer tous les fichiers. 
4) récupérer les information paquets de "Buster" : 
- lancer "apt-get clean" 
- lancer "apt-get update" :

Get:1 http://security.debian.org buster/updates InRelease [38,3 kB] 
Get:2 http://ftp.fr.debian.org/debian buster InRelease [158 kB] 
Get:3 http://ftp.fr.debian.org/debian buster-updates InRelease [46,8 kB] 
Get:4 http://ftp.fr.debian.org/debian buster/main amd64 Packages [7 891 kB] 
Get:5 http://ftp.fr.debian.org/debian buster/main Translation-fr [2 281 kB] 
Get:6 http://ftp.fr.debian.org/debian buster/main Translation-en [5 989 kB] 
Fetched 16,4 MB in 2s (5 644 kB/s)                                
Reading package lists... Done

Les nouveaux fichiers doivent apparaître dans /var/lib/apt/lists :

ftp.fr.debian.org_debian_dists_buster_InRelease 
ftp.fr.debian.org_debian_dists_buster_main_binary-amd64_Packages 
ftp.fr.debian.org_debian_dists_buster_main_i18n_Translation-en 
ftp.fr.debian.org_debian_dists_buster_main_i18n_Translation-fr 
ftp.fr.debian.org_debian_dists_buster-updates_InRelease 
security.debian.org_dists_buster_updates_InRelease

5) Effectuer une mise à jour simple. 
Lancer "apt-get upgrade" pour effectuer une mise à jour simple. Pour ce premier test cela télécharge 572 paquets. J'ai choisi de relancer les services sans confirmation. 
Après un certain temps (un temps certain ?) la machine est enfin à jour. 
Début : 11:27 
Fin      : 11:45 
Un "cat /etc/debian_version" donne un magnifique "buster/sid" 
et on peut remarquer l'installation d'un noyau "4.19" un peu plus récent que le "4.9" de Stretch. 
6) Reboot. 
Je reboote la machine pour valider le tout avant de passer à l'opération suivante. La machine a bien rebooté et démarré sur le noyau 4.19. 
7) Effectuer l'upgrade de version. 
- "apt-get dist-upgrade" me signale de nombreux paquets "obsolete" à supprimer par "apt-get autoremove" que je décide de faire immédiatement et stoppe le "dist-upgrade". 
-- "apt-get autoremove" supprime 28 paquets et récupère 275Mb de disque. 
-- "apt-get dist-upgrade" qui signale d'autres paquets à passer en "autoremove", 401 paquets upgradés et 326 nouveaux paquets installés. 
Il faudra donc relancer un "apt-get autoremove" après. 
Début : 11:56 
Fin   : 12:14 
8) Nettoyage final. 
-- "apt-get autoremove" et 464MB de disque libérés. 
Très rapide : #2 minutes. 
On a alors une machine "propre" en Buster, on la reboote pour vérifier et le redémarrage se passe fort bien : le passage est réussi sans aucune anomalie. 
Etape suivante migrer une machine plus complexe avec apache, PHP, une base de données Mysql/MariaDB ....

Au démarrage les seules remarques évidentes sont un changement de couleur :

  • Lors du boot (interface grub plus sombre)
  • Lors de la connexion à X où le fond d'écran semble, là aussi, plus sombre.


J'ai répété cette procédure sur une autre machine de test et tout a fonctionné comme prévu.

Migrer MV complexe

Migrer MV complexe jpp

Passage de Stretch à Buster d'une machine applicative. 
La machine visée (sous KVM) comporte :

  • un serveur Web
  • PHP
  • Une base de données MariaDB
  • Un seul processeur virtuel, 40 Go de disque et 1024 Mb de RAM.

Seul OSSEC présent sur la machine d'origine ne sera pas traité ici. 
Le serveur Web utilise une copie de ce site. 
On reprend les étapes utilisées pour la machine "simple". 
Remarque : 
Les listes de mises à jour peuvent être longues et "sortir" de l'écran il est donc conseillé de lancer les commandes avec "tee" vers un fichier de log : "apt-get upgrade 2>&1 | tee /tmp/MONUPGRADE.LOG" on aura ainsi accès au listing intégral en cas d'incident. On peut aussi aller boire un café pendant que ça "tourne" ! 
1) Mise à niveau de Stretch par la trilogie : 
-- apt-get clean 
-- apt-get update 
-- apt-get upgrade 
Ce dernier ne donne que quelques paquets à traiter en "autoremove", ce qui est fait dans la foulée. 
2) Modification du fichier "sources-list" :  
récupération de celui de la machine précedente avec ajout de "contrib non-free".

deb http://ftp.fr.debian.org/debian buster main contrib non-free 
deb http://ftp.fr.debian.org/debian buster-updates main contrib non-free 
deb http://security.debian.org buster/updates main contrib non-free

3) Effacer les fichiers de paquets "Stretch" :  
Dans /var/lib/apt/lists : supprimer tous les fichiers. 
4) récupérer les information paquets de "Buster" :

  • Mettre à jour le fichier sources.list.
  • apt-get clean ; apt-get update" 

5) première mise à jour "Buster" : 
apt-get upgrade 
601 paquets téléchargés (301MB) 184MB d'espace disque supplémentaire, 401 laissés en l'état. 
Redémarrage automatique des services. 
Debut : 19:10 
Fin     : 19:34 
6) Reboot pour démarrer sur le nouveau noyau 4.19. 
7) Effectuer l'upgrade de version.

  • Commencer par nettoyer : "apt-get autoremove"
  • Continuer par : "apt-get dist-upgrade"

446 paquets "upgradés", 352 nouveaux, 726MB à télécharger,1235MB d'espace supplémentaire. 
Début : 19:41 
Fin     : 19:54 
Mais l'installation de MariaDB 10.3 a échoué ! et a bloqué l'installation de 396 autres paquets. 
Après analyse il s'agit d'un conflit entre le MariaDB 10.3 déjà installé sur la machine d'origine (déjà un clone !) depuis une source non Debian pour tester la version 10.3. 
Essai de "forçage" des problèmes de version :

cd /var/cache/apt/archives 
dpkg -i --force-all mariadb*deb 

et cela à l'air de fonctionner, la connexion à la base est fonctionelle. 
Par contre ni "haproxy", ni "apache" ne sont lancés. 
8) Nettoyage final : "apt-get autoremove" + reboot. 
"autoremove" demande de faire un "apt-get --fix-broken install" pour un problème de dépendances lié à Python 3.5 et 3.7. 
Cela va installer 4 nouveaux packages et finir l'installation interrompue par MariaDB soit 396 paquets ! 
Après installation de tous ces paquets se déroule et "haproxy" ne peut être redémarré, mais cela n'interrompt pas la suite de l'installation. 
Il va falloir vérifier et adapter le paramétrage Haproxy qui semble refusé par la nouvelle version. 
9) Un petit reboot pour finir le nettoyage. 
Tiens, Apache a bien démarré et semble fournir des données consormes, MariaDB est donc en bonne forme. 
Par contre Haproxy refuse touhours de démarrer et "journalctl -xe", comme souvent, ne donne aucune information utile ! 
Je vais donc voir le log de Haproxy et : Ah! Mais c'est bien sûr ! J'ai simplement oublié de changer l'adresse IP de connexion dans "haproxy.cfg" c'est donc celle du premier clone ! Dès que c'est fait tout rentre dans l'ordre et mon haproxy se met en route sans problème. 
Quelques tests sur le site permettent de vérifier que tout fonctionne. 
Toutefois nous sommes encore liés à PHP7.0 il va falloir tenter le passage dans la version supérieure car Buster fournit PHP 7.3 et on va pouvoir tester OpCache qui est censé bien fonctionner en 7.3. 
Après quelques jours : 
Après 4 jours je fais la première mise à jour "Buster" et comme on est encore en période presque "unstable" énormément de paquets mis à jour et plus de 230MO téléchargés dont PHP7.3. Après cette mise à jour je constate encore 46 paquets à supprimer, et un petit coup de "apt-get autoremove" m'en débérasse et libère 609MO dont l'espace occupé par les "vieux" noyaux série 4.9 encore présents, la version utilisée : 4.19.0.0-bpo.2. 
 

Migrer machine de prod

Migrer machine de prod jpp

Je suis ensuite passé aux choses sérieuses : migrer une "vraie" machine de production, celle sur laquelle est implanté ce service Web dans une machine virtuelle. 
J'ai choisi de faire la migration "on line" sans aucune interruption "volontaire" du service. 
J'ai suivi la procédure indiquée, c'est un peu long, mais cela fonctionne sans problèmes majeurs. Tout juste quelques modifications de fichiers de config à accepter (après vérification ! ). 
Phases de 1 à 5 passées sans ennuis et le service Web est resté disponible pratiquement tout le temps (sauf lors des reboot bien sûr !). 
Phase 6 : Reboot sur kernel 4.19. 
Phase 7 : dist-upgrade : 
Un grand nombre de paquets modifiés ou créés (927 paquets), tout se passe bien ! Là aussi quelques modifications de fichiers de config à accepter ou refuser (toujours après vérification !! ). 
La migration PHP7 --> PHP7.3 est "incorporée" mais pas pour Apache ! Qui refuse de fonctionner car seuls sont présents les modules php7. 
Voir /etc/mods-availables : 
ls -1 *php* 
php7.0.conf 
php7.0.load 
Vite installer libapache2-mod-php7.3 php7.3-mysql et quelques modules PHP7.3 qui semblent manquer. 
a2dismod php7.0 
a2enmod php7.3 
systemctl restart apache2 
Et cela fonctionne nettement mieux ! 
Vite un "apt-get autoremove" pour terminer ... qui me propose la suppression de 200 paquets et 344MO disque d'économie. 
Un reboot rapide pour vérifier la stabilité du système mis à jour et le service WEB manque encore de quelques modules PHP7.3 ... après leur mise en place tout semble fonctionner parfaitement.

Tests du lendemain : tout semble OK la sauvegarde de nuit a fonctionné. 
Ci dessous les interruptions de service : 
 

Les interruptions sues à la migration
SLA obtenue pat THRUK

De bullseye à bookworm

De bullseye à bookworm jpp

Après la migration quasiment sans problèmes de plusieurs machines virtuelles ou physiques j'ai fini par migrer ma machine principale, celle connectée au modem fibre et qui abrite notamment ce site. Cette migration m'a donné quelques soucis notamment avec l'annuaire LDAP géré sur cette machine. 

Détails à venir.

Zimbra Collaboration suite

Zimbra Collaboration suite jpp

ZIMBRA :  

Ce "livre" présente l'installation et un peu l'utilisation du logiciel "ZIMBRA Collaboration Suite", les articles s'étalent de début 2010 à aujourd'hui. 

Note 2023 : il est fortement question que la version "libre" de Zimbra disparaisse, j'ai donc migré la gestion de mes mails sur Carbonio, à suivre quelques conseils à voir ici.

Note 2016 : il est facile d'installer Zimbra dans une machine virtuelle et cela permet de la garder "bien stable" sans bloquer les versions de système d'une machine physique, 
voir l'article "Zimbra (V8) dans une VM". Toutefois la plupart des éléments cités ci-dessous restent valables. 


Cet article est divisé en différents chapitres :

  • Installation du système
  • Installation de Zimbra (1)
  • Installation de Zimbra (2)
  • Utilisation de Zimbra (1), aperçu de l'administration
  • Utilisation de Zimbra (2), paramétrage des clients mail
  • Quelques remarques sur la vie avec Zimbra
  • Utiliser Zimbra sur un smartphone
  • Passer d'une version 32 bits à ube version 64 à l'occasion d'une migration de serveur, et oui, les machines sont de plus en plus puissantes ...
  • Installer Zimbra dans une Machine Virtuelle KVM, 
    l'installation est détaillée en annexe.
  • Effectuer un upgrade de 8.6 à 8.7

Les premiers chapitres sont un peu dépassés et concernent l'installation de ZIMBRA 6. L'installation de la version 7 n'étant pas prévue sur une machine Debian (6 ou 7) je suis resté en version 6 jusqu'au jour du passage en version 8.

Une nouvelle machine (core I3 série 4) et l'installation de Debian "Wheezy" 7.3 version "stable" à ce jour m'a obligé à changer de version. 
Malheureusement la version 8 n'est pas disponible pour Debian, la version la plus approchante est la version pour Ubuntu 12.04 LTS. J'ai voulu réaliser l'installation sur ma Debian 7.3 toute fraîche et j'ai créé un nouveau chapitre pour cette installation. 
 

ZIMBRA : Phase 1 le système

ZIMBRA : Phase 1 le système jpp

Nous verrons dans un prochain article l'installation de ZIMBRA sur un mini serveur "Physique". 
En attendant de définir le hardware de ce serveur (à faible consommation pour rester connecté en permanence) je vais m'entraîner sur une MV (Debian 32bits), celà ne coûte pas cher et devrait me permettre d'évaluer plus précisément la mémoire et le CPU nécessaire pour cette application, ou plutôt ensemble d'applications car le paquet inclut :

  • Un serveur mail
  • Un serveur pop et imap
  • Un Webmail
  • Un antispam
  • Un antivirus
  • Un interface d'administration
  • Le moteur est fourni par :
  1. Une base mysql
  2. Un annuaire LDAP (Openldap)
  3. Un serveur d'applications (Jetty)
  4. Un serveur SMTP (Postfix)
  5. Un serveur WEB (Apache)
  6. L'antivirus (Clamav)
  7. L'antispam (Spamassassin)

et d'autres bricoles que je vais m'empresser de voir. 
Pour les détails aller sur le site de ZIMBRA 
Je crée la MV adéquate : une debian 32bits en version "stable" Lenny. 
L'installation a été faite sur une machine virtuelle :

  • RAM     1536Mo
  • CPU     1
  • Disques  Système 8,6Go (swap 2.0Go, /root 6.6Go)
  •               Data (16Go à monter sur /opt car ZIMBRA s'installe sur /opt)

Ce système est un système "minimum" sans même un interface graphique : 

 

Quelques pré-requis (repérés lors des premières tentatives d'installation de ZIMBRA) :

  • Le fichier /etc/hosts doit être complet avec le nom d'hôte sous la forme : 
    adresse      nom complet         nom 
    192.168.x.x com-mail.mondomaine com-mail
  • Installation de quelques paquets nécessaires : 
    "libgmp3c2"  "libstdc++5"  "libexpat1" "libperl5.10" "sudo" "sysstat" 
    réalisés par : apt-get install libgmp3c2 libexpat1 libperl5.10 sudo sysstat libstdc++5 
    Il faudra activer le service "sysstat" dans le fichier /etc/default/sysstat en passant "ENABLED" à "true".
  • Quelques outils utiles ou indispensables. 
    "openssh-server"        impératif sur une machine ! 
    "ntp"   pour avoir un serveur à l'heure, "branché" sur une des machines du réseau en commentant les lignes ( /etc/ntp.conf ) "server 0.debian... à 2.debian..." et en remplaçant l'adresse du dernier par "192.168.1.6" (l'adresse du serveur NTP interne). 
    "vim"   je le préfère au "vi" brut. 
    "rsync" pour les sauvegardes futures
  • Désactiver le service mail (exim4) installé par défaut.
  1. Stopper le service :   /etc/init.d/exim4 stop
  2. Supprimer le paquet "exim4" :      apt-get remove --purge exim4
  • Mettre en place le disque "DATA" formaté en "ext3", "ext4" n'est pas encore OK pour les noyaux "anciens" tel celui de la Debian 5.0 
    Donner un label au disque :                    e2label /dev/hdb1 OPT 
    puis ajouté la ligne : 
    LABEL=OPT       /opt            ext3    defaults        0       2 
    en fin du fichier /etc/fstab afin d'obtenir le montage automatique.
  • Economiser un peu de mémoire ... 
    L'installation "minimum" ne comporta aucun service superflu, seuls les démons "cron" et "at" sont installés par défaut et il faut les garder 
    Modifier le fichier "/etc/inittab" pour y commenter l'ouverture des trois derniers getty.
  • Mettre une adresse IP fixe.

Modifier le fichier "/etc/network/interfaces" 
Avant : 
..... 
# The primary network interface 
allow-hotplug eth0 
iface eth0 inet dhcp 
Après : 
..... 
auto eth0 
iface eth0 inet static 
        address 192.168.1.xxx 
        netmask 255.255.255.0 
        network 192.168.1.0 
        gateway 192.168.1.6 
        broadcast 192.168.1.255

La suite de cette palpitante histoire dans l'article suivant : Installation de ZIMBRA

ZIMBRA. :Phase 2A : logiciel

ZIMBRA. :Phase 2A : logiciel jpp

Note 2016, cet article est devenu "historique", voir plutôt "Installation de ZIMBRA dans une MV". 
La machine étant prête on peut passer à la suite : l'installation de notre logiciel. 
Après avoir chargé le fichier (tar.gz) fourni par ZIMBRA pour votre configuration, ici pour une Deian 5 i386 ( #460Mo quand même ). 
Il suffit de la décompacter dans un répertoire tranquille on se trouve face à un répertoire contenant : 
drwxr-xr-x 2  503  503 4096 déc.  15 05:45 bin 
drwxr-xr-x 2  503  503 4096 déc.  15 05:45 data 
drwxr-xr-x 3  503  503 4096 déc.  15 05:45 docs 
-rwxr-xr-x 1  503  503 6528 déc.  15 05:45 install.sh 
drwxr-xr-x 2  503  503 4096 déc.  15 05:46 packages 
-r--r--r-- 1  503  503  369 déc.  15 05:45 readme_binary_en_US.txt 
-r--r--r-- 1  503  503 8575 déc.  15 05:45 readme_source_en_US.txt 
-r--r--r-- 1  503  503  428 déc.  15 05:45 README.txt 
drwxr-xr-x 3  503  503 4096 déc.  15 05:45 util 
La version est toute récente (15 décembre !). 
Les différents packages sont (répertoire packages) : 
-rw-r--r-- 1 503 503  11196160 déc.  15 05:45 zimbra-apache_6.0.4_GA_2038.DEBIAN5_64_amd64.deb 
-rw-r--r-- 1 503 503 176340458 déc.  15 05:46 zimbra-core_6.0.4_GA_2038.DEBIAN5_64_amd64.deb 
-rw-r--r-- 1 503 503   6083466 déc.  15 05:46 zimbra-ldap_6.0.4_GA_2038.DEBIAN5_64_amd64.deb 
-rw-r--r-- 1 503 503      1324 déc.  15 05:46 zimbra-logger_6.0.4_GA_2038.DEBIAN5_64_amd64.deb 
-rw-r--r-- 1 503 503    836320 déc.  15 05:46 zimbra-memcached_6.0.4_GA_2038.DEBIAN5_64_amd64.deb 
-rw-r--r-- 1 503 503  62142320 déc.  15 05:46 zimbra-mta_6.0.4_GA_2038.DEBIAN5_64_amd64.deb 
-rw-r--r-- 1 503 503   1788722 déc.  15 05:46 zimbra-proxy_6.0.4_GA_2038.DEBIAN5_64_amd64.deb 
-rw-r--r-- 1 503 503   6472146 déc.  15 05:46 zimbra-snmp_6.0.4_GA_2038.DEBIAN5_64_amd64.deb 
-rw-r--r-- 1 503 503  41755764 déc.  15 05:46 zimbra-spell_6.0.4_GA_2038.DEBIAN5_64_amd64.deb 
-rw-r--r-- 1 503 503 148819674 déc.  15 05:46 zimbra-store_6.0.4_GA_2038.DEBIAN5_64_amd64.deb 
du solide !

La lecture du (court) fichier README : 
Binary release: 
   README.txt - this file 
   install.sh - install script 
   bin/ - binaries used during install 
   data/ - contains installation data 
   packages/ - contains ZCS rpms 
   docs/ - more documentation 
Installing from binary: 
   tar xzf zcs.tgz 
   cd zcs 
   ./install.sh 
Nous conforte dans l'utilisation du fichier "install.sh" pour installer le tout../install.sh

==================================================================== 
Operations logged to /tmp/install.log.2657 
Checking for existing installation... 
    zimbra-ldap...NOT FOUND 
    zimbra-logger...NOT FOUND 
    zimbra-mta...NOT FOUND 
    zimbra-snmp...NOT FOUND 
    zimbra-store...NOT FOUND 
    zimbra-apache...NOT FOUND 
    zimbra-spell...NOT FOUND 
    zimbra-convertd...NOT FOUND 
    zimbra-memcached...NOT FOUND 
    zimbra-proxy...NOT FOUND 
    zimbra-archiving...NOT FOUND 
    zimbra-cluster...NOT FOUND 
    zimbra-core...NOT FOUND 
PLEASE READ THIS AGREEMENT CAREFULLY BEFORE USING THE SOFTWARE. 
ZIMBRA, INC. ("ZIMBRA") WILL ONLY LICENSE THIS SOFTWARE TO YOU IF YOU 
FIRST ACCEPT THE TERMS OF THIS AGREEMENT. BY DOWNLOADING OR INSTALLING 
THE SOFTWARE, OR USING THE PRODUCT, YOU ARE CONSENTING TO BE BOUND BY 
THIS AGREEMENT. IF YOU DO NOT AGREE TO ALL OF THE TERMS OF THIS 
AGREEMENT, THEN DO NOT DOWNLOAD, INSTALL OR USE THE PRODUCT. 
License Terms for the Zimbra Collaboration Suite: 
  http://www.zimbra.com/license/zimbra_public_eula_2.1.html 
Press Return to continue 
========================================================================= 
La licence reste dans les termes classiques et ne présente pas de spécificité marquante, on peut l'accepter sans réticences. 
========================================================================= 
Checking for prerequisites... 
     FOUND: NPTL 
     FOUND: sudo-1.7.2p1-1 
     FOUND: libidn11-1.15-2 
     FOUND: libpcre3-7.8-3 
     FOUND: libgmp3c2-2:4.2.2+dfsg-3 
     FOUND: libexpat1-2.0.1-6 
     FOUND: libstdc++6-4.4.2-3 
     FOUND: libstdc++5-1:3.3.6-18 
     FOUND: libperl5.10-5.10.1-8 
Checking for suggested prerequisites... 
    FOUND: perl-5.10.0 
    FOUND: sysstat 
Prerequisite check complete. 
Checking for installable packages 
Found zimbra-core 
Found zimbra-ldap 
Found zimbra-logger 
Found zimbra-mta 
Found zimbra-snmp 
Found zimbra-store 
Found zimbra-apache 
Found zimbra-spell 
Found zimbra-memcached 
Found zimbra-proxy 
Select the packages to install 
Install zimbra-ldap [Y] 
Install zimbra-logger [Y] 
Install zimbra-mta [Y] 
Install zimbra-snmp [Y] 
Install zimbra-store [Y] 
Install zimbra-apache [Y] 
Install zimbra-spell [Y] 
Install zimbra-memcached [Y] 
Install zimbra-proxy [Y] 
Checking required space for zimbra-core 
checking space for zimbra-store 
Installing: 
    zimbra-core 
    zimbra-ldap 
    zimbra-logger 
    zimbra-mta 
    zimbra-snmp 
    zimbra-store 
    zimbra-apache 
    zimbra-spell 
    zimbra-memcached 
    zimbra-proxy 
The system will be modified.  Continue? [N] Y

============================================================ 
J'ai installé toutes les options et "Y" pour continuer 
============================================================

Removing /opt/zimbra 
Removing zimbra crontab entry...done. 
Cleaning up zimbra init scripts...done. 
Cleaning up /etc/ld.so.conf...done. 
Cleaning up /etc/security/limits.conf...done. 
Finished removing Zimbra Collaboration Suite. 
Installing packages 
    zimbra-core......zimbra-core_6.0.4_GA_2038.DEBIAN5_64_i386.deb... 
    zimbra-ldap......zimbra-ldap_6.0.4_GA_2038.DEBIAN5_64_i386.deb...done 
    zimbra-logger......zimbra-logger_6.0.4_GA_2038.DEBIAN5_64_i386.deb...done 
    zimbra-mta......zimbra-mta_6.0.4_GA_2038.DEBIAN5_64_i386.deb...done 
    zimbra-snmp......zimbra-snmp_6.0.4_GA_2038.DEBIAN5_64_i386.deb...done 
    zimbra-store......zimbra-store_6.0.4_GA_2038.DEBIAN5_64_i386.deb... 
    zimbra-apache......zimbra-apache_6.0.4_GA_2038.DEBIAN5_64_i386.deb...done 
    zimbra-spell......zimbra-spell_6.0.4_GA_2038.DEBIAN5_64_i386.deb... 
Operations logged to /tmp/zmsetup.12292009-155158.log 
Installing LDAP configuration database...done. 
Setting defaults...    MX: com-mail.jpp.fr (192.168.1.225) 
    Interface: 192.168.1.225 
    Interface: 127.0.0.1 
        192.168.1.225 
done. 
Checking for port conflicts 
Checking for port conflicts 
Port conflict detected: 25 (zimbra-mta) 
Port conflicts detected! - Any key to continue 
============================================================================= 
J'avais laissé exim4 actif ! Il était pourtant désinstallé ! 
Mais en fait il était resté --> je le stoppe et désactive le script avec un "exit" bien 
placé dans le script ! 
Je supprime aussi l'exécutable " /usr/sbin/exim4 ". 
Et on continue 
============================================================================= 
Main menu 
   1) Common Configuration:                                                  
   2) zimbra-ldap:                             Enabled                       
   3) zimbra-store:                            Enabled                       
        +Create Admin User:                    yes                           
        +Admin user to create:                 admin@com-mail.jpp.fr        
******* +Admin Password                        UNSET                         
        +Enable automated spam training:       yes                           
        +Spam training user:                   spam.57zxf5al@com-mail.jpp.fr 
        +Non-spam(Ham) training user:          ham.dugtitbk@com-mail.jpp.fr  
        +Global Documents Account:             wiki@com-mail.jpp.fr          
        +SMTP host:                            com-mail.jpp.fr               
        +Web server HTTP port:                 80                            
        +Web server HTTPS port:                443                           
        +Web server mode:                      http                          
        +IMAP server port:                     143                           
        +IMAP server SSL port:                 993                           
        +POP server port:                      110                           
        +POP server SSL port:                  995                           
        +Use spell check server:               yes                           
        +Spell server URL:                     http://com-mail.jpp.fr:7780/aspell.php 
        +Configure for use with mail proxy:    FALSE                         
        +Configure for use with web proxy:     FALSE                         
        +Enable version update checks:         TRUE                          
        +Enable version update notifications:  TRUE                          
        +Version update notification email:    admin@com-mail.jpp.fr         
        +Version update source email:          admin@com-mail.jpp.fr         
   4) zimbra-mta:                              Enabled                       
   5) zimbra-snmp:                             Enabled                       
   6) zimbra-logger:                           Enabled                       
   7) zimbra-spell:                            Enabled                       
   8) Default Class of Service Configuration:                                
   r) Start servers after configuration        yes                           
   s) Save config to file                                                    
   x) Expand menu                                                            
   q) Quit                                    

Address unconfigured (**) items  (? - help)

====================================================================== 
La suite dans l'article suivant en cliquant ci-dessous à droite.

ZIMBRA : Phase 2B : logiciel

ZIMBRA : Phase 2B : logiciel jpp

La suite de l'installation de ZIMBRA 
========================================== 
Tout a été configuré en standard et je n'ai pour le moment aucun besoin de spécificités "pointues". 
Le seul item non configuré est le mot de passe de l'administrateur que je m'empresse de configurer 
avec la touche "x : Expand menu", puis "3 : zimbra-store" qui affiche le menu suivant : 
============================================= 
Store configuration 
   1) Status:                             Enabled                        
   2) Create Admin User:                  yes                            
   3) Admin user to create:               admin@com-mail.jpp.fr          
** 4) Admin Password            .         UNSET                          
   5) Enable automated spam training:     yes                            
   6) Spam training user:                 spam.57zxf5al@com-mail.jpp.fr  
   7) Non-spam(Ham) training user:        ham.dugtitbk@com-mail.jpp.fr   
   8) Global Documents Account:           wiki@com-mail.jpp.fr           
   9) SMTP host:                          com-mail.jpp.fr                
  10) Web server HTTP port:               80                             
  11) Web server HTTPS port:              443                            
  12) Web server mode:                    http                           
  13) IMAP server port:                   143                            
  14) IMAP server SSL port:               993                            
  15) POP server port:                    110                            
  16) POP server SSL port:                995                            
  17) Use spell check server:             yes                            
  18) Spell server URL:                   http://com-mail.jpp.fr:7780/aspell.php 
  19) Configure for use with mail proxy:  FALSE                          
  20) Configure for use with web proxy:   FALSE                          
  21) Enable version update checks:       TRUE                           
  22) Enable version update notifications:TRUE                           
  23) Version update notification email:  admin@com-mail.jpp.fr          
  24) Version update source email:        admin@com-mail.jpp.fr          
Select, or 'r' for previous menu [r]  
=================================================================================== 
Je choisis le "4" pour mettre en place le mot de passe ADMIN 
============================================================================== 
Password for admin@com-mail.jpp.fr (min 6 characters): [jynfxBVR] 
============================================================================== 
Le mot de passe par défaut ne me convient pas, j'en met donc un bien à moi. 
Le menu se réaffiche et cette fois je tape "r" pour remonter au menu supérieur. 
Cette option me réaffiche le "main menu" avec une petite différence à la fin : 
=================================================================================== 
*** CONFIGURATION COMPLETE - press 'a' to apply 
Select from menu, or press 'a' to apply config (? - help)  
=================================================================================== 
Je choisis donc "a" pour appliquer l'ensemble des choix effectués. 
============================================================================== 
A la question "Save configuration data to a file? [Yes] " je laisse la valeur standard "Yes". 
A la question "Save config in file: [/opt/zimbra/config.9056] " je valide par "entrée". 
=================================================================================== 
Saving config in /opt/zimbra/config.9056...done. 
The system will be modified - continue? [No] 
=================================================================================== 
On est prudent chez ZIMBRA et je frappe "Yes" 
=================================================================================== 
Operations logged to /tmp/zmsetup.12292009-155158.log 
===================================================================== 
.... un tas de lignes de log heureusement terminées par "...done". 
===================================================================== 
You have the option of notifying Zimbra of your installation. 
This helps us to track the uptake of the Zimbra Collaboration Suite. 
The only information that will be transmitted is: 
    The VERSION of zcs installed (6.0.4_GA_2038_DEBIAN5) 
    The ADMIN EMAIL ADDRESS created (admin@com-mail.jpp.fr) 
Notify Zimbra of your installation? [Yes]  
====================================================================== 
Je réponds "no" car cette adresse n'est accessible que sur mon réseau interne. 
====================================================================== 
Notification skipped 
Starting servers... 
====================================================================== 
Le démarrage est un peu long car il y "du monde" à démarrer..... y compris 
des applications "java". 
Après environ 90 secondes : 
====================================================================== 
Installing common zimlets... 
    com_zimbra_adminversioncheck...done. 
    com_zimbra_bulkprovision...done. 
    com_zimbra_email...done. 
    com_zimbra_ymemoticons...done. 
    com_zimbra_url...done. 
    com_zimbra_local...done. 
    com_zimbra_date...done. 
    com_zimbra_phone...done. 
    com_zimbra_cert_manager...done. 
Finished installing common zimlets. 
Initializing Documents...done 
Restarting mailboxd...done 
Setting up zimbra crontab...done. 
Moving /tmp/zmsetup.12302009-192333.log to /opt/zimbra/log 
Configuration complete - press return to exit  
====================================================================== 
C'est fini ! Prévoir au total environ 45 minutes. 
On déclenche un reboot pour démarrer en conditions normales. 
J'avais prévu une machine avec 1536 Mo de mémoire, j'ai bien fait car " top " me montre : 
Mem:   1556276k total,   674824k used,   881452k free,     8816k buffers 
Swap:  1943856k total,        0k used,  1943856k free,   156356k cached 
 

ZIMBRA : Phase 4 : l'aspect

ZIMBRA : Phase 4 : l'aspect jpp

L'installation est faite, la machine a redémarré, admirons un peu le résultat.Permière constation : il y a plein de ports utilisés ( lsof -Pn | grep TCP ): 25, 80, 110, 143, 389, 993, 3310, 5222, 5223, 7110, 7143, 7777, 7780, 10024 et j'en oublie ...  
Cela va être un peu coton de s'y retrouver. 
Le port 80 donne accès au WebMail, dont voici un premier aperçu :

Le port 7071 (en https) donne accès à l'interface d'administration dont voici un aperçu :

 

 

 

 

 

 

Le menu d'administration se présente de la façon suivante :

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Sont présentés ici :

  • La gestion des comptes
  • La gestion des Alias
  • La gestion des listes de diffusion
  • La gestion des classes de service, elle permet de créer des standards à appliquer aux utilisateurs (notion de "groupes") qui simplifie la gestion des utilisateurs.
  • La dernière partie présente des vues spécifiques des comptes ouverts. 
    En bref c'est très complet mais il y a pas mal de boulot avant de savoir se servir correctement de toutes les fonctions présentes.
  • La création de multiples "domaines" virtuels, le serveur est ainsi capable de servir plusieurs domaines différents

D'autres éléments que je n'ai pas encore eu le temps d'apprécier : 
les Zimlets, les extensions d'administration. 
Le menu "Paramètres Globaux" permet de régler finement un grand nombre d'options des différents logiciels, par exemple les paramètres de Postfix. 
L'état du serveur présente la liste de l'état des différents services. 
De même le serveur maintient des statistiques d'usage (CPU, IO, nombre de mails, nombre de spam, nombre de virus détectés .... 
Les Outils permettent de surveiller l'état des files d'attente, de paramétrer la recherche d'updates, la gestion de certificats ....

ZIMBRA. Phase 5 : paramétrage clients

ZIMBRA. Phase 5 : paramétrage clients jpp

Passons un peu maintenant à l'utilisation coté clients, pour ces quelques tests j'ai connecté les clients suivants :

  • Windows XP : Thunderbird3
  • Windows XP : Outlook Express
  • Linux : Evolution

Un petit inconvénient d'utiliser un certificat "bidon" comme le certificat créé automatiquement lors de l'installation est l'apparition de messages signalant ce fait. Cette ennui est particulièrement gênant pour Outlook Express qui ne se contente pas de se plaindre la première fois mais ouvre une boite d'alerte à chaque démarrage. 

Paramètres pour Thunderbird 3 sous Windows XP :

Le port 110 par défaut convient très bien. 
Zimbra est configuré en standard pour une liaison sécurisée, il faut utiliser le paramètre "STARTTLS". 
Il ne faut pas oublier lors de la création du compte de choisir les options de connexion avec authentification pour le client POP comme pour le serveur SMTP. 
En principe cela marche directement et sans ennuis.

Paramètres pour Outlook Express sous Windows XP :

Il faut absolument cliquer les paramètres de sécurité "SSL" dans l'onglet "Avancé".

Paramètres pour Evolution sous Linux :

Là aussi c'est très simple. 
N'ayant pas d'autre client mail à disposition j'arrêterais les exemples de paramétrage des clients ici.

Zimbra : migrations

Zimbra : migrations jpp

Note 2022 : je suis passé directement de Ubuntu 14.04 sur 20.04, mais c'est aussi pénible que le changement de machine, il faut tout installer puis transporter les comptes et leur contenu, c'est assez long ....

J'utilise maintenant Zimbra depuis quelques années et j'ai donc du "upgrader" régulièrement pour rester dans la course.

La dernière version est installée sur une Ubuntu 14.04 LTS, mais cette release ne sera plus maintenue après Avril 2019 message :  
Your Hardware Enablement Stack (HWE) is supported until April 2019 
et j'ai quelques soucis avec la version actuelle qui "plante" deux ou trois fois par jour ! 
J'ai du créer un script qui test la présence des ports TCP (25, 389, 465, 587, 993, 995) nécessaires à une activité normale et relance le truc si l'un de ces ports est inaccessible. 
Je suis en train de tester la version 8.8.11 sur une Ubuntu 16.04 qui, elle, sera maintenue jusqu'en 2021. Les tests sont terminés et ça marche. 
Remarque 1 : C'est dommage qu'une version de Zimbra pour Ubuntu 18.04 ne soit pas (pas encore disponible) et la version actuelle ne s'installe pas sur une 18.04. 
Remarque 2 : ne faites surtout pas un "do-release-upgrade" sur votre système 14.04, j'ai essayé et l'opération commence par "virer" Zimbra ! Heureusement que j'avais sauvegardé avant de tenter l'opération !

C'est tout pour le moment !

ZIMBRA : première migration

ZIMBRA : première migration jpp

Zimbra ayant annoncé la fin des upgrades pour les versions 32bits OpenSource, j'ai décidé d'upgrader ma version 6.0.4 à la dernière disponible : 6.0.7. pour la suite peut-être y aura-t-il de temps en temps des patchs ? 
Oui, il y en a et je viens de passer en 6.0.9 en suivant cette même procédure. 

Note : j'ai laissé l'intégralité des copies d'écrans bien que cela soit un peu long (vous avez dit longuet ?). 

Après le téléchargement de la version et du patch qui va avec : 
zcs-6.0.7_GA_2473.DEBIAN5.20100616212143.tgz 
zcs-patch-6.0.7_GA_2476.tgz 
Procédure suivie:

  •  stopper "cron"
  •  stopper "at"
  •  stopper zimbra"
  •  effectuer une image complète du répertoires "/opt/zimbra"
  •  détarer le gros "TGZ" dans un répertoire tranquille
  •  détarer le petit "TGZ" dans le même répertoire


On se trouve alors devant les fichiers suivants : 
drwxr-xr-x 14 root   root      4096 2010-09-20 19:44 .. 
drwxr-xr-x  7    503  503      4096 2010-06-17 07:09 zcs-6.0.7_GA_2473.DEBIAN5.20100616212143 
-rw-r--r--  1 root   root 455562410 2010-09-20 19:46 zcs-6.0.7_GA_2473.DEBIAN5.20100616212143.tgz 
drwxrwxr-x  5 zimbra  503      4096 2010-06-25 22:44 zcs-patch-6.0.7_GA_2476 
-rw-r--r--  1 root   root  26871472 2010-09-20 19:46 zcs-patch-6.0.7_GA_2476.tgz 

En allant dans le répertoire "zcs-6.0.7_GA_2473.DEBIAN5.20100616212143" on trouve l'arborescence suivante : 
drwxr-xr-x 7  503  503 4096 2010-06-17 07:09 . 
drwxr-xr-x 4 root root 4096 2010-09-20 19:48 .. 
drwxr-xr-x 2  503  503 4096 2010-06-17 07:09 bin 
drwxr-xr-x 2  503  503 4096 2010-06-17 07:09 data 
drwxr-xr-x 3  503  503 4096 2010-06-17 07:09 docs 
-rwxr-xr-x 1  503  503 6534 2010-06-17 07:09 install.sh 
drwxr-xr-x 2  503  503 4096 2010-06-17 07:10 packages 
-r--r--r-- 1  503  503  369 2010-06-17 07:09 readme_binary_en_US.txt 
-r--r--r-- 1  503  503 8575 2010-06-17 07:09 readme_source_en_US.txt 
-r--r--r-- 1  503  503  428 2010-06-17 07:09 README.txt 
drwxr-xr-x 3  503  503 4096 2010-06-17 07:09 util 

Un magnifique README nous tend les bras et indique de lancer "./install.sh" ce que je fais aussitôt.

./install.sh 
Operations logged to /tmp/install.log.31403 
Checking for existing installation... 
    zimbra-ldap...FOUND zimbra-ldap-6.0.4_GA_2038.DEBIAN5 
    zimbra-logger...FOUND zimbra-logger-6.0.4_GA_2038.DEBIAN5 
    zimbra-mta...FOUND zimbra-mta-6.0.4_GA_2038.DEBIAN5 
    zimbra-snmp...FOUND zimbra-snmp-6.0.4_GA_2038.DEBIAN5 
    zimbra-store...FOUND zimbra-store-6.0.4_GA_2038.DEBIAN5 
    zimbra-apache...FOUND zimbra-apache-6.0.4_GA_2038.DEBIAN5 
    zimbra-spell...FOUND zimbra-spell-6.0.4_GA_2038.DEBIAN5 
    zimbra-convertd...NOT FOUND 
    zimbra-memcached...NOT FOUND 
    zimbra-proxy...NOT FOUND 
    zimbra-archiving...NOT FOUND 
    zimbra-cluster...NOT FOUND 
    zimbra-core...FOUND zimbra-core-6.0.4_GA_2038.DEBIAN5 
ZCS upgrade from 6.0.4 to 6.0.7 will be performed. 
Saving existing configuration file to /opt/zimbra/.saveconfig 
PLEASE READ THIS AGREEMENT CAREFULLY BEFORE USING THE SOFTWARE. 
ZIMBRA, INC. ("ZIMBRA") WILL ONLY LICENSE THIS SOFTWARE TO YOU IF YOU 
FIRST ACCEPT THE TERMS OF THIS AGREEMENT. BY DOWNLOADING OR INSTALLING 
THE SOFTWARE, OR USING THE PRODUCT, YOU ARE CONSENTING TO BE BOUND BY 
THIS AGREEMENT. IF YOU DO NOT AGREE TO ALL OF THE TERMS OF THIS 
AGREEMENT, THEN DO NOT DOWNLOAD, INSTALL OR USE THE PRODUCT. 
License Terms for the Zimbra Collaboration Suite: 
  http://www.zimbra.com/license/zimbra_public_eula_2.1.html 
Press Return to continue 

C'est bon signe il a tout détecté sa proposition semble honnête, on continue ... et la sauvegarde aura probablement superflue, mais une coupure de courant (qui ne s'est jamais pris les pieds dans le fil ? ) et Pfuuit . 

Checking for prerequisites... 
     FOUND: NPTL 
     FOUND: sudo-1.6.9p17-3 
     FOUND: libidn11-1.8+20080606-1 
     FOUND: libpcre3-7.6-2.1 
     FOUND: libgmp3c2-2:4.2.2+dfsg-3 
     FOUND: libexpat1-2.0.1-4+lenny3 
     FOUND: libstdc++6-4.4.4-8 
Checking for suggested prerequisites... 
    FOUND: perl-5.10.0 
    FOUND: sysstat 
Prerequisite check complete. 
Checking current number of databases... 
Do you want to verify message store database integrity? [Y]  
  
Ben oui, on va vérifier l'intégrité juste pour voir, ça ne mange pas de pain, je frappe donc "Y" ... 

Verifying integrity of message store databases.  This may take a while. 
Starting mysqld...done. 
mysqld is alive 
No errors found 
mysqld is alive 
Stopping mysqld... done. 
Checking for installable packages 
Found zimbra-core 
Found zimbra-ldap 
Found zimbra-logger 
Found zimbra-mta 
Found zimbra-snmp 
Found zimbra-store 
Found zimbra-apache 
Found zimbra-spell 
Found zimbra-memcached 
Found zimbra-proxy 
The Zimbra Collaboration Suite appears already to be installed. 
It can be upgraded with no effect on existing accounts, 
or the current installation can be completely removed prior 
to installation for a clean install. 

Do you wish to upgrade? [Y]  

Ce n'était pas si long que cela, mais j'ai peu de volume. Oui, je souhaite upgrader, on est là pour ça ! "Y" donc puisquel'on nous dit que tout va baigner ... on y va sans regret. 

Select the packages to install 
    Upgrading zimbra-core 
    Upgrading zimbra-ldap 
    Upgrading zimbra-logger 
    Upgrading zimbra-mta 
    Upgrading zimbra-snmp 
    Upgrading zimbra-store 
    Upgrading zimbra-apache 
    Upgrading zimbra-spell 
Install zimbra-memcached [N]  
Install zimbra-proxy [N] 

Je ne les ai pas installés car mon serveur est très peu chargé et es relativement puissant, je confirme le 'N'. 

Checking required space for zimbra-core 
checking space for zimbra-store 
Installing: 
    zimbra-core 
    zimbra-ldap 
    zimbra-logger 
    zimbra-mta 
    zimbra-snmp 
    zimbra-store 
    zimbra-apache 
    zimbra-spell 
The system will be modified.  Continue? [N]  

Tiens, sécurité, la réponse par défaut est "N", il faut donc taper soi même le "Y" fatidique, quel travail ! 

Shutting down zimbra mail 
Backing up the ldap database...done. 
Removing existing packages 
   zimbra-ldap...done 
   zimbra-logger...done 
   zimbra-mta...done 
   zimbra-snmp...done 
   zimbra-store...done 
   zimbra-spell...done 
   zimbra-apache...done 
   zimbra-core...done 
Removing deployed webapp directories 
Installing packages 
    zimbra-core......zimbra-core_6.0.7_GA_2473.DEBIAN5_i386.deb... 
    zimbra-ldap......zimbra-ldap_6.0.7_GA_2473.DEBIAN5_i386.deb...done 
    zimbra-logger......zimbra-logger_6.0.7_GA_2473.DEBIAN5_i386.deb...done 
    zimbra-mta......zimbra-mta_6.0.7_GA_2473.DEBIAN5_i386.deb...done 
    zimbra-snmp......zimbra-snmp_6.0.7_GA_2473.DEBIAN5_i386.deb...done 
    zimbra-store......zimbra-store_6.0.7_GA_2473.DEBIAN5_i386.deb...done 
    zimbra-apache......zimbra-apache_6.0.7_GA_2473.DEBIAN5_i386.deb...done 
    zimbra-spell......zimbra-spell_6.0.7_GA_2473.DEBIAN5_i386.deb...done 
Setting defaults from saved config in /opt/zimbra/.saveconfig/config.save 
   HOSTNAME=*****.***.*** 
   LDAPHOST=*****.***.*** 
   LDAPPORT=389 
   SNMPTRAPHOST=*****.***.*** 
   SMTPSOURCE=*****@****.***.***       
   SMTPDEST=*****@****.***.***       
   SNMPNOTIFY=yes 
   SMTPNOTIFY=yes 
   LDAPROOTPW=special_discret 
   LDAPZIMBRAPW=special_discret 
   LDAPPOSTPW=special_discret 
   LDAPREPPW=special_discret 
   LDAPAMAVISPW=special_discret 
   LDAPNGINXPW=special_discret 
Restoring existing configuration file from /opt/zimbra/.saveconfig/localconfig.xml...done 
Operations logged to /tmp/zmsetup.09202010-195950.log 
Upgrading from 6.0.4_GA_2038 to 6.0.7_GA_2473 
Stopping zimbra services...done. 
Verifying /opt/zimbra/conf/my.cnf 
Starting mysql...done. 
This appears to be 6.0.4_GA 
Checking ldap status...not running. 
Running zmldapapplyldif...done. 
Checking ldap status...already running. 
Schema upgrade required from version 63 to 64. 
Running /opt/zimbra/libexec/scripts/migrate20100106-MobileDevices.pl 
Mon Sep 20 20:00:36 2010: Verified schema version 63. 
Mon Sep 20 20:00:36 2010: Adding policy_values column to ZIMBRA.MOBILE_DEVICES table. 
Mon Sep 20 20:00:37 2010: Verified schema version 63. 
Mon Sep 20 20:00:37 2010: Updating DB schema version from 63 to 64. 
Stopping mysql...done. 
Updating from 6.0.5_GA 
Mon Sep 20 20:00:36 2010: Adding policy_values column to ZIMBRA.MOBILE_DEVICES table. 
Mon Sep 20 20:00:37 2010: Verified schema version 63. 
Mon Sep 20 20:00:37 2010: Updating DB schema version from 63 to 64. 
Stopping mysql...done. 
Updating from 6.0.5_GA 
Updating from 6.0.6_GA 
Updating from 6.0.7_GA 
Updating global config and COS's with attributes introduced after 6.0.4_GA...done. 
Stopping ldap...done. 
Upgrade complete. 

Running bdb db_recover...done. 
Running zmldapapplyldif...done. 
Checking ldap status....already running. 
Setting defaults...done. 
Setting defaults from existing config... 
Checking for port conflicts 
Setting defaults from ldap...done. 
Saving config in /opt/zimbra/config.8891...done. 
Operations logged to /tmp/zmsetup.09202010-195950.log 
Setting local config values...done. 
Setting up CA...done. 
Deploying CA to /opt/zimbra/conf/ca ...done. 
Deploying CA to /opt/zimbra/conf/ca ...done. 
Setting replication password...done. 
Setting Postfix password...done. 
Setting amavis password...done. 
Setting nginx password...done. 
Creating server entry for ******.***.***...already exists. 
Saving CA in ldap ...done. 
Saving SSL Certificate in ldap ...done. 
Setting spell check URL...done. 
Setting service ports on ******.***.***...done. 
Adding ******.***.*** to zimbraMailHostPool in default COS...done. 
Installing webclient skins... 
    lavender...done. 
    tree...done. 
    beach...done. 
    bare...done. 
    oasis...done. 
    waves...done. 
    pebble...done. 
    yahoo...done. 
    sand...done. 
    smoke...done. 
    lemongrass...done. 
    zmail...done. 
    steel...done. 
    hotrod...done. 
    lake...done. 
    sky...done. 
    bones...done. 
    twilight...done. 
Finished installing webclient skins. 
Setting Keyboard Shortcut Preferences...done. 
Setting zimbraFeatureIMEnabled=FALSE...done. 
Setting zimbraFeatureTasksEnabled=TRUE...done. 
Setting zimbraFeatureBriefcasesEnabled=TRUE...done. 
Setting zimbraFeatureNotebookEnabled=TRUE...done. 
Setting MTA auth host...done. 
Setting TimeZone Preference...done. 
prov> Initializing mta config...done. 
Setting services on xxxxxx.xxx.xxx..done. 
Creating user spam.py3tgmmj@xxxxxx.xxx.xxx...already exists. 
Creating user ham.p7c2hbkw56@xxxxxx.xxx.xxx...already exists. 
Setting spam training accounts...done. 
Configuring SNMP...done. 
Checking for default IM conference room...already initialized. 
Setting up syslog.conf...done. 
You have the option of notifying Zimbra of your installation. 
This helps us to track the uptake of the Zimbra Collaboration Suite. 
The only information that will be transmitted is: 
    The VERSION of zcs installed (6.0.7_GA_2473_DEBIAN5) 
    The ADMIN EMAIL ADDRESS created (xxxxx@xxxxxx.xxx.xxx) 

Notify Zimbra of your installation? [Yes]  
Notifying Zimbra of installation via http://www.zimbra.com/cgi-bin/notify.cgi?VER=6.0.7_GA_2473_DEBIAN5&MAIL=xxxxx@x… 

Notification complete 
Starting servers...done. 
Checking for deprecated zimlets...done. 
Checking for network zimlets in LDAP...done. 
Removing network zimlets... 
Finished removing network zimlets. 
Removing convertd mime tree from ldap...done. 
Installing common zimlets... 
    com_zimbra_email...done. 
    com_zimbra_bulkprovision...done. 
    com_zimbra_phone...done. 
    com_zimbra_adminversioncheck...done. 
    com_zimbra_dnd...done. 
    com_zimbra_url... 
    com_zimbra_date...done. 
    com_zimbra_ymemoticons...done. 
    com_zimbra_cert_manager...done. 
Finished installing common zimlets. 
Getting list of all zimlets...done. 
Updating non-standard zimlets... 
    com_zimbra_local...done. 
Finished updating non-standard zimlets. 
Upgrading Document templates...done. 
Restarting mailboxd... 
Setting up zimbra crontab...done. 
Moving /tmp/zmsetup.09202010-195950.log to /opt/zimbra/log 
Configuration complete - press return to exit  
 

C'est fini pour l'upgrade, cela a bien moliné pendant une dizaine de minutes. Comme d'habitude l'installation est passée comme une lettre à la poste, un petit bravo aux développeurs, si si j'y tiens. 
Il va maintenant falloir songer à passer le patch. On se dirige donc vers le répertoire "zcs-patch-6.0.7_GA_2476" qui contient queques "drôles" de fichiers de provenance inconnue ( des martiens ? Pif, Paf rm ._*)  : 
drwxrwxr-x 5 zimbra  503 4096 2010-06-25 22:44 . 
drwxr-xr-x 4 root   root 4096 2010-09-20 19:48 .. 
drwxrwxr-x 2 zimbra  503 4096 2010-06-25 22:44 bin 
-rwxrwxr-x 1 zimbra  503  197 2010-06-25 22:44 ._bin 
drwxrwxr-x 2 zimbra  503 4096 2010-07-17 05:40 conf 
-rwxrwxr-x 1 zimbra  503  197 2010-07-17 05:40 ._conf 
-rwxr-xr-x 1 zimbra  503  197 2010-06-25 22:44 ._installPatch.sh 
-rwxr-xr-x 1 zimbra  503  713 2010-06-25 22:44 installPatch.sh 
drwxrwxr-x 3 zimbra  503 4096 2010-07-17 05:41 source 
-rwxrwxr-x 1 zimbra  503  197 2010-07-17 05:41 ._source 

Mais comme il y a un "installPatch.sh" il est tentant de l'utiliser. Je ne refais pas de sauvegarde en faisant confiance aux développeurs, ce que je ne ferais pas sur une machine de production ... Et c'est parti ...

./installPatch.sh 
Current Version: 6.0.7_GA_2473 
Found Patch for 6.0.7_GA called 6.0.7_P1 
Deploying patch for 6.0.7_GA 
Updating files for package zimbra-store 
  /opt/zimbra/jetty/webapps/service/WEB-INF/lib/zimbrastore.jar... copied. 
  /opt/zimbra/jetty/webapps/zimbra/WEB-INF/lib/zimbrastore.jar... copied. 
  /opt/zimbra/jetty/webapps/zimbraAdmin/WEB-INF/lib/zimbrastore.jar... copied. 
  /opt/zimbra/lib/jars/zimbrastore.jar... copied. 
  /opt/zimbra/jetty/webapps/zimbra/h/printmessage... copied. 
  /opt/zimbra/jetty/webapps/zimbra/js/MailCore_all.js.zgz... copied. 
  /opt/zimbra/jetty/webapps/zimbra/js/NewWindow_2_all.js.zgz... copied. 
  /opt/zimbra/jetty/webapps/zimbra/js/Calendar_all.js.zgz... copied. 
 

C'est super rapide mais il faut faire un start/stop de ZIMBRA pour que ces modifications soient prises en compte. 

Tout a été relancé et les premiers tests sont OK, l'accès "POP" fonctionne et Evolution récupère quelques mails; Thunderbird sur une machine Windows ( j'ose à peine écrire cela, mais cette machine n'est pas à moi !) récupère lui aussi ses mails sans problèmes. 
L'interface d'administration ne me paraît pas sensiblement changée, le Webmail est toujours là et son ergonomie me plaît toujours autant ... et il marche avec google-chrome sans vous engueuler .... Il va falloir que je voie ce que celà donne depuis le magnifique smartphone qui m'a été offert. 

Au passage ZIMBRA surveille un peu la machine et si par aventure un disque dépasse 85% d'occupation l'admin reçoit un petit mail :

Sep 20 15:00:00 xxxxxx zimbramon[18308]: 18308:err: Disk warning: xxxxxx.xxx.xxx: /dev/md0 at 88% 
 

Zimbra : migrer 8.6 à 8.7

Zimbra : migrer 8.6 à 8.7 jpp

La version 8.6 commence à vieillir quelque peu et j'ai décidé de migrer vers la version 8.7, toujours dans sa machine KVM. L'usage de la VM simplifie les opérations :

  • Sauvegarde complète (faire une image du disque (dd + bzip2), au cas où !
  • Récupération du logiciel, tiens il a beaucoup maigri, à peine 286Mo au lieu de plus de 700 ?
  • Lancement des opérations.

Avant de migrer il faut installer le proxy si vous ne l'avez pas fait en 8.6, pour cela ré-installer la 8.6 en y incluant le proxy. 
Il suffit ensuite de "dé-tarer" l'archive dans un coin tranquille et de lancer le script "./install.sh" ce qui vous fournira un listing analogue au suivant, attention l'opération est assez longue.

Quelques réponses obligatoires sont marquées en rouge, rassurez vous il y en a peu.

Operations logged to /tmp/install.log.pl8L1ggo 
Checking for existing installation... 
    zimbra-ldap...FOUND zimbra-ldap-8.6.0.GA.1153.UBUNTU14.64 
    zimbra-logger...FOUND zimbra-logger-8.6.0.GA.1153.UBUNTU14.64 
    zimbra-mta...FOUND zimbra-mta-8.6.0.GA.1153.UBUNTU14.64 
    zimbra-dnscache...FOUND zimbra-dnscache-8.6.0.GA.1153.UBUNTU14.64 
    zimbra-snmp...FOUND zimbra-snmp-8.6.0.GA.1153.UBUNTU14.64 
    zimbra-store...FOUND zimbra-store-8.6.0.GA.1153.UBUNTU14.64 
    zimbra-apache...FOUND zimbra-apache-8.6.0.GA.1153.UBUNTU14.64 
    zimbra-spell...FOUND zimbra-spell-8.6.0.GA.1153.UBUNTU14.64 
    zimbra-convertd...NOT FOUND 
    zimbra-memcached...FOUND zimbra-memcached-8.6.0.GA.1153.UBUNTU14.64 
    zimbra-proxy...FOUND zimbra-proxy-8.6.0.GA.1153.UBUNTU14.64 
    zimbra-archiving...NOT FOUND 
    zimbra-core...FOUND zimbra-core-8.6.0.GA.1153.UBUNTU14.64 
ZCS upgrade from 8.6.0 to 8.7.1 will be performed. 
Checking for existing proxy service in your environment 
Checking for existing memcached service in your environment 
Validating ldap configuration 
LDAP validation succeeded.  Continuing. 
---------------------------------------------------------------------- 
PLEASE READ THIS AGREEMENT CAREFULLY BEFORE USING THE SOFTWARE. 
SYNACOR, INC. ("SYNACOR") WILL ONLY LICENSE THIS SOFTWARE TO YOU IF YOU 
FIRST ACCEPT THE TERMS OF THIS AGREEMENT. BY DOWNLOADING OR INSTALLING 
THE SOFTWARE, OR USING THE PRODUCT, YOU ARE CONSENTING TO BE BOUND BY 
THIS AGREEMENT. IF YOU DO NOT AGREE TO ALL OF THE TERMS OF THIS 
AGREEMENT, THEN DO NOT DOWNLOAD, INSTALL OR USE THE PRODUCT.

License Terms for this Zimbra Collaboration Suite Software: 
https://www.zimbra.com/license/zimbra-public-eula-2-6.html 
----------------------------------------------------------------------

Do you agree with the terms of the software license agreement? [N] Y

Checking current number of databases...

Do you want to verify message store database integrity? [Y] n

Checking for installable packages

Found zimbra-core 
Found zimbra-ldap 
Found zimbra-logger 
Found zimbra-mta 
Found zimbra-dnscache 
Found zimbra-snmp 
Found zimbra-store 
Found zimbra-apache 
Found zimbra-spell 
Found zimbra-memcached 
Found zimbra-proxy

Use Zimbra's package repository [Y] Y 
Importing Zimbra GPG key 
Configuring package repository 
The Zimbra Collaboration Server appears to already be installed. 
It can be upgraded with no effect on existing accounts, 
or the current installation can be completely removed prior 
to installation for a clean install.

Do you wish to upgrade? [Y]  Y 
Scanning for any new or additional packages available for installation 
Existing packages will be upgraded 
    Upgrading zimbra-core 
    Upgrading zimbra-ldap 
    Upgrading zimbra-logger 
    Upgrading zimbra-mta 
    Upgrading zimbra-dnscache 
    Upgrading zimbra-snmp 
    Upgrading zimbra-store 
    Upgrading zimbra-apache 
    Upgrading zimbra-spell 
    Upgrading zimbra-memcached 
    Upgrading zimbra-proxy 
Checking required space for zimbra-core 
Checking space for zimbra-store 
Checking required packages for zimbra-store 
zimbra-store package check complete.

Installing: 
    zimbra-core 
    zimbra-ldap 
    zimbra-logger 
    zimbra-mta 
    zimbra-dnscache 
    zimbra-snmp 
    zimbra-store 
    zimbra-apache 
    zimbra-spell 
    zimbra-memcached 
    zimbra-proxy

The system will be modified.  Continue? [N] Y 
Installing packages

zimbra-core will be downloaded. 
zimbra-ldap will be downloaded. 
zimbra-logger will be downloaded. 
zimbra-mta will be downloaded. 
zimbra-dnscache will be downloaded. 
zimbra-snmp will be downloaded. 
zimbra-store will be downloaded. 
zimbra-apache will be downloaded. 
zimbra-spell will be downloaded. 
zimbra-memcached will be downloaded. 
zimbra-proxy will be downloaded. 
Downloading packages. This will not modify the system. This may take some time. 
-----> on utilise maintenant un repository ce qui explique la relative petitesse de l'archive téléchargée. Le chargement des paquets nécessaires n'est pas des plus rapides et à des vitesses très irrégulières (de 40K/sec à 5M/sec et pourtant cela vient de cloudfront !) ... le message "This may take some time" est bien mérité ! 
------> un moment après : 
Downloading Remote package zimbra-memcached version 1.4.25-1zimbra8.7b1.14.04

Saving existing configuration file to /opt/zimbra/.saveconfig

Shutting down zimbra mail 
Removing existing packages

   zimbra-ldap...done 
   zimbra-logger...done 
   zimbra-mta...done 
   zimbra-dnscache...done 
   zimbra-snmp...done 
   zimbra-store...done 
   zimbra-spell...done 
   zimbra-memcached...done 
   zimbra-proxy...done 
   zimbra-apache...done 
   zimbra-core...done

Removing deployed webapp directories 
Local packages  zimbra-core zimbra-ldap zimbra-logger zimbra-mta zimbra-dnscache zimbra-snmp zimbra-store zimbra-apache zimbra-spell zimbra-proxy selected for installation 
Monitor /tmp/install.log.pl8L1ggo for package installation progress 
Remote package installation started 
Installing zimbra-core-components  zimbra-ldap-components zimbra-mta-components zimbra-dnscache-components zimbra-snmp-components zimbra-store-components zimbra-apache-components zimbra-spell-components zimbra-memcached zimbra-proxy-components.... 
----------> le chargement des composants semble se faire avec  "apt-get" et "dpkg" mais on ne voit rien sur la console. 
-----------> 
done 
Local package installation started 
Installing  zimbra-core zimbra-ldap zimbra-logger zimbra-mta zimbra-dnscache zimbra-snmp zimbra-store zimbra-apache zimbra-spell zimbra-proxy... 
done 
Local package installation started 
Installing  zimbra-core zimbra-ldap zimbra-logger zimbra-mta zimbra-dnscache zimbra-snmp zimbra-store zimbra-apache zimbra-spell zimbra-proxy...done 
done

Setting defaults from saved config in /opt/zimbra/.saveconfig/config.save 
   HOSTNAME=xxx-zimbra-xxx.jpp.fr 
   LDAPHOST=xxx-zimbra-xxx.jpp.fr 
   LDAPPORT=389 
   SNMPTRAPHOST=xxx-zimbra-xxx.jpp.fr 
   SMTPSOURCE=le_compte_admin 
   SMTPDEST=le_compte_admin 
   SNMPNOTIFY=yes 
   SMTPNOTIFY=yes 
   LDAPROOTPW=* 
   LDAPZIMBRAPW=* 
   LDAPPOSTPW=* 
   LDAPREPPW=* 
   LDAPAMAVISPW=* 
   LDAPNGINXPW=* 
Restoring existing configuration file from /opt/zimbra/.saveconfig/localconfig.xml...done 
Operations logged to /tmp/zmsetup.20161111-193459.log 
Adding /opt/zimbra/conf/ca/ca.pem to cacerts 
Upgrading from 8.6.0_GA_1153 to 8.7.1_GA_1670 
Stopping zimbra services... 
Stopping zimbra services...done. 
This appears to be 8.6.0_GA 
Starting mysql...done. 
Checking ldap status...not running. 
Checking ldap status...not running. 
Starting ldap...done. 
Checking ldap status...already running. 
Schema upgrade required from version 103 to 107. 
Running /opt/zimbra/libexec/scripts/migrate20150401-ZmgDevices.pl 
Fri Nov 11 19:35:45 2016: Verified schema version 103. 
Fri Nov 11 19:35:45 2016: Verified schema version 103. 
Fri Nov 11 19:35:45 2016: Updating DB schema version from 103 to 104. 
Running /opt/zimbra/libexec/scripts/migrate20150515-DataSourcePurgeTables.pl 
Fri Nov 11 19:35:48 2016: Verified schema version 104. 
Fri Nov 11 19:36:11 2016: Verified schema version 104. 
Fri Nov 11 19:36:11 2016: Updating DB schema version from 104 to 105. 
Running /opt/zimbra/libexec/scripts/migrate20150623-ZmgDevices.pl 
Fri Nov 11 19:36:14 2016: Verified schema version 105. 
Fri Nov 11 19:36:14 2016: Verified schema version 105. 
Fri Nov 11 19:36:14 2016: Updating DB schema version from 105 to 106. 
Running /opt/zimbra/libexec/scripts/migrate20150702-ZmgDevices.pl 
Fri Nov 11 19:36:17 2016: Verified schema version 106. 
Fri Nov 11 19:36:19 2016: Verified schema version 106. 
Fri Nov 11 19:36:19 2016: Updating DB schema version from 106 to 107. 
Stopping mysql... 
Updating from 8.6.1_GA 
Updating from 8.7.0_BETA1 
Updating mailboxd_java_options to remove deprecated PermSize and MaxPermSize java options. 
Updating from 8.7.0_BETA2 
Updating from 8.7.0_RC1 
Updating from 8.7.0_RC2 
Updating from 8.7.0_GA 
Updating from 8.7.1_GA 
Updating global config and COS's with attributes introduced after 8.6.0_GA...done. 
Stopping ldap...done. 
Upgrade complete.

Checking ldap status....not running. 
Starting ldap...done. 
Setting defaults...done. 
Setting defaults from existing config... 
Checking for port conflicts 
Setting defaults from ldap...done. 
Saving config in /opt/zimbra/config.12373...done. 
Operations logged to /tmp/zmsetup.20161111-193459.log 
Setting local config values...done. 
Initializing core config...Setting up CA...done. 
Deploying CA to /opt/zimbra/conf/ca ...done. 
Setting replication password...done. 
Setting Postfix password...done. 
Setting amavis password...done. 
Setting nginx password...done. 
Creating server entry for xxx-zimbra-xxx.jpp.fr...already exists. 
Setting Zimbra IP Mode...done. 
Saving SSL Certificate in ldap...done. 
Setting spell check URL...done. 
Setting service ports on xxx-zimbra-xxx.jpp.fr...done. 
Setting Keyboard Shortcut Preferences...done. 
Setting zimbraFeatureTasksEnabled=TRUE...done. 
Setting Master DNS IP address(es)...done. 
Setting DNS cache tcp lookup preference...done. 
Setting DNS cache udp lookup preference...done. 
Setting DNS tcp upstream preference...done. 
Setting TimeZone Preference...done. 
Initializing mta config...done. 
Setting services on xxx-zimbra-xxx.jpp.fr...done. 
Adding xxx-zimbra-xxx.jpp.fr to zimbraMailHostPool in default COS...done. 
Creating user spam@jpp.fr...already exists. 
Creating user ham@jpp.fr...already exists. 
Creating user virus-quarantine.6ec8zwetz@jpp.fr...already exists. 
Setting spam training and Anti-virus quarantine accounts...done. 
Configuring SNMP...done. 
Setting up syslog.conf...done. 
Starting servers... 
done. 
Checking for deprecated zimlets...done. 
Checking for network zimlets in LDAP...done. 
Removing network zimlets... 
Finished removing network zimlets. 
Installing common zimlets... 
    com_zimbra_phone...done. 
    com_zimbra_tooltip...done. 
    com_zimbra_viewmail...done. 
    com_zimbra_attachmail...done. 
    com_zimbra_adminversioncheck...done. 
    com_zimbra_email...done. 
    com_zimbra_ymemoticons...done. 
    com_zimbra_webex...done. 
    com_zimbra_url...done. 
    com_zimbra_proxy_config...done. 
    com_zimbra_clientuploader...done. 
    com_zimbra_attachcontacts...done. 
    com_zimbra_srchhighlighter...done. 
    com_zimbra_mailarchive...done. 
    com_zimbra_cert_manager...done. 
    com_zimbra_date...done. 
    com_zimbra_bulkprovision...done. 
Finished installing common zimlets. 
Getting list of all zimlets...done. 
Updating non-standard zimlets... 
Finished updating non-standard zimlets. 
Restarting mailboxd...done. 
Skipping creation of default domain GAL sync account - existing install detected.

You have the option of notifying Zimbra of your installation. 
This helps us to track the uptake of the Zimbra Collaboration Server. 
The only information that will be transmitted is: 
    The VERSION of zcs installed (8.7.1_GA_1670_UBUNTU14_64) 
    The ADMIN EMAIL ADDRESS created (admin@jpp.fr)

Notify Zimbra of your installation? [Yes] Notifying Zimbra of installation via http://www.zimbra.com/cgi-bin/notify.cgi?VER=8.7.1_GA_1670_UBUNTU14_64&MAIL=adm…

Notification complete

Setting up zimbra crontab...done.

Moving /tmp/zmsetup.20161111-193459.log to /opt/zimbra/log 
Configuration complete - press return to exit  

Et maintenant vérifions si cela fonctionne ... OUIIII, le Webmail est accessible et on peut envoyer des messages .... et ils arrivent. C'est ce que l'on demande à un système de mail, même en version 8.7.

La migration de 8.6 à 8.7 est un succès, ce qui reste dans la norme des paquets Zimbra. 
 

Zimbra : migrer 8.7 à 8.7.5

Zimbra : migrer 8.7 à 8.7.5 jpp

J'ai reçu un mail m'indiquant qu'une nouvelle version de ZIMBRA, la 8.7.5, était disponible. 
Après récupération de l'archive adéquate (ici pour Ubuntu LTS 14.04) et un "tar xvf" dans un "petit répertoire tranquille" on entre dans le vif du sujet et les "README" ne signalent pas de problème particulier. 
Premièrement : sauvegarder la Machine virtuelle qui supporte Zimbra, on stoppe la machine puis un script fait de "dd | pv | lbzip2 -n 2" permet de sauvegarder rapidement le disque virtuel qui supporte l'installation (sur un VG LVM bien sûr). 
Ensuite on peut, en sécurité, attaquer le vif du sujet. 
On va dans le répertoire d'installation et : 
./install.sh 
..... pour le détail du listing voir le lien en base de page 
Cela s'est bien passé tout semble avoir redémarré dans l'ordre et dans la discipline et je me dépêche de me connecter sur le Webmail pour vérifier si tous va vraiment bien. La connexion est OK mais tout se fige après quelques secondes. Je précipite sur le teminale relié à cette MV et je constate que Zimbra a tout simplement redémarré ... 
Tout est OK, après quelques instants l'accès à l'interface WEB est correect. 
A priori pas de bouleversements dans l'interface qui reste agréable, mais une version "8.7.5 n'est pas une version majeure et je ne m'attendais pas à un bouleversement fonctionnel et graphique. 
Après quelques jours le fonctionnement est normal, sans problème quoi !

Accéder à la trace d'exécution.

J'ai ensuite remarqué de multiples messages d'erreur dans le fichier "/opt/zimbra/log/mysql_error.log" :

Error: Fetch of persistent statistics requested for table "mboxgroup4"."tagged_item" but the required system tables mysql.innodb_table_stats and mysql.innodb_index_stats are not present or have unexpected structure. Using transient stats instead. 
 InnoDB: Error: Column last_update in table "mysql"."innodb_table_stats" is INT UNSIGNED NOT NULL but should be BINARY(4) NOT NULL (type mismatch).

Ces erreurs sont provoquées par un problème lors de "mysql_upgrade", c'est assez facile à réparer : 
Récupérer le mot de passe de Mysql/root (exécuter avec le user "zimbra" : 
zmlocalconfig -s | grep mysql | grep password 
Noter le mot de passe et lancer la commande : 
/opt/zimbra/common/bin/mysql_upgrade -u root -p --host=127.0.0.1 --port=7306 
A l'invite "Password:" donnez le mot de passe noté ci-dessus, la commande "crache" un certain nombre de lignes ... et fait le travail. 
PS: 
Je n'ai pas pu voir si cela était du au passage de 8.6 à 8.7 ou de 8.7 à 8.7.5.

Zimbra : migrer 8.7.5 à 8.8.5

Zimbra : migrer 8.7.5 à 8.8.5 jpp

Tiens, j'ai reçu un mail de Zimbra me signalant la présence d'une nouvelle version 8.8.5 et conseillant d'effectuer la mise à jour. 
D'abord  : sauvegarde du disque de la Machine Virtuelle, dd du disque brut + gzip vers un répertoire de sauvegarde, quand même #10Go. 
Après téléchargement de la version pour Ubuntu 14.04 et détarage dans un répertoire de travail on lance l'inévitable "./install.sh". 
La procédure se déroule rapidement et régulièrement ... (voir la trace complète ici). 
A la fin de l'installation tous les services redémarrent. 
Un contrôle rapide montre que tous les processus habituels sont là (ps -ef | grep zimbra) et que leur nombre est "normal" (63 processus pour moi).

Connexion client WEB --> OK
Envoi d'un message   --> OK, et le message arrive à destination !
Connexion Admin  WEB --> OK, affiche version 8.8.5 
Tous les comptes sont là, 
aucune anomalie signalée dans les différents écrans.
Accès depuis Evolution --> OK, tous les messages sont récupérés

Comme d'habitude la mise à jour s'est effectuée en douceur et sans anicroche.

8.7.5 vers 8.8.5 trace

8.7.5 vers 8.8.5 trace jpp

./install.sh

Operations logged to /tmp/install.log.B9FZcmpn 
Checking for existing installation... 
    zimbra-chat...NOT FOUND 
    zimbra-drive...NOT FOUND 
    zimbra-imapd...NOT FOUND 
    zimbra-network-modules-ng...NOT FOUND 
    zimbra-ldap...FOUND zimbra-ldap-8.7.5.GA.1764.UBUNTU14.64 
    zimbra-logger...FOUND zimbra-logger-8.7.5.GA.1764.UBUNTU14.64 
    zimbra-mta...FOUND zimbra-mta-8.7.5.GA.1764.UBUNTU14.64 
    zimbra-dnscache...FOUND zimbra-dnscache-8.7.5.GA.1764.UBUNTU14.64 
    zimbra-snmp...FOUND zimbra-snmp-8.7.5.GA.1764.UBUNTU14.64 
    zimbra-store...FOUND zimbra-store-8.7.5.GA.1764.UBUNTU14.64 
    zimbra-apache...FOUND zimbra-apache-8.7.5.GA.1764.UBUNTU14.64 
    zimbra-spell...FOUND zimbra-spell-8.7.5.GA.1764.UBUNTU14.64 
    zimbra-convertd...NOT FOUND 
    zimbra-memcached...FOUND zimbra-memcached-1:1.4.37-2.u14 
    zimbra-proxy...FOUND zimbra-proxy-8.7.5.GA.1764.UBUNTU14.64 
    zimbra-archiving...NOT FOUND 
    zimbra-core...FOUND zimbra-core-8.7.5.GA.1764.UBUNTU14.64 
ZCS upgrade from 8.7.5 to 8.8.5 will be performed. 
Validating ldap configuration 
LDAP validation succeeded.  Continuing. 
---------------------------------------------------------------------- 
PLEASE READ THIS AGREEMENT CAREFULLY BEFORE USING THE SOFTWARE. 
SYNACOR, INC. ("SYNACOR") WILL ONLY LICENSE THIS SOFTWARE TO YOU IF YOU 
FIRST ACCEPT THE TERMS OF THIS AGREEMENT. BY DOWNLOADING OR INSTALLING 
THE SOFTWARE, OR USING THE PRODUCT, YOU ARE CONSENTING TO BE BOUND BY 
THIS AGREEMENT. IF YOU DO NOT AGREE TO ALL OF THE TERMS OF THIS 
AGREEMENT, THEN DO NOT DOWNLOAD, INSTALL OR USE THE PRODUCT.

License Terms for this Zimbra Collaboration Suite Software: 
https://www.zimbra.com/license/zimbra-public-eula-2-6.html 
---------------------------------------------------------------------- 
Do you agree with the terms of the software license agreement? [N]

"Y" évident !

Checking current number of databases...

Do you want to verify message store database integrity? [Y] y 
Verifying integrity of message store databases.  This may take a while. 
mysqld is alive 
No errors found


Use Zimbra's package repository [Y] 
====> Y évidemment 
Configuring package repository

Checking for installable packages

Found zimbra-core (local) 
Found zimbra-ldap (local) 
Found zimbra-logger (local) 
Found zimbra-mta (local) 
Found zimbra-dnscache (local) 
Found zimbra-snmp (local) 
Found zimbra-store (local) 
Found zimbra-apache (local) 
Found zimbra-spell (local) 
Found zimbra-memcached (repo) 
Found zimbra-proxy (local) 
Found zimbra-chat (repo) 
Found zimbra-drive (repo) 
Found zimbra-imapd (local)


The Zimbra Collaboration Server appears to already be installed. 
It can be upgraded with no effect on existing accounts, 
or the current installation can be completely removed prior 
to installation for a clean install.

Do you wish to upgrade? [Y]

On est là pour çà ! "Y"

Checking current number of databases...

Do you want to verify message store database integrity? [Y] y 
Verifying integrity of message store databases.  This may take a while. 
mysqld is alive 
No errors found

Use Zimbra's package repository [Y]

On va accepter "Y".

Configuring package repository

Checking for installable packages

Found zimbra-core (local) 
Found zimbra-ldap (local) 
Found zimbra-logger (local) 
Found zimbra-mta (local) 
Found zimbra-dnscache (local) 
Found zimbra-snmp (local) 
Found zimbra-store (local) 
Found zimbra-apache (local) 
Found zimbra-spell (local) 
Found zimbra-memcached (repo) 
Found zimbra-proxy (local) 
Found zimbra-chat (repo) 
Found zimbra-drive (repo) 
Found zimbra-imapd (local)


The Zimbra Collaboration Server appears to already be installed. 
It can be upgraded with no effect on existing accounts, 
or the current installation can be completely removed prior 
to installation for a clean install.

Do you wish to upgrade? [Y]

Pourquoi pas ? "Y"

Scanning for any new or additional packages available for installation 
Existing packages will be upgraded 
    Upgrading zimbra-core 
    Upgrading zimbra-ldap 
    Upgrading zimbra-logger 
    Upgrading zimbra-mta 
    Upgrading zimbra-dnscache 
    Upgrading zimbra-snmp 
    Upgrading zimbra-store 
    Upgrading zimbra-apache 
    Upgrading zimbra-spell 
    Upgrading zimbra-memcached 
    Upgrading zimbra-proxy

Install zimbra-chat [N] 
======> N 
Install zimbra-drive [N] 
======> N 
Install zimbra-imapd [N] 
======> N 
Checking required space for zimbra-core 
Checking space for zimbra-store 
Checking required packages for zimbra-store 
zimbra-store package check complete.

Installing: 
    zimbra-core 
    zimbra-ldap 
    zimbra-logger 
    zimbra-mta 
    zimbra-dnscache 
    zimbra-snmp 
    zimbra-store 
    zimbra-apache 
    zimbra-spell 
    zimbra-memcached 
    zimbra-proxy

The system will be modified.  Continue? [N]

"Y" bien sûr !

Beginning Installation - see /tmp/install.log.B9FZcmpn for details...

zimbra-core-components will be downloaded and installed. 
zimbra-common-mbox-db will be installed. 
zimbra-common-mbox-conf-attrs will be installed. 
zimbra-common-mbox-conf-msgs will be installed. 
zimbra-common-mbox-conf-rights will be installed. 
zimbra-common-mbox-conf will be installed. 
zimbra-common-mbox-docs will be installed. 
zimbra-common-mbox-native-lib will be installed. 
zimbra-timezone-data will be installed. 
zimbra-core will be installed. 
zimbra-ldap-components will be downloaded and installed. 
zimbra-ldap will be installed. 
zimbra-logger will be installed. 
zimbra-mta-components will be downloaded and installed. 
zimbra-mta will be installed. 
zimbra-dnscache-components will be downloaded and installed. 
zimbra-dnscache will be installed. 
zimbra-snmp-components will be downloaded and installed. 
zimbra-snmp will be installed. 
zimbra-store-components will be downloaded and installed. 
zimbra-jetty-distribution will be downloaded and installed. 
zimbra-mbox-war will be installed. 
zimbra-mbox-conf will be installed. 
zimbra-mbox-service will be installed. 
zimbra-store will be installed. 
zimbra-apache-components will be downloaded and installed. 
zimbra-apache will be installed. 
 zimbra-spell-components will be downloaded and installed. 
 zimbra-spell will be installed. 
 zimbra-memcached will be downloaded and installed. 
 zimbra-proxy-components will be downloaded and installed. 
 zimbra-proxy will be installed.

Downloading packages (11): 
   zimbra-core-components 
   zimbra-ldap-components 
   zimbra-mta-components 
   zimbra-dnscache-components 
   zimbra-snmp-components 
   zimbra-store-components 
   zimbra-jetty-distribution 
   zimbra-apache-components 
   zimbra-spell-components 
   zimbra-memcached 
   zimbra-proxy-components 
      ...done

Saving existing configuration file to /opt/zimbra/.saveconfig

Shutting down zimbra mail 
Backing up the ldap database...done. 
Upgrading the remote packages

Removing deployed webapp directories

Installing repo packages (11): 
   zimbra-core-components 
   zimbra-ldap-components 
   zimbra-mta-components 
   zimbra-dnscache-components 
   zimbra-snmp-components 
   zimbra-store-components 
   zimbra-jetty-distribution 
   zimbra-apache-components 
   zimbra-spell-components 
   zimbra-memcached 
   zimbra-proxy-components 
      ...done

Installing local packages (21): 
   zimbra-common-mbox-db 
   zimbra-common-mbox-conf-attrs 
   zimbra-common-mbox-conf-msgs 
   zimbra-common-mbox-conf-rights 
   zimbra-common-mbox-conf 
   zimbra-common-mbox-docs 
   zimbra-common-mbox-native-lib 
   zimbra-timezone-data 
   zimbra-core 
   zimbra-ldap 
   zimbra-logger 
   zimbra-mta 
   zimbra-dnscache 
   zimbra-snmp 
   zimbra-mbox-war 
   zimbra-mbox-conf 
   zimbra-mbox-service 
   zimbra-store 
   zimbra-apache 
   zimbra-spell 
   zimbra-proxy 
      ... 
Running Post Installation Configuration:

Setting defaults from saved config in /opt/zimbra/.saveconfig/config.save 
   HOSTNAME=ubu-zimbra.* 
   LDAPHOST=ubu-zimbra.* 
   LDAPPORT=389 
   SNMPTRAPHOST=ubu-zimbra.* 
   SMTPSOURCE=zadmin@* 
   SMTPDEST=zadmin@* 
   SNMPNOTIFY=yes 
   SMTPNOTIFY=yes 
   LDAPROOTPW=* 
   LDAPZIMBRAPW=* 
   LDAPPOSTPW=* 
   LDAPREPPW=* 
   LDAPAMAVISPW=* 
   LDAPNGINXPW=* 
Restoring existing configuration file from /opt/zimbra/.saveconfig/localconfig.xml...done 
Operations logged to /tmp/zmsetup.20171214-132031.log 
Adding /opt/zimbra/conf/ca/ca.pem to cacerts 
Upgrading from 8.7.5_GA_1764 to 8.8.5_GA_1894 
Stopping zimbra services...done. 
This appears to be 8.7.5_GA 
Starting mysql... 
Checking ldap status...not running. 
Starting ldap...done. 
Checking ldap status...already running. 
Running mysql_upgrade...done. 
Schema upgrade required from version 107 to 108. 
Running /opt/zimbra/libexec/scripts/migrate20170301-ZimbraChat.pl 
Thu Dec 14 13:21:06 2017: Verified schema version 107. 
Thu Dec 14 13:21:07 2017: Verified schema version 107. 
Thu Dec 14 13:21:07 2017: Updating DB schema version from 107 to 108. 
Stopping mysql... 
Thu Dec 14 13:21:07 2017: Updating DB schema version from 107 to 108. 
Stopping mysql...done. 
Updating global config and COS's with attributes introduced after 8.7.5_GA...done. 
Stopping ldap...done. 
Upgrade complete.

Checking ldap status....not running. 
Starting ldap...done 
Setting defaults...done. 
Setting defaults from existing config...done. 
Checking for port conflicts 
Setting defaults from ldap...done. 
Saving config in /opt/zimbra/config.24960...done. 
Operations logged to /tmp/zmsetup.20171214-132031.log 
Setting local config values...done. 
Initializing core config...Setting up CA...done. 
Deploying CA to /opt/zimbra/conf/ca ...done. 
Setting replication password...done. 
Setting Postfix password...done. 
Setting amavis password...done. 
Setting nginx password...done. 
Creating server entry for ubu-zimbra.*...already exists. 
Setting Zimbra IP Mode...done. 
Saving SSL Certificate in ldap...done. 
Setting spell check URL...done. 
Setting service ports on ubu-zimbra.*...done. 
Setting Keyboard Shortcut Preferences...done. 
Setting zimbraFeatureTasksEnabled=TRUE...done. 
Setting zimbraFeatureBriefcasesEnabled=TRUE...done. 
Saving SSL Certificate in ldap...done. 
Setting spell check URL...done. 
Setting service ports on ubu-zimbra.*...done. 
Setting Keyboard Shortcut Preferences...done. 
Setting zimbraFeatureTasksEnabled=TRUE...done. 
Setting zimbraFeatureBriefcasesEnabled=TRUE...done. 
Setting DNS cache tcp lookup preference...done. 
Setting DNS cache udp lookup preference...done. 
Setting DNS tcp upstream preference...done. 
Setting TimeZone Preference...done. 
Initializing mta config...done. 
Setting services on ubu-zimbra.*...done. 
aAdding ubu-zimbra.* to zimbraMailHostPool in default COS...done. 
Creating user spam@*...already exists. 
Creating user ham@*...already exists. 
Creating user virus-quarantine.6ec8zwetz@*... 
Setting DNS cache tcp lookup preference...done. 
Setting DNS cache udp lookup preference...done. 
Setting DNS tcp upstream preference...done. 
Setting TimeZone Preference...done. 
Initializing mta config...done. 
Setting services on ubu-zimbra.*...done. 
aAdding ubu-zimbra.* to zimbraMailHostPool in default COS...done. 
Creating user spam@*...already exists. 
Creating user ham@*...already exists. 
Creating user virus-quarantine.6ec8zwetz@*... 
aSetting DNS cache tcp lookup preference...done. 
Setting DNS cache udp lookup preference...done. 
Setting DNS tcp upstream preference...done. 
Setting TimeZone Preference...done. 
Initializing mta config...done. 
Setting services on ubu-zimbra.*...done. 
aAdding ubu-zimbra.* to zimbraMailHostPool in default COS...done. 
Creating user spam@*...already exists. 
Creating user ham@*...already exists. 
Creating user virus-quarantine.6ec8zwetz@*...already exists. 
Setting spam training and Anti-virus quarantine accounts...done. 
^[Configuring SNMP...done. 
Setting up syslog.conf...done. 
Starting servers... 
Setting services on ubu-zimbra.*...done. 
aAdding ubu-zimbra.* to zimbraMailHostPool in default COS...done. 
Creating user spam@*...already exists. 
Creating user ham@*...already exists. 
Creating user virus-quarantine.6ec8zwetz@*...already exists. 
Setting spam training and Anti-virus quarantine accounts...done. 
^[Configuring SNMP...done. 
Setting up syslog.conf...done. 
Starting servers... 
Checking for network zimlets in LDAP...done. 
Removing network zimlets... 
Finished removing network zimlets. 
Installing common zimlets... 
    com_zimbra_phone...done. 
    com_zimbra_tooltip...done. 
    com_zimbra_viewmail...done. 
    com_zimbra_attachmail...done. 
    com_zimbra_adminversioncheck...done. 
    com_zimbra_email...done. 
    com_zimbra_ymemoticons...done. 
    com_zimbra_webex...done. 
    com_zimbra_url...done. 
    com_zimbra_proxy_config...done. 
    com_zimbra_clientuploader...done. 
    com_zimbra_attachcontacts...done. 
    com_zimbra_srchhighlighter...done. 
    com_zimbra_mailarchive...done. 
    com_zimbra_cert_manager...done. 
    com_zimbra_date...done. 
    com_zimbra_bulkprovision...done. 
Finished installing common zimlets. 
Getting list of all zimlets...done. 
Updating non-standard zimlets... 
Finished updating non-standard zimlets. 
Restarting mailboxd... 
Skipping creation of default domain GAL sync account - existing install detected.

You have the option of notifying Zimbra of your installation. 
This helps us to track the uptake of the Zimbra Collaboration Server. 
The only information that will be transmitted is: 
    The VERSION of zcs installed (8.8.5_GA_1894_UBUNTU14_64) 
    The ADMIN EMAIL ADDRESS created (admin@*)

Notify Zimbra of your installation? [Yes]

Pourquoi pas ? Ils l'ont mérité :

Notification complete

Setting up zimbra crontab...done. 
Moving /tmp/zmsetup.20171214-132031.log to /opt/zimbra/log 
Configuration complete - press return to exit

Zimbra : migration 8.8.5 à 8.8.6

Zimbra : migration 8.8.5 à 8.8.6 jpp

Je ne cite cette migration mineure que parcequ'elle apporte une fonctionnalité supplémentaire, au moins que je n'avais par remarquée auparavant ! 
Cette nouvelle fonction proposée est un "chat" qui vous ouvre un petit écran et vous permet d'échanger avec un autre correspondant connecté sur le service.

En ce qui concerne la trace d'installation elle est accessible ici.

Voyons un peu à quoi ressemble ce "chat". 
Lors de la connexion à votr compte une petite fenêtre s'ouvre, par défaut en bas à droite, et présente les utilisateurs connectés. 
 

Fenetre de sélection des utilisateurs pour le chat.
Fenêtre sélection des utilisateurs.

Un clic sur l'utilisateur désiré déclenche l'ouverture d'une deuxième fenêtre destinée au "chat" avec cette personne. 
 

Ouverture fenetre de discussion
La fenêtre de "chat" est ouverte, il peut y en avoir plusieurs.

Il est à noter qu'un dossier supplémentaire "Discussions" est ouvert et qu'il permet de conserver ou d'effacer les échanges.

VM Ubuntu 16.04 + letsencrypt

VM Ubuntu 16.04 + letsencrypt jpp

Ma version de Ubuntu étant en fin de vie en Avril 2019 j'ai voulu passer sur une version plus récente. Dommage il n'existe pas de paquets Zimbra pour la 18.04 qui date pourtant déjà de près d'un an. 
J'ai donc installé le système dans une nouvelle MV sur une machine de test, la 16.04.5 s'installe sans problèmes, la version 8.8.11 de Zimbra suit le même chemin sans plus de problèmes.

Ne pas oublier de sauvegarder le contenu des comptes ....

L'installation étant très proche de celle des version précédentes je ne vous dispense de la trace d'installation, vous pouvez accéder ici à celle de la version 8.7.5 qui est très semblable. 
Après création des comptes et alias nécessaires dans la nouvelle machine l'export des comptes de l'ancienne version se passe bien, à exporter un par un, et l'import dans la nouvelle version est impeccable. 
Il me faut maintenant récupérer un certificat Letsencrypt pour cette nouvelle machine. J'ai d'abord recopié le répertoire /etc/letsencrypt dans la nouvelle machine j'ai tenté d'utiliser le script "certbot_zimbra.sh" que j'utilisais sur l'ancienne version. Mais le script demande la présence du script "certbot" qui a été remplacé par "letsencrypt". 
J'ai pu renouveler mon certificat sans difficultés avec le nouveau script "letsencrypt" en mode "standalone" après avois stoppé Zimbra (pour éviter les conflits de ports). 
Note octobre 2019 : 
Le script "certbot" existe de nouveau et comme j'ai déjà un certificat son utilisation est très simple :

  1. Stopper zimbra (éviter les conflits de ports)
  2. certbot certonly --standalone -d Votre-nom-de-domaine
  3. Le tour est joué, votre certificat est à jour, il ne resta plus qu'à le faire "avaler" à Zimbra.


J'ai créé, comme recommandé un répertoire /opt/zimbra/ssl/letsencrypt dans lequel j'ai recopié les certificats puis j'ai tenté d'utiliser "zmcertmgr" ce qui ma donné une erreur de validation. 
J'ai du :

  1. Recopier la clé "privkey.pem" en écrasant le fichier de destination 
    cd /etc/letsencrypt/live/le_nom_du_domaine 
    cp privkey.pem /opt/zimbra/ssl/zimbra/commercial/commercial.key
  2. Depuis le même répertoire /etc/letsencrypt/live/le_nom_du_domaine copier le tout  
    cp *.pem /opt/zimbra/ssl/letsencrypt
  3. Récupérer le "bon" certificat DSTRootCAX3.pem par exemple avec : 
    curl -s "https://crt.sh/?d=8395" >/opt/zimbra/ssl/letsencrypt/DST_Root_CA_X3.pem
  4. Ajouter ce certificat en fin du fichier "chain.pem" du répertoire /opt/zimbra/ssl/letsencrypt


On peut alors utiliser zmcertmgr "normalement" : 
su - zimbra 
cd /opt/zimbra/ssl/letsencrypt 
zmcertmgr verifycrt comm privkey.pem cert.pem chain.pem 
** Verifying 'cert.pem' against 'privkey.pem' 
Certificate 'cert.pem' and private key 'privkey.pem' match. 
** Verifying 'cert.pem' against 'chain.pem' 
Valid certificate chain: cert.pem: OK

On peut alors tenter, avec succès, l'opération suivante (toujours avec le user "zimbra") : 
cd /opt/zimbra/ssl/letsencrypt 
zmcertmgr deploycrt comm cert.pem chain.pem 
Cette commande est très bavarde mais finit par avouer (sans autre torture) : 
** Removing /opt/zimbra/conf/ca/ca.pem 
** Removing /opt/zimbra/conf/ca/ca.key 
** Removing /opt/zimbra/conf/ca/217a2bc3.0 
** Copying CA to /opt/zimbra/conf/ca 
** Copying '/opt/zimbra/ssl/zimbra/ca/ca.key' to '/opt/zimbra/conf/ca/ca.key' 
** Copying '/opt/zimbra/ssl/zimbra/ca/ca.pem' to '/opt/zimbra/conf/ca/ca.pem' 
** Creating CA hash symlink '2e5ac55d.0' -> 'ca.pem' 
** Creating /opt/zimbra/conf/ca/commercial_ca_1.crt 
** Creating CA hash symlink '4f06f81d.0' -> 'commercial_ca_1.crt' 
** Creating /opt/zimbra/conf/ca/commercial_ca_2.crt 
** Creating CA hash symlink '2e5ac55d.1' -> 'commercial_ca_2.crt'

Ensuite, après avoir redémarré Zimbra tout se passe bien, le certificat est bien installé, aucun navigateur ne se plaint lors de la connexion. 
Il ne reste plus qu'à restaurer les comptes .... qu'on a sauvegardé avant le début de l'opération.

Update version 8.8.8 à 8.8.15

Update version 8.8.8 à 8.8.15 jpp

Zimbra : Premier upgrade de version sur Ubuntu 16.04 : de 8.8.8 à 8.8.15.

Article très court, l'upgrade s'est fort bien passé, sans aucun point douteux. Les parties les plus longues sont; comme d'habitude, la sauvegarde préalable nécessaire pour assurer la sécurité et la sauvegarde après upgrade pour disposer d'un point de reprise "à jour".

La liste témoin du passage est disponible ici.

Après quelques jours de fonctionnement tout à l'air parfaitement en ordre.

Zimbra dans une MV

Zimbra dans une MV jpp

L'installation dans une Machine virtuelle (ici KVM) n'est pas une opération horriblement complexe, voir les articles sur KVM. 
Note août 2016 : un changement de machine physique a été réalisé simplement à l'aide de ce brave "dd" en copiant la partition de la machine d'origine vers une partition de même taille sur le nouveau serveur (core I5 série 5 au lieu d'un core i3 série 4). Le redémarrage a été instantané !

Note août 2021 : Encore un changement de machine physique, toujours avec "dd" suivi d'une ré-installation sur un Ubuntu un peu plus "à jour" 20.04 LTS sur un AMD Ryzen 5 3600 avec Debian 11.2 et reprise des données des comptes. 

Zimbra ne distribue plus de versions "Debianisées" et dans ce domaine se limite à Ubuntu, j'ai donc choisi une Ubuntu 14.04 LTS qui devrait me permettre quelques années de tranquillité. 
La Machine Virtuelle est créée sur un environnement Debian 8 soigneusement maintenu à jour (aujourd'hui en 8.5) et qui dispose de : 
CPU : Core I3 4130 à 3.4 Ghz (Core I5 à 3.4Ghz) 
RAM : 16Go 
Disques : deux disques d'environ 2To montés en RAID logiciel (miroir).

La machine virtuelle crée pour l'occasion dispose de : 
Une partition LVM de 68Go formatée comme suit : 
Périphérique Amorçage  Début         Fin      Blocs    Id. Système 
/dev/vda1   *   133218304   134215679      498688   83  Linux 
/dev/vda2            2048   117186559    58592256   83  Linux 
/dev/vda3       117186560   127672319     5242880   83  Linux 
/dev/vda4       127672320   133218303     2772992   82  partition d'échange Linux / Solaris

La partition "/dev/vda3" est gardée "en réserve" et n'est pas utilisée. 
Au niveau "machine"  1 CPU et 2560 Mo de mémoire. 
L'installation de Ubuntu 14.04 n'est pas détaillée ici, on n'installe que le minimum pour un serveur, tout le reste "vient" avec Zimbra. J'ai choisi la version 8.6, dernière version existante lors de l'installation.

J'ai créé "à la main" le user "zimbra" avec un répertoire home au "standard Zimbra" fixé à "/opt/zimbra" : 
chown root:zimbra /opt/zimbra 
chmod 775 /opt/zimbra

Cette installation est identique à celle réalisée directement sur un serveur sans KVM. 
Pré-requis : 
apt-get install pax sysstat sqlite3 unzip libperl5.18

Après décompression de l'archive du jour : 
"https://files.zimbra.com/downloads/8.6.0_GA/zcs-8.6.0_GA_1153.UBUNTU14_64.20141…" 
dans un répertoire tranquille on entre dans le vif du sujet. 
On se connecte en "root" dans le répertoire et on lance "install.sh" (Le listing est assez long mais comporte des éléments intéressants qui peuvent servir de référence) :

Operations logged to /tmp/install.log.26898 
Checking for existing installation... 
    zimbra-ldap...NOT FOUND 
    zimbra-logger...NOT FOUND 
    zimbra-mta...NOT FOUND 
    zimbra-dnscache...NOT FOUND 
    zimbra-snmp...NOT FOUND 
    zimbra-store...NOT FOUND 
    zimbra-apache...NOT FOUND 
    zimbra-spell...NOT FOUND 
    zimbra-convertd...NOT FOUND 
    zimbra-memcached...NOT FOUND 
    zimbra-proxy...NOT FOUND 
    zimbra-archiving...NOT FOUND 
    zimbra-core...NOT FOUND

PLEASE READ THIS AGREEMENT CAREFULLY BEFORE USING THE SOFTWARE. 
ZIMBRA, INC. ("ZIMBRA") WILL ONLY LICENSE THIS SOFTWARE TO YOU IF YOU 
FIRST ACCEPT THE TERMS OF THIS AGREEMENT. BY DOWNLOADING OR INSTALLING 
THE SOFTWARE, OR USING THE PRODUCT, YOU ARE CONSENTING TO BE BOUND BY 
THIS AGREEMENT. IF YOU DO NOT AGREE TO ALL OF THE TERMS OF THIS 
AGREEMENT, THEN DO NOT DOWNLOAD, INSTALL OR USE THE PRODUCT. 
License Terms for the Zimbra Collaboration Suite: 
  http://www.zimbra.com/license/zimbra-public-eula-2-5.html

Do you agree with the terms of the software license agreement? [N]

On réponds bien sûr "Yes" (en français dans le texte) !

Checking for prerequisites... 
     FOUND: NPTL 
     FOUND: netcat-openbsd-1.105-7ubuntu1 
     FOUND: sudo-1.8.9p5-1ubuntu1.1 
     FOUND: libidn11-1.28-1ubuntu2 
     FOUND: libpcre3-1:8.31-2ubuntu2 
     FOUND: libgmp10-2:5.1.3+dfsg-1ubuntu1 
     FOUND: libexpat1-2.1.0-4ubuntu1 
     FOUND: libstdc++6-4.8.2-19ubuntu1 
     FOUND: libperl5.18-5.18.2-2ubuntu1 
     FOUND: libaio1-0.3.109-4 
     FOUND: resolvconf-1.69ubuntu1.1 
     FOUND: unzip-6.0-9ubuntu1.3

Checking for suggested prerequisites... 
     FOUND: pax 
     FOUND: perl-5.18.2 
     FOUND: sysstat 
     FOUND: sqlite3 
Prerequisite check complete.

Checking for installable packages

Found zimbra-core 
Found zimbra-ldap 
Found zimbra-logger 
Found zimbra-mta 
Found zimbra-dnscache 
Found zimbra-snmp 
Found zimbra-store 
Found zimbra-apache 
Found zimbra-spell 
Found zimbra-memcached 
Found zimbra-proxy 
Select the packages to install 
Install zimbra-ldap [Y] Y 
Install zimbra-logger [Y] Y 
Install zimbra-mta [Y] Y 
Install zimbra-dnscache [Y] N       (Bind9 est déjà installé) 
Install zimbra-snmp [Y] Y 
Install zimbra-store [Y] Y 
Install zimbra-apache [Y] Y 
Install zimbra-spell [Y] Y 
Install zimbra-memcached [Y] N       (pas un "gros" site mail) 
Install zimbra-proxy [Y] N           (VM isolée ) 
Checking required space for zimbra-core 
Checking space for zimbra-store 
Checking required packages for zimbra-store 
zimbra-store package check complete.

Installing: 
    zimbra-core 
    zimbra-ldap 
    zimbra-logger 
    zimbra-mta 
    zimbra-snmp 
    zimbra-store 
    zimbra-apache 
    zimbra-spell

The system will be modified.  Continue? [N]  Y 
On réponds bien sûr "Yes" 
    zimbra-core......zimbra-core_8.6.0.GA.1153.UBUNTU14.64_amd64.deb...done 
    zimbra-ldap......zimbra-ldap_8.6.0.GA.1153.UBUNTU14.64_amd64.deb...done 
    zimbra-logger......zimbra-logger_8.6.0.GA.1153.UBUNTU14.64_amd64.deb...done 
    zimbra-mta......zimbra-mta_8.6.0.GA.1153.UBUNTU14.64_amd64.deb...done 
    zimbra-snmp......zimbra-snmp_8.6.0.GA.1153.UBUNTU14.64_amd64.deb...done 
    zimbra-store......zimbra-store_8.6.0.GA.1153.UBUNTU14.64_amd64.deb...done 
    zimbra-apache......zimbra-apache_8.6.0.GA.1153.UBUNTU14.64_amd64.deb...done 
    zimbra-spell......zimbra-spell_8.6.0.GA.1153.UBUNTU14.64_amd64.deb...done 
Operations logged to /tmp/zmsetup06102015-144332.log 
Installing LDAP configuration database...done. 
Setting defaults...

DNS ERROR resolving MX for mon-serveur.xxxx 
It is suggested that the domain name have an MX record configured in DNS 
Change domain name? [Yes]   
C'est une machine provisoire, ici je réponds "No" pour ne pas contrarier la machine de production.

Checking for port conflicts 
Main menu 
   1) Common Configuration:                                                  
   2) zimbra-ldap:                             Enabled                      
   3) zimbra-logger:                           Enabled                      
   4) zimbra-mta:                              Enabled                      
   5) zimbra-snmp:                             Enabled                        
   6) zimbra-store:                            Enabled                               +Create Admin User:                    yes                                   
+Admin user to create:                 admin@mon-serveur.xxxx           
******* +Admin Password                        UNSET                                 +Anti-virus quarantine user:           virus-quarantine.gw4z3h_p@mon-serveur.xxxx 
        +Enable automated spam training:       yes                                   +Spam training user:                   spam.mfa5p1m9eb@mon-serveur.xxxx 
        +Non-spam(Ham) training user:          ham.j7vinxgs@mon-serveur.xxxx    
        +SMTP host:                            mon-serveur.xxxx                 
        +Web server HTTP port:                 80                                   +Web server HTTPS port:         443                                  
+Web server mode:          https                                
+IMAP server port:         143                                  
+IMAP server SSL port:     993                                  
+POP server port:          110                                  
+POP server SSL port:      995                                  
+Use spell check server:   yes                                  
+Spell server URL:                     http://mon-serveur.xxxx:7780/aspell.php 
+Configure for use with mail proxy:    FALSE                                
+Configure for use with web proxy:     FALSE                                
+Enable version update checks:         TRUE                                 
+Enable version update notifications:  TRUE                                  
+Version update notification email:    admin@mon-serveur.xxxx           
+Version update source email:          admin@mon-serveur.xxxx           
+Install mailstore (service webapp):   yes                                  
+Install UI (zimbra,zimbraAdmin webapps): yes                           

  7) zimbra-spell:                            Enabled                        
  8) Default Class of Service Configuration:                                  
  s) Save config to file                                                   
  x) Expand menu                                                              
  q) Quit                          

La seule chose importante qui reste à faire est de fixer un mot de passe administrateur et de changer le nom du compte d'administration.

*** CONFIGURATION COMPLETE - press 'a' to apply 
Select from menu, or press 'a' to apply config (? - help) a 
Save configuration data to a file? [Yes] Yes 
Save config in file: [/opt/zimbra/config.2021] 
The system will be modified - continue? [No] 
On n'est pas ici pour annuller --> "Yes" 
Operations logged to /tmp/zmsetup06102015-144332.log 
Setting local config values...done. 
Initializing core config...Setting up CA...done. 
Deploying CA to /opt/zimbra/conf/ca ...done. 
Creating SSL zimbra-store certificate...done. 
Creating new zimbra-ldap SSL certificate...done. 
Creating new zimbra-mta SSL certificate... 
Installing mailboxd SSL certificates...done. 
Installing MTA SSL certificates...done. 
Installing LDAP SSL certificate...done. 
Initializing ldap... 
Setting replication password...done. 
Setting Postfix password...done. 
Setting amavis password...done. 
Setting nginx password...done. 
Setting BES searcher  password...done. 
Creating server entry for mon-serveur.xxxx... 
Setting replication password...done. 
Setting Postfix password...done. 
Setting amavis password...done. 
Setting nginx password...done. 
Setting BES searcher  password...done. 
Creating server entry for mon-serveur.xxxx... 
Creating server entry for mon-serveur.xxxx...done. 
Setting Zimbra IP Mode...done. 
Saving CA in ldap ...done. 
Saving SSL Certificate in ldap ...done. 
Setting spell check URL...done. 
Setting service ports on mon-serveur.xxxx...done. 
Setting zimbraFeatureTasksEnabled=TRUE...done. 
Setting zimbraFeatureBriefcasesEnabled=TRUE...done. 
Setting TimeZone Preference...done. 
Initializing mta config...done. 
Setting services on mon-serveur.xxxx...done. 
Adding mon-serveur.xxxx to zimbraMailHostPool in default COS...done. 
Creating domain mon-serveur.xxxx...done. 
Setting default domain name...done. 
Creating domain mon-serveur.xxxx...already exists. 
Creating admin account mon_admin@mon-serveur.xxxx...done. 
Creating root alias...done. 
Creating postmaster alias...done. 
Creating user spam.mfa5p1m9eb@mon-serveur.xxxx...done 
Creating user ham.j7vinxgs@mon-serveur.xxxx...done. 
Creating user virus-quarantine.gw4z3h_p@mon-serveur.xxxx...done. 
Setting spam training and Anti-virus quarantine accounts...done. 
Initializing store sql database... 
Setting zimbraSmtpHostname for mon-serveur.xxxx...done. 
Configuring SNMP...done. 
Setting up syslog.conf...done. 
Starting servers...done. 
Installing common zimlets... 
    com_zimbra_mailarchive...done. 
    com_zimbra_adminversioncheck...done. 
    com_zimbra_attachmail...done. 
    com_zimbra_webex...done. 
    com_zimbra_srchhighlighter...done. 
    com_zimbra_phone...done. 
    com_zimbra_bulkprovision...done. 
    com_zimbra_clientuploader...done. 
    com_zimbra_ymemoticons...done. 
    com_zimbra_attachcontacts...done. 
    com_zimbra_url...done. 
    com_zimbra_date...done. 
    com_zimbra_proxy_config...done. 
    com_zimbra_viewmail...done 
    com_zimbra_email...done. 
    com_zimbra_tooltip...done. 
    com_zimbra_cert_manager...done. 
Finished installing common zimlets. 
Restarting mailboxd...done. 
Creating galsync account for default domain... 
You have the option of notifying Zimbra of your installation. 
This helps us to track the uptake of the Zimbra Collaboration Server. 
The only information that will be transmitted is: 
    The VERSION of zcs installed (8.6.0_GA_1153_UBUNTU14_64) 
    The ADMIN EMAIL ADDRESS created (le_bel_admin@mon-serveur.xxxx)

Notify Zimbra of your installation? [Yes] 
Ici je réponds "No" car ce n'est qu'une installation de test. 
Notification skipped 
Setting up zimbra crontab...done. 
Moving /tmp/zmsetup06102015-144332.log to /opt/zimbra/log 
Configuration complete - press return to exit

Maintenant installer le patch fourni "https://files.zimbra.com/downloads/8.6.0_GA/zcs-patch-8.6.0_GA_1169.tgz". 
On le décompresse dans un coin tranquille et on entre dans le répertoire (en "root" bien sûr) où on découvre le fichier "installPatch.sh" que l'on s'empresse de lancer : et il liste plein de choses ... et se termine rapidement. 
Maintenant limiter la taille de la base "ldap" pour ne pas avoir de surprise lors de copies (rappel, ce serveur ne traite pas des millions de messages et la taille de 80Gb (sparse file heureusement)est un peu élevée). 
Cette commande se lance sous le user "zimbra" : 
La taille "standard" est de 80GB ici 1GB suffira 
zmlocalconfig -e ldap_db_maxsize=1073741824 
Cela permet de copier l'ensemble du répertoire sans trop de problèmes pour sauvegarde. 
Il faut sinon passer par "mdb_copy" ou "zmslapcat", solutions recommandées par Zimbra.

Il est ensuite de bon ton de redémarrer la machine pour vérifier que tout se passe correctement. 
Ca reboote en douceur, on peut alors commencer à paramétrer notre serveur de mails.

Pour le paramétrage j'ai repris celui de la machine existante, recréé les users "à la main", heureusement la famille ne comporte pas des dizaines de personnes) et exporté puis ré-importé le contenu de tous les users (un par un en version "open") à l'aide de la fonction dédiée que l'on trouve dans l'interface WEB : "Préférences/Importer,exporter". Le seul inconvénient est la nécessité de fonctionner compte par compte pour la version Opensource.

Après avoir :

Note : en juin 2016 après plus de 6 mois cela fonctionne très bien. 
Re note : en novembre 2016, après le changement de serveur physique, upgrade système et recopie du disque de la machine virtuelle cela fonctionne toujours très bien. 
Note : Juillet 2017 les machines virtuelles sont installées sur de bons gros SSD de 512GO, et, là aussi recopie du disque de la machine virtuelle. Fonctionnement impeccable et, bien sûr, plus rapide.

Zimbra : disk snap... 100% full

Zimbra : disk snap... 100% full jpp

Voir en fin de page pour le téléchargement ds scripts "correcteurs" qui fonctionnent très bien sur la nouvelle VM en Ubuntu 20.04.

Mon installation de Zimbra est assez ancienne sur une Ubunto 16.04 LTS, mais maintenue régulièrement à jour avec le repository de Zimbra dans mon /etc/apt/sources.list.z/zimbra.list qui content : 
deb     [arch=amd64] https://repo.zimbra.com/apt/87 xenial zimbra 
deb     [arch=amd64] https://repo.zimbra.com/apt/8815 xenial zimbra 
deb-src [arch=amd64] https://repo.zimbra.com/apt/87 xenial zimbra 
Lors de la dernière mise à jour apt m'a proposé d'installer un paquet (...) pour bénéficier des mises à jour étendues (livepatch) de ma version 16.04 LTS. 
Après m'être inscrit sur le site de Canonical (gratuit jusqu'à 3 machines) j'ai installé la clef fournie et relancé une mise à jour qui m'a proposé plus de 100 paquets à mettre à jour, ce que je me suis empressé de lancer. 
A la suite de cette installation je reçois de Zimbra une multitude de messages signalant des disques pleins à 100%. Ces disques sont respectivement /dev/loop0 et /dev/loop1 sur lesquels sont montés (cf snap) les répertoires nécessaires à "livepatch". 
J'ai ainsi reçu plus de 800 messages en deux jours me signalant ces disques "pleins". 
Or c'est parfaitement normal que ces "disques" soient à 100%, c'est le fonctionnement normal de "snap",il faut donc inhiber la procédure "Zimbra" qui génère ces alertes. 
On dirait que les auteurs de Zimbra ont prévu le coup car il est possible très simplement de mettre à jour le paramètre "zmstat_df_exclude" qui doit régler ce problème. 

1) Voyons voir le paramètre "ad hoc" 
zmlocalconfig | grep zmstat_df_excludes 
qui renvoie 
zmstat_df_excludes = 
soit : aucune exclusion enregistrée. 

1) commencer par établir la liste de ces devices "loop..." 
df | grep loop 
/dev/loop0        101888   101888         0 100% /snap/core/11993 
/dev/loop1          9344     9344         0 100% /snap/canonical-livepatch/119 

Ensuite lancer la commande suivante (user "zimbra") : 
zmlocalconfig -e zmstat_df_excludes="/dev/loop0:/dev/loop1" 
Bien utiliser ":" comme séparateur. 
Et le tour est joué, plus de messages inutiles et ennuyeux, tout en gardant les alertes pour les autres systèmes de fichiers. 

Pour vérifier : 
zmlocalconfig | grep zmstat_df_excludes 
qui, maintenant renvoie : 
zmstat_df_excludes = /dev/loop0:/dev/loop1 
ce qui semble parfait et d'ailleurs je n'ai pas reçu d'autres messages au sujet de ces deux "disques". 
Note : il faut surveiller l'apparition de nouveaux "/dev/loopN" et les ajouter illico à la liste. 

J'ai eu la surprise, quelques jours après de recevoir une salve de mail pour un nouveau "livepatch" qui m'a créé un nouveau "loop" : 
/dev/loop2              9344     9344          0 100% /snap/canonical-livepatch/126 

J'ai donc du l'ajouter avec (en user "zimbra") : 
zmlocalconfig -e zmstat_df_excludes="/dev/loop0:/dev/loop1:/dev/loop2"

A vérifier immédiatement par : 
zmlocalconfig | grep zmstat_df_excludes 
zmstat_df_excludes = /dev/loop0:/dev/loop1:/dev/loop2 

.... A surveiller après chaque mise à jour ... Mais que fait-on après 20 mises à jour, a-t-on 21 /dev/loopNN ?

Suite à un problème de gestion de certificat j'ai monté une nouvelle machine virtuelle en Ubuntu 20.04, évidemment elle "souffrait" du même problème que la précédente ... mais, rien n'y fait, même en appliquant cette méthode cette fichue machine m'inonde de mails signalant que le disque /dev/snapxx est à 100%. 
C'est toutes les 10 minutes et il y a actuellement 13 "disques" snap. J'ai signalé cette anomalie sans avoir de réponse pour le moment ... 
Dernières nouvelles : après quelques jours la configuration des "df_exclude" est enfin active et je n'ai plus des centaines/milliers de mails intempestifs ... Mais pourquoi cela a mis plusieurs jours pour s'activer reste un mystère. 
En fait il semble qu'il faille effectuer un restart complet de zimbra pour que la nouvelle configuration soit activée. 
Note 2022 
Je suis depuis "passé" sur Ubuntu 20.04 LTS puisque le 16.04 est tombé hors "LTS". 
Mais le résultat est le même, zimbra s'entête à me déclarer tous les disques /dev/snap/... (nom du "répertoire" où sont montés les /dev/loopNN au nombre de 14 à ce jour. 
J'utilise deux petits scripts qui :

  • RECUP_LOOP    récupère les "loop" et les répertoires associés sous forme de liste et appelle le script suivant, télécharger.
  • SNAP_EXCLUDE qui met en forme les données et lance l'exécution de la commande zimbra "zmlocalconfig" avec la liste des "loop" et répertoires transmise par le premier script, télécharger.

J'ai mis dans la crontab l'exécution de RECUP_LOOP tous les soirs.

Zimbra : script cool snap

Zimbra : script cool snap jpp

Ces scripts, très courts, permettent de régler le problème des message inutiles dus aux disques "snap" qui sont, par définition pleins à 100%. 
Ces mini scripts peuvent être exécuté après n'importe quelle mise à jour et même être lance par "cron", c'est vraiment très simple et court. Le "travail" est découpé en deux scripts :

  1. Faire la liste des "snaps" et des points de montage liés.
  2. Lancer la fonction d'enregistrement, mise en forme des données et exécution par le user "zimbra".
 

#!/bin/bash 
#   RECUP_SNAP
echo '----------------------------------------------------' 
echo $(date)

df | grep '/dev/loop' | awk '{print $1;}' >/root/bin/SNAP_LISTE_A

df | grep '/dev/loop' | awk '{print $6;}' >>/root/bin/SNAP_LISTE_A

sort -k 1 /root/bin/SNAP_LISTE_A >/root/bin/SNAP_LISTE  
# Appel de la mise à jour 
/root/bin/SNAP_EXCLUDE 
 

 

# SNAP_EXCLUDE

#!/bin/bash 
#  Script généré exécute par le user zimbra 

ORIG=$(dirname $0) 
cd $ORIG 
ORIG=$(pwd) 
echo 'ORIG='$ORIG 
FEXE=/tmp/deloop 
LISTE=$(cat ./SNAP_LISTE )

LISTE=$(echo $LISTE | sed 's/ /:/g') 
# Créer un fichier exécutable 
echo 'zmlocalconfig -e zmstat_df_excludes="'${LISTE}'"' >$FEXE 
chmod 774 ${FEXE} 
chown zimbra ${FEXE} 
# Exécuter ce fichier par Zimbra 
su - zimbra -c ${FEXE} 
# Détruire le fichier exécutable 
rm ${FEXE}

 

Le script 1 appelle le script 2; on peut donc se contenter de lancer le script 1 pour recréer la liste et la transmettre à Zimbra ou n'exécuter que le script 2 en utilisant la liste existante.

Zimbra divers

Zimbra divers jpp

Ce petit groupe d'articles traite essentiellement du paramétrage de certaines actions spécifiques et d'autres détails comme l'utilisation d'un téléphone.

ZIMBRA : utiliser un "smartphone"

ZIMBRA : utiliser un "smartphone" jpp

Un membre de ma famille a interrogé son courrier depuis son "smartphone", ici un Samsung Galaxy S depuis la Corée, et a trouvé que l'ergonomie du WebMail en version petit écran était très bonne et facilement utilisable. 
C'est une bonne nouvelle qui me conforte dans le choix de ZIMBRA. 
J'ai pu moi même essayer cet accès car mon anniversaire m'a apporté un Iphone 4 tout beau, tout neuf et j'ai rapidement essayé l'accès au Webmail. 
Ce n'est pas super rapide mais très utilisable et  assez agréable. 
Ci dessous quelques images (photos car il n'ya pas de copier/coller entre un Iphone et mon PC !) pour montrer l'aspect de l'interface :

 L'écran de login
 L'écran d'affichage de la liste des messages, 
c'est du SPAM ! Une fois reconnu et transmis à la bonne adresse spam.xxxxxxx@... l'antispam nous en préserve assez bien. 
Vous pouvez noter une recrudescence des SPAM que l'on appelait "Nigérien" il y a quelques années.
L'affichage détaillé d'un message
Les actions possibles sur un message


J'espère que cela vous aura montré la qualité de cet interface, qui malgré les limitations de l'écran, permet de consulter son Webmail confortablement. 

A bientôt ... 
Note 2012/12 
En fait je m'en sert assez souvent pour consulter mes mails depuis le bureau en attendant de les rapatrier dans Evolution chaque soir. Plus je m'en sert plus je trouve cet interface génial.

Note 2016/05 
Je me sert toujours de Zimbra, maintenant en version 8, avec un Iphone j'ai connecté le lecteur de Mail de L'Iphone sur mon serveur Zimbra et cela fonctionne parfaitement.

Note 2017/10 
Toujours actif avec un Iphone 6 ... 

Note 2022 : et même un 13 maintenant

Selenium

Selenium jpp

Deux petits articles consacrée à Selenium

 

Le logo de Selenium

Non ce n'est pas un métal !  C'est un ensemble de logiciels adaptés au test de sites WEB.

Depuis ce test (réalisé en 2017) Selenium a pas mal évolué, les IDE incorporables aux navigateurs ont aussi beaucoup évolué et pas forcément en bien ... celui que j'utilisais ne permet plus de générer des scripts Python , quel dommage ! 
Après une petite recherche j'ai trouvé un IDE "Katalon" qui est très ressemblant et facile à utiliser et qui génère du Python ! Par ailleurs Katalon propose un environnement de test que je vais regarder de près.

Peut-être un test.

Selenium : juste un petit tour.

Selenium : juste un petit tour. jpp

Cet article ne représente qu'un démarrage minimum avec ce produit dont les domaines d'applications sont très divers car il permet de tester un logiciel avec divers browser (Chrome, Firefox, Opera, Safari, Internet Explorer) sur divers systèmes d'exploitation (Linux, MacOs, diverses saveurs de Windows). 
Ici, tests faits sur un portable sous Linux, cela se réduit à l'IDE et deux browser sous Linux : Chromium (Chrome a refusé de fonctionner avec la version du driver dont je dispose) et Iceweasel (Firefox). 
Des "bindings" existent pour plusieurs langages ; Ruby, Python et bien sûr Java.Je n'ai testé ici que l'interface pour Python. Une version de Java 1.7, (JRE) convient parfaitement.

Depuis le site "seleniumhq.org" :

  • Charger le module Selenium IDE comme ADDON Mozilla (version testée 2.9.0)
  • Charger le "standalone server" (version testée 2.46)
  • Charger les drivers Python : Lancer l'installaton (en root !) : 
    pip install -U selenium
  • Chrome driver (32 bits Linux), charger la dernière version (ici la 2.16) :http://chromedriver.storage.googleapis.com/2.16/chromedriver_linux32.zip (ou linux64). Cette version est numerotée "v2.9.248316" à l'éxécution ???

J'ai ensuite installé tout ça dans un répertoire "Selenium" pour bien l'isoler. 
J'ai ajouté un répertoire "Config" et un répertoire "Tests". Le répertoire "Config" contient les deux fichiers de configuration (format json) pour le "Hub" et un pour le "Node".  
Ici je ne lance qu'un seul node et sur la même machine ( portable i386 avec 4G de mémoire très convenable pour les vacances !) Selenium fonctionne avec au moins deux processes (tout est dans la stand-alone-server) : 
Le "Hub" reçoit les demandes d'exécution et les transmet au "Node" (ou à un parmi les Nodes déclarés) qui dispose du pseudo-browsers demandés. Ici nous disposons d'un driver Firefox (standard du paquet) et d'un driver "chrome". Petite remarque : le driver "chrome" ne fonctionne pas avec les versions de "google-chrome" que j'ai testées mais parfaitement avec la version "chromium" fournie par Debian. 
J'ai aussi effectué quelques tests avec Opera mais sans succès pour le moment, pas de machine Windows dispo donc pas de tests Internet Explorer.

L'IDE Selenium est accessible dans le menu "Outils" de Firefox (ici IceWeasel) ou par le raccourci "Ctrl+Alt+s". 
L'enregistrement est facile et sans problèmes depuis Firefox, on peut le rejouer immédiatement pour vérifier.

Pour un premier test se "balader" un peu sur un site (j'ai utilisé un site local de test), valider ensuite le test et le sauvegarder en format "natif" puis le sauvegarder en format "Python" dans un fichier "xxxxxxxx.py".

Pour éxecuter un test créé par l'IDE : 
l'exporter en mode "python 2 unittest webdriver" sour le nom "test_remote.py" et lancer la commande : 
python test_remote.py 
Une fenêtre Firefox s'ouvre et le test s'y éxécute.

Pour exécuter les tests en mode "Webdriver" et lancer plusieurs tests simultanément in faut créer un "Hub" et au moins un "Node". 
Sauvegarde le test au format Python ( ici "Python2 unittest webdriver"). 
Le lancement ouvrira une fenêtre Firefox (par défaut) et on verra défiler les pages du test. Pour utiliser Chromium il suffit de modifier très légèrement le script. 
Partie du script généré pour Firefox :

class TEST03(unittest.TestCase): 
    def setUp(self): 
        self.driver = webdriver.Remote(desired_capabilities={ 
            "browserName": "firefox", 
            "platform": "LINUX", }); 
Après modification pour Chromium : 
class TEST03(unittest.TestCase): 
    def setUp(self): 
        self.driver = webdriver.Remote(desired_capabilities={ 
            "browserName": "chrome", 
            "platform": "LINUX", });

Cette méthode permet de vérifier rapidement le script. 

Deux scripts hyper simples et deux fichiers de configuration permettent de lancer le "Hub" et un "Node". Le script de lancement d'un "Node" peut être lancé sur plusieurs machines avec la modification de l'adresse du "Hub" dans son fichier de configuration.

Lors des tests j'ai remarqué une consommation CPU assez importante et mon brave portable ne peut guère supporter deux browser en concurrence (Un Chromium et un Firefox) en plus du serveur Web dans sa machine virtuelle KVM sans commencer à montrer des signes d'épuisement. Avec trois browsers le ralentissement est notable dans ce petit portable qui date de 2009 (voir l'article de présentation de cette machine SSDisée). 
 

Selenium : scripts et fichiers de paramétrage

Selenium : scripts et fichiers de paramétrage jpp

Le script de lancement du Hub :

#!/bin/bash 
OPTIONS=' -hubConfig ./Config/HubConfig.json  ' 
java -jar selenium-server-standalone-2.46.0.jar -role hub  $OPTIONS

Et son fichier de configuration :

{ 
  "host": "127.0.0.1", 
  "port": 4444, 
  "newSessionWaitTimeout": -1, 
  "servlets" : [], 
  "prioritizer": null, 
  "capabilityMatcher": "org.openqa.grid.internal.utils.DefaultCapabilityMatcher", 
  "throwOnCapabilityNotPresent": true, 
  "nodePolling": 5000, 
  "cleanUpCycle": 5000, 
  "timeout": 300000, 
  "browserTimeout": 0, 
  "maxSession": 5, 
  "jettyMaxThreads":-1 
}


Le script de lancement d'un Node :

#!/bin/bash 
PATH=./:$PATH 
export PATH 
export SELENIUM_SERVER_JAR=$(pwd) 
OPTIONS='  -nodeConfig ./Config/NodeConfig.json ' 
java -jar selenium-server.jar -role node  $OPTIONS


Et son fichier de config :

{ 
  "capabilities": 
      [ 
        { "browserName": "*firefox", 
          "maxInstances": 5, 
          "seleniumProtocol": "Selenium" 
        }, 
        { "browserName": "*googlechrome", 
          "maxInstances": 5, 
          "seleniumProtocol": "Selenium" 
        }, 
        { "browserName": "*iexplore", 
          "maxInstances": 1, 
          "seleniumProtocol": "Selenium" 
        }, 
        { "browserName": "firefox", 
          "maxInstances": 5, 
          "seleniumProtocol": "WebDriver" 
        }, 
        { "browserName": "chrome", 
          "maxInstances": 5, 
          "seleniumProtocol": "WebDriver" 
        }, 
        { "browserName": "internet explorer", 
          "maxInstances": 1, 
          "seleniumProtocol": "WebDriver" 
        } 
      ], 
  "configuration": 
  { "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy", 
    "maxSession": 5, 
    "port": 5555, 
    "host": "127.0.0.1", 
    "register": true, 
    "registerCycle": 5000, 
    "hubPort": 4444, 
    "hubHost": "127.0.0.1" 
  } 
}

SQUID : cache

SQUID : cache jpp

Logo de Squid

J'utilise Squid  depuis très longtemps, ce blog contient plusieurs articles à ce sujet dont le premier remonte à 2010. 
Note août 2021, à l'occasion du changement de machine (voir l'article spécifique) je suis passé à la version 5 de Squid.

J'ai décidé de les regrouper pour que l'ensemble soit plus facile à consulter. 
Le premier article de la série est une explication générique de l'utilité d'un proxy-cache et de son installation basique.

Le deuxième traite plus particulièrement du cas de l'usage de SSL

Les autres articles présentent divers scripts liés à l'utilisation de Squid et quelques éléments sur les "ACL" (Access Control List) et leur usage.

SQUID : Proxy cache filtre

SQUID : Proxy cache filtre jpp

Squid est un proxy-cache parmi les plus connus, l'avantage d'un cache n'est plus à démontrer et tous les browsers en intègrent un. Mais sur un réseau comportant plusieurs machines accédant à Internet il peut être intéressant de disposer d'un cache centralisé qui dimunuera le débit Internet nécessaire et améliorera la vitesse d'affichage. 
Ce proxy peut être installé sur une machine "tête" de réseau qui seule gère l'accès vers Internet. Cette machine peut (doit ?) aussi servir de Firewall commun. 
Une autre fonction d'un proxy est le filtrage et Squid est, bien sûr, muni de possibilités dans ce domaine. La plupart des proxies nécessitent un réglage spécifique des navigateurs en utilisant un port spécifique, en général le 3128. Si le filtrage de Squid est efficace il est donc dans ce cas facile de le contourner en désactivant le cache dans son browser. 
Une autre méthode est d'utiliser un cache "transparent" et d'y rediriger les requêtes sortantes à destination du port 80. Une simple règle iptables permet d'effectuer la redirection de tout ce qui veut sortir vers un port 80 en provenance su réseau "SOURCE" vers le port 3128 standard de SQUID (Note 2016: on peut agir de même en SSL/TLS avec les versions récentes de Squid) :

PATH=/sbin:$PATH 
IFINT=eth0            
 
SOURCE="192.168.1.0/24" 
PORTS=3128 
PORTE=80 
 
iptables -t nat -A PREROUTING -i $IFINT -s $SOURCE -p tcp --dport $PORTE  -j REDIRECT --to-port $PORTS

Il faudra ajouter la directive "http_port 3128 transparent" dans le paramétrage de SQUID. 
Le filtrage sera réalisé par des "ACL" (Access Control List) et des "http_access deny/allow". Afin que le filtrage soit plus "transparent" un pseudo fichier (une image png de un seul point, transparent lui aussi) sera renvoyé à la place de la demande filtrée ce qui évite de polluer les écrans par des messages intempestifs. 

Fichier de paramétrage SQUID partie "générique"  :

http_port 3128 transparent 
hosts_file /etc/hosts 
# Controles standard 
# ------------------ 
acl Safe_ports port 80 
acl all src 0.0.0.0/0.0.0.0 
acl manager proto cache_object 
acl localhost src 127.0.0.1/255.255.255.255 
acl to_localhost dst 127.0.0.0/8 
acl purge method PURGE 
acl CONNECT method CONNECT 

http_access allow manager localhost 
http_access deny manager 
http_access allow purge localhost 
http_access deny purge 
http_access deny !Safe_ports 
 

Nous arrivons ensuite à notre section de filtrage, le fameux "ACL" est effectué par une recherche dans un fichier externe, simple fichier texte (à mettre à jour manuellement, on peut trouver de tels fichiers sur Internet). Le type de règle utilisé "dstdom_regex", il suffit alors que le fichier contienne une URL (ou une partie d'URL) pour que la condition soit remplie.

acl mespub      dstdom_regex "/etc/squid/mespub.txt" 
deny_info file:///etc/squid/deny.png mespub 
http_access deny mespub

Si le fichier "mespub.txt" contient une ligne ".sexe.com" tous les sites dont le nom se termine par "sexe.com" seront invisibles. Ce fichier peut aussi contenir des adresses IP car souvent les sites d'images publicitaires n'ont pas de nom de domaine mais seulement une IP. 
Le fichier paramètre contient à la fin quelques variables "techniques" qu'il est intéressant de conserver (et d'adapter) :

# Filtrage selon reseau d'origine 
acl reso0 src 10.0.1.0/24 
acl reso1 src 127.0.0.1 
acl reso2 src 192.168.1.0/24 
http_access allow reso0 
http_access allow reso1 
http_access allow reso2 
http_access allow localhost 
http_access deny all 
http_reply_access allow all 
# 
# Constantes diverses 
# 
icp_access allow all 
visible_hostname mon_host_name 
memory_pools_limit 1 MB 

access_log     /var/log/squid/access.log squid 
error_directory /usr/share/squid/errors/French 
coredump_dir     /var/spool/squid

Une aide importante à l'utilisation du filtrage est constituée du paquet "sarg" qui permet d'extraire des statistiques d'accès des fichiers de log de SQUID. 
Pour Debian l'installation est immédiate et créée automatiquement les crontabs qui vont bien (journalière, hebdomadaire et mensuelle). 
Pour la partie journalière il vaut mieux "coupler" l'exécution du script avec la purge des fichiers "SQUID" effectuée par "logrotate" en effectuant le calcul des statistiques juste avant la rotation des logs, ajouter un traitement "prerotate" lançant "/usr/sbin/sarg-reports daily" et supprimer le script présent dans "/etc/cron.daily". 
Le résultat est directement consultable sur le serveur en http (il faut évidement avoir Apache sur le serveur SQUID), par défaut tout est installé (Debian) dans /var/www/sarg_reports :

 


Le champ "FICHIER/PERIODE" est cliquable et amène sur une page statistique par adresse IP d'origine: 
 
Les adresses sont cliquables et amènent sur le détail complet des sites HTTP consultés ce jour par cette adresse IP : 
 

C'est un peu indiscret, mais utile pour les mises à jour du fichier texte de filtrage ... noter la mention "REFUSE" sur les sites "bloqués". 
 

Squid avec ssl

Squid avec ssl jpp

 
Note avril 2020 : Squid (version  4.9-20200102) est toujours actif et j'ajoute régulièrement quelques données dans les fichiers de filtrage pour définir quelques origines gênantes et je récupère toutes les semaines les informations sur les serveurs de pub depuis https://pgl.yoyo.org

Note juin 2018 : j'utilise toujours Squid (version 4.0.25) sur mon système frontal ce qui permet de bloquer certains sites de pub un peu trop intrusifs et aussi d'accélérer l'affichage. Pour voir le principe des "ACL" et quelques exemples aller ici.

Note septembre 2017, en cas d'ennui de compilation vérifier l'installation de : 
libssl-dev et libcrypto++-dev 
apt-get install libssl-dev libcrypto++-dev 

La version qui "tourne" actuellement est la version 3.5.19-20160618-r14061. Je recompile une nouvelle version de temps en temps, quelques "trucs" que j'utilise sont décrits en annexe. 
Surtout ne pas oublier d'installer votre certificat sur les postes client !

J'ai voulu essayer d'utiliser Squid3 en proxy SSL, mais malheureusement le binaire proposé par Debian est compilé sans l'option SSL. Pour persister dans mon idée il m'a fallu passer par les sources et je vous conte ci-après l'histoire correspondante. 
Cette opération a été réalisée sur une machine Debian 7.4, pour d'autres distributions les répertoires peuvent varier. 
Télécharger la dernière archive (pour moi : squid-3.5.02.tar.xz) et la décompresser dans un répertoire tranquille, j'utilise /usr/src/PGM/BUILD comme répertoire de base et ne touche pas à la disposition "classique des programmes locaux dans /usr/local/.... 
J'ai mis les options de configuration qui m'intéressent dans le petit script suivant :

#!/bin/bash 
# A lancer dans le répertoire de "BUILD" au niveau "au dessus" de squid 
# Mise à jour Aout 2016 pour SQUID 3.5

OPTIONS=' --with-default-user=squid ' 
# MAX FD 
OPTIONS=${OPTIONS}' --with-filedescriptors=16384 ' 
# NO IPV6 
OPTIONS=${OPTIONS}' --disable-ipv6 ' 
#    Enable SSL 
OPTIONS=${OPTIONS}' --enable-ssl --enable-ssl-crtd --enable-inline ' 
# SQUID 3.5 
OPTIONS=${OPTIONS}' --with-openssl ' 
# transparent 
OPTIONS=${OPTIONS}' --enable-linux-netfilter --enable-icmp --with-large-files ' 
OPTIONS=${OPTIONS}' --enable-icap-client --enable-useragent-log --enable-referer-log' 
OPTIONS=${OPTIONS}' --disable-poll --enable-epoll --disable-ident-lookups  ' 
OPTIONS=${OPTIONS}' --enable-async-io=16 --enable-underscores --enable-carp' 
OPTIONS=${OPTIONS}' --enable-storeio=aufs,diskd,rock ' 
OPTIONS=${OPTIONS}' --enable-htpc ' 
OPTIONS=${OPTIONS}' --enable-err-language=fr ' 
OPTIONS=${OPTIONS}' --enable-http-violations '

cd squid-3.5       

./bootstrap.sh

./configure $OPTIONS 2>&1 | tee LOG.CONFIGURE

make clean 2>&1 | tee LOG.CLEAN

make 2>&1 | tee LOG.MAKE

exit

Il ne reste plus qu'à vérifier les logs et lancer un "make install" (en root). 
Ainsi je pourrais compiler d'autres versions sans ennuis, du moins en principe. 
Après un essai de compilation "direct" j'ai eu des ennuis à la première exécution. Après recherche j'ai suivi la procédure conseillée (internet dixit) : lancer avant toute chose dans le répertoire de Squid la commande "./bootstrap.sh" qui configure elle même plein de trucs ... en résultat tout est OK (Le script ci-dessus vous évite ce genre d'ennui. 

Après ce petit baratin on lance le truc et on commence pas aller dans le répertoire de Squid et on lance la grande magie : 
./bootstrap.sh 

On lance le petit script de configuration créé précédemment. Puis le fatidique : 
make 2>&1 | tee MAKE.LOG 

La compilation est assez longue, presque autant que celle d'un noyau Linux! 
Ensuite on peut passer au "make install" en "root" bien sûr ! 
On reste "root" pour la suite, il faut, dans le répertoire par défaut (pour moi /usr/local/squid) :

 

  • Créer un répertoire pour stocker le certificat racine de notre autorité 
    mkdir ssl_cert
  • Créer un certificat 
    Voir le script joint
  • Créer un repertoire "lib" dans  /usr/local/squid/var 
    mkdir lib
  • initialiser le répertoire de cache des certificats créés 
    /usr/local/squid/libexec/ssl_crtd -c -s /usr/local/squid/var/lib/ssl_db

Note : Si le répertoire existe, tout le monde peut faire des erreurs ! Il faut le détruire avant de relancer la commande. Dans ce cas ne pas oublier : 
chown -R squid:squid /usr/local/squid/var/lib/ssl_db"

  • Initialiser les pages de messages d'erreur dans /usr/local/squid/share/errors
  • Créer un répertoire "fr" et un lien de "fr" vers "fr-fr"
  • copier le répertoire "templates" dans "fr" et, pour bien faire traduire les pages !

cd /usr/local/squid/share/errors 
mkdir fr 
ln -s fr fr-fr 
cp ./templates/* ./fr

  • Créer un user "squid" groupe "squid" sans droit de login
  • Comme le user d'exécution prévu est "squid" faire un "chown -R squid:squid /usr/local/squid"

Pour la suite je considère que vous avez déjà un fichier de config qui fonctionne en HTTP classique avec les "acl" et filtres qui vous conviennent. Si ce n'est pas le cas commencer par ce point pour que le cache fonctionne selone vos désirs en HTTP. Pour tester configurez votre navigateur avec Squid comme proxy, dans ce cas otez l'option "transparent" de la configuration, vous la remettrez plus tard avant d'activer le système de redirection. 
Ajouter les paramètres adéquats dans le fichier de configuration "squid.conf" :

# 
# Recommended minimum configuration: 
# 
shutdown_lifetime 5 seconds 

# Example rule allowing access from your local networks. 
# Adapt to list your (internal) IP networks from where browsing 
# should be allowed 
# ACLs all, manager, localhost, and to_localhost are predefined. 
# acl localnet src 10.0.0.0/8    # RFC1918 possible internal network 
# acl localnet src 172.16.0.0/12    # RFC1918 possible internal network 
acl localnet src 192.168.2.0/24     
acl localnet src 192.168.3.0/24 
acl localnet src fc00::/7       # RFC 4193 local private network range 
acl localnet src fe80::/10      # RFC 4291 link-local (directly plugged) machines 

acl SSL_ports port 443 
acl Safe_ports port 80        # http 
acl Safe_ports port 81        # http 
acl Safe_ports port 21        # ftp 
acl Safe_ports port 443        # https 
# acl Safe_ports port 70    # gopher 
# acl Safe_ports port 210    # wais 
acl Safe_ports port 1025-65535    # unregistered ports 
acl Safe_ports port 280        # http-mgmt 
# acl Safe_ports port 488    # gss-http 
# acl Safe_ports port 591    # filemaker 
# acl Safe_ports port 777    # multiling http 
acl CONNECT method CONNECT 

# 
# Recommended minimum Access Permission configuration: 
# 
# Deny requests to certain unsafe ports 
http_access deny !Safe_ports 

# Deny CONNECT to other than secure SSL ports 
http_access deny CONNECT !SSL_ports 

# Only allow cachemgr access from localhost 
http_access allow localhost manager 
http_access deny manager 

# We strongly recommend the following be uncommented to protect innocent 
# web applications running on the proxy server who think the only 
# one who can access services on "localhost" is a local user 
http_access deny to_localhost

# 
#     Ajouter ici vos ACL 
# 
 

# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS 
http_access allow localnet 
http_access allow localhost 

# And finally deny all other access to this proxy 
http_access deny all 
 

# Squid normally listens to port 3128 
http_port 3128 transparent 


# Squid listen Port Add "intercept" ou "transparent" pour proxy transparent 
#     Squid pour redirection (Une seule ligne) 
https_port 192.168.2.11:3129 intercept ssl-bump generate-host-certificates=on cert=/usr/local/squid/ssl_cert/xxxxxx.crt key=/usr/local/squid/ssl_cert/xxxxxx.private options=NO_SSLv2,NO_SSLv3 

# 
## Disable ssl interception for dropbox.com and hotmail.com (and localhost) 
acl no_ssl_interception dstdomain .dropbox.com .hotmail.com 
ssl_bump none localhost 
ssl_bump none no_ssl_interception 
  
# SSL Bump Config 
always_direct allow all 
ssl_bump server-first all 
sslproxy_cert_error allow all 
sslproxy_flags DONT_VERIFY_PEER 
sslcrtd_program /usr/local/squid/libexec/ssl_crtd -s /usr/local/squid/var/lib/ssl_db -M 4MB 
sslcrtd_children 4 startup=2 idle=1 

# Uncomment and adjust the following to add a disk cache directory. 
cache_dir ufs /usr/local/squid/var/cache/squid 2048 32 256

Il faut alors mettre en place une redirection de ports des ports entrants 80 et 443 vers la machine "Squidifiée" sur les ports 3128 et 3129. 
Voir le script joint "Redirection iptables". 
Récupérer un script d'init (il n'y en a pas dans le paquet source) ou bien récupérez celui joint ici (repris de Debian avec quelques adaptations à "/usr/local/squid") puis lancer : 

service squid start 

Et c'est parti ... enfin presque il vous faut avant tout usage HTTPS aller installer votre fichier ".crt" dans le magasin de certificats des browsers du réseau. 
Sinon c'est le blocage assuré de tous les sites HTTPS ! 
C'est le seul inconvénient du proxy HTTPS, comme il doit signer les certificats qu'il vous envoie en lieu et place de ceux qu'il a négociés avec le site il faut qu'il dispose d'une autorité adéquate. Tous les navigateurs disposent de cette possibilité, mais c'est une contrainte importante. 
Pour "curl" et "wget" il faut copier votre certificat de CA dans /etc/ssl/certs, puis l'ajouter à la fin du fichier /etc/ssl/certs/ca-certificates.crt. 
A part cela c'est le  seul moyen de cacher efficacement les pages HTTPS.

Remarque :

Depuis la version du 2 juillet 2015 il est nécessaire d'effectuer une petite modif pour éviter un plantage fatal au démarrage avec message : 
"icmp_sock: (1) Operation not permitted". 
Il suffit de passer le binaire "pinger" (dans squid/libexec) en mode suid root :

cd le_repertoire_de_squid 
cd libexec 
chown root:squid pinger 
chmod 4755 pinger

ou de réaliser un "make install-pinger". 
Comme "pinger" utilise des ports "au hasard" (?) j'ai préféré ajouter l'option "pinger_enable false" dans mon fichier "squid.conf".


Scripts joints :

  • Création certificat
  • Script d'init
  • Exemple de redirection IPTABLES

Squid : script d'init

Squid : script d'init jpp

Script (ancienne mode avec "service") adapté du script fourni par Debian :

#! /bin/sh 
# 
# squid        Startup script for the SQUID HTTP proxy-cache. 
# 
# Version:    @(#)squid3.rc  1.0  07-Jul-2006  luigi@debian.org 
# 
### BEGIN INIT INFO 
# Provides:          squid 
# Required-Start:    $network $remote_fs $syslog 
# Required-Stop:     $network $remote_fs $syslog 
# Should-Start:      $named 
# Should-Stop:       $named 
# Default-Start:     2 3 4 5 
# Default-Stop:      0 1 6 
# Short-Description: Squid HTTP Proxy version 3.x 
### END INIT INFO 

NAME=squid 
DESC="Squid HTTP Proxy 3.x" 
DAEMON=/usr/local/squid/sbin/squid 
PIDFILE=/usr/local/squid/var/run/$NAME.pid 
CONFIG=/usr/local/squid/etc/squid.conf 
SQUID_ARGS="-YC -f $CONFIG" 

[ ! -f /etc/default/squid3 ] || . /etc/default/squid3 

. /lib/lsb/init-functions 

PATH=/bin:/usr/bin:/sbin:/usr/sbin 

[ -x $DAEMON ] || exit 0 

ulimit -n 65535 

find_cache_dir () { 
        w="     " # space tab 
        res=`sed -ne ' 
                s/^'$1'['"$w"']\+[^'"$w"']\+['"$w"']\+\([^'"$w"']\+\).*$/\1/p; 
                t end; 
                d; 
                :end q' < $CONFIG` 
        [ -n "$res" ] || res=$2 
        echo "$res" 
} 

find_cache_type () { 
    w="     " # space tab 
    res=`sed -ne ' 
        s/^'$1'['"$w"']\+\([^'"$w"']\+\).*$/\1/p; 
        t end; 
        d; 
        :end q' < $CONFIG` 
    [ -n "$res" ] || res=$2 
    echo "$res" 
} 

start () { 
    killall -u squid 
    cache_dir=`find_cache_dir cache_dir` 
    cache_type=`find_cache_type cache_dir` 

    # 
    # Create spool dirs if they don't exist. 
    # 
    if [ "$cache_type" = "coss" -a -d "$cache_dir" -a ! -f "$cache_dir/stripe" ] || [ "$cache_type" != "coss" -a -d "$cache_dir" -a ! -d "$cache_dir/00" ] 
    then 
        log_warning_msg "Creating $DESC cache structure" 
        $DAEMON -z -f $CONFIG 
    fi 

    umask 027 
    ulimit -n 65535 
    cd $cache_dir 
    start-stop-daemon --quiet --start \ 
        --pidfile $PIDFILE \ 
        --exec $DAEMON -- $SQUID_ARGS < /dev/null 
    return $? 
} 

stop () { 
    PID=`cat $PIDFILE 2>/dev/null` 
    start-stop-daemon --stop --quiet --pidfile $PIDFILE --exec $DAEMON 
    # 
    #    Now we have to wait until squid has _really_ stopped. 
    # 
    sleep 2 
    if test -n "$PID" && kill -0 $PID 2>/dev/null 
    then 
        log_action_begin_msg " Waiting" 
        cnt=0 
        while kill -0 $PID 2>/dev/null 
        do 
            cnt=`expr $cnt + 1` 
            if [ $cnt -gt 24 ] 
            then 
                log_action_end_msg 1 
                return 1 
            fi 
            sleep 1 
            log_action_cont_msg "" 
        done 
        log_action_end_msg 0 
        killall -u squid 
        return 0 
    else 
        return 0 
    fi 
} 

case "$1" in 
    start) 
    log_daemon_msg "Starting $DESC" "$NAME" 
    if start ; then 
        log_end_msg $? 
    else 
        log_end_msg $? 
    fi 
    ;; 
    stop) 
    log_daemon_msg "Stopping $DESC" "$NAME" 
    if stop ; then 
        log_end_msg $? 
    else 
        log_end_msg $? 
    fi 
    ;; 
    reload|force-reload) 
    log_action_msg "Reloading $DESC configuration files" 
    start-stop-daemon --stop --signal 1 \ 
        --pidfile $PIDFILE --quiet --exec $DAEMON 
    log_action_end_msg 0 
    ;; 
    restart) 
    log_daemon_msg "Restarting $DESC" "$NAME" 
    stop 
    if start ; then 
        log_end_msg $? 
    else 
        log_end_msg $? 
    fi 
    ;; 
    status) 
    status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit 3 
    ;; 
    *) 
    echo "Usage: /etc/init.d/$NAME {start|stop|reload|force-reload|restart|status}" 
    exit 3 
    ;; 
esac 

exit 0 
 

Squid : quelques "ACL"

Squid : quelques "ACL" jpp

Les très fameux "ACL" permettent, entre autres, de filtrer efficacement des sites "indésirables". 
Les plus souvent visés sont les sites "pour adultes", mais on peut y ajouter les sites qui farcissent vos écrans de publicités diverses ou qui vous "pistent". 
Squid dispose pour cela de trois types principaux d'ACL (il y en a d'autres) mais la documentation est parfois sybilline. 
Pour la plupart d'entre eix une syntaxe permet de déporter les paramètres dans un bête fichier texte externe dont il suffit d'indiquer le nom, ce nom peut être donné sous la forme d'une URL. Je mets "http://mon_serveur_web/deny.png" qui pointe vers une image de 1 pixel, comme cela on ne voit rien sur l'écran ! 
Premier type : liste d'URL "à éviter". 
acl  listeurl  dstdomain "/etc/squid/nom_du_fichier" 
deny_info      http://mon_serveur/deny.png        listeurl 
http_access    deny   listeurl

Le format est simple, des noms de domaines, s'il sont précédés d'un point tous les sous-domaines sont eux aussi bloqués. Exemple : 
.yieldmanager.com 
.zanox-affiliate.de 
.zanox.com 

Deuxième type : liste d'IP "incorrectes" 
acl  listeip   dst        "/etc/squid/nom_du_fichier_ip" 
deny_info      http://mon_serveur/deny.png        listeip 
http_access    deny   listeip

Le format du fichier est simple : des adresses IP au format CIDR, par exemple : 
209.207.224.220/32 
209.207.224.246/32

Troisième type : liste d'expressions régulières. 
acl ad_block   dstdom_regex    "/etc/squid/ad_block.db" 
deny_info      http:/mon_serveur/deny.png  ad_block 
http_access    deny        ad_block 

Pour cette dernière liste j'utilise une liste "toute faite", il en existe plusieurs, par exemple un petit :

wget -O /etc/squid/ad_block.db 'http://pgl.yoyo.org/adservers/serverlist.php?hostformat=squid-dstdom-regex&show…'

Un petit exemple quand même pour la route :

.zintext\.com 
.zmedia\.com 
Note : cela marche aussi sans le "\" devant .com. 
Avec tout ceci vous êtes parés à filtrer.

Télécharger ma liste de "vilains méchants". Elle date un peu depuis 2014, mais elle est mise à jour assez régulièrement.

Squid : script generation certificat

Squid : script generation certificat jpp

Ce script est le résultat de diverses récupérations sur Internet .... le certificat généré (autorité) à charger dans les navigateurs "clients" est le fichier en ".crt"

#!/bin/bash 
# 
SORTIE() 
{ 
if [ "$1" -eq 0 ] 
   then 
    echo 'OK' 
   else 
    echo ------- KO ----------; 
fi 
exit 
}

# Partie a personnaliser 
RCN=/usr/local/squid/ssl_cert 
KNAME='votre_autorite'; 
PAYS=FR 
REGION=Idf 
VILLE='Trifouilly les Oies' 
NA=le_nom_de_votre_entite 
FQDN=votre_nom 
MAIL=un_mail_bien_a_vous   
PASS='une_phrase_de_passe' 

cd $RCN 
ret=$? 
if [ $ret -ne 0 ] 
   then 
    echo 'Erreur cd '$RCN 
    SORTIE 1 
    exit $ret 
fi 
# Generer la clef (2048 bits) 
openssl genrsa -out $KNAME'.private'  2048 
ret=$? 
if [ $ret -ne 0 ] 
   then 
    SORTIE 2 
fi 
# generer certificat 
openssl req -new -key $KNAME'.private' -out $KNAME'.csr' <<!FINI 
$PAYS 
$REGION 
$VILLE 
$NA 
$NA 
$FQDN 
$MAIL 
$PASS 
$NA 
!FINI 
ret=$? 
if [ $ret -ne 0 ] 
   then 
    SORTIE 3 
fi 
### signer 
openssl x509 -req -days 3652 -in $KNAME'.csr' -signkey $KNAME'.private' -out $KNAME'.crt' 
ret=$? 
if [ $ret -ne 0 ] 
   then 
    SORTIE 4 
fi 
SORTIE 0

Squid : script de redirection

Squid : script de redirection jpp

Ce script "iptables" effectue la redirection des trames demandant à "sortir" vers les ports 80 ou 443, les trames sont automatiquement redirigées sur les "bons" ports de Squid.

#!/bin/bash 
# 
#    Diversion port 80 to 3128 (squid) 
#    et 443 to 3129 (squid SSL) 
# 
GENER() 
{ 
iptables -t nat $1 PREROUTING -i $IFINT -s $SOURCE -p tcp $OPTION --dport $PORTE  -j REDIRECT --to-port $PORTS 
} 
# ================================================================ 

PATH=/sbin:$PATH 
# interface vers reseau privé 
IFINT=br1 
# adresse du réseau à "Traiter" 
SOURCE="192.168.2.0/24" 
# Ne pas proxifier ce host, c'est le support de SQUID 
HOST='192.168.2.2'     
OPTION=' ! -d '$HOST 
# 
#    HTTP 
# 
PORTS=3128 
PORTE=80 
# 
GENER -D 
GENER -I 
# 
#    HTTPS 
# 
PORTS=3129 
PORTE=443 
# 
GENER -D 
GENER -I 

exit 0 
 

Squid listes de sites à éviter

Squid listes de sites à éviter jpp

Depuis le temps que j'utilise Squid j'ai accumulé deux listes de sites à filtrer :

  1. Une liste de noms de domaines.
  2. Une liste d'adresses IP.

ACL pour la liste d'adresses IP: 
acl             badip   dst     "/etc/squid/badip.txt" 
deny_info       http://apache_local:81/deny.png  badip 
http_access     deny    badip 

ACL pour la liste de noms de domaine : 
acl             trade   dstdomain       "/etc/squid/trade.txt" 
deny_info       http://portail.jpp.fr:81/deny.png&nbsp; trade 
http_access     deny            trade

Téléchargez la liste IP (#200 adresses) ici.

Téléchargez la liste de sites (#800 noms de domaines) ici.

Voir aussi l'article sur les listes publiques permettant d'améliorer le filtrage.

Note 2024 : Ces listes ne sont plus à jour depuis 2020 ... il va falloir que je m'y remette ...

Squid version 4

Squid version 4 jpp

Debian Stretch a abandonné la version 1.0 de Openssl et le paquet "libssl-dev" est dédié à la version 1.1, aussi les anciennes versions de Squid (3.5 par exemple) ne compilent plus avec Debian 9 et provoquent des erreurs si l'ancienne version de libssl n'est pas présente, voir article sur ce plantage. 
J'ai donc décidé de passer à la version 4 de Squid qui est adaptée à libssl 1.1. 
Pour disposer de cette version c'est très simple :

  • Télécharger les sources sur http://www.squid-cache.org/Versions/v4, j'ai téléchargé la version la plus récente squid-4.0.21-20170901-ra8623e5 datée du 1er septembre.
  • Décompresser l'archive
  • Lancer le script ci dessous :
#!/bin/bash 
OPTIONS=' --with-default-user=squid ' 
# MAX FD 
OPTIONS=$OPTIONS' --with-filedescriptors=16384 ' 
# NO IPV6 
OPTIONS=$OPTIONS' --disable-ipv6 ' 
## Modif pour V4 
OPTIONS=$OPTIONS' --enable-ssl --enable-inline ' 
# Depuis SQUID 3.5 
OPTIONS=$OPTIONS' --with-openssl ' 
# transparent (pour utiliser redirection avec iptables) 
OPTIONS=$OPTIONS' --enable-linux-netfilter --enable-icmp --with-large-files ' 
OPTIONS=$OPTIONS' --enable-icap --enable-useragent-log --enable-referer-log' 
OPTIONS=$OPTIONS' --disable-poll --enable-epoll --disable-ident-lookups ' 
OPTIONS=$OPTIONS' --enable-async-io=16 --enable-underscores --enable-carp' 
OPTIONS=$OPTIONS' --enable-storeio=aufs,diskd,rock ' 
OPTIONS=$OPTIONS' --enable-htpc ' 
OPTIONS=$OPTIONS' --enable-err-language=fr ' 
OPTIONS=$OPTIONS' --enable-http-violations ' 
# Nouveau 4.0 
OPTIONS=$OPTIONS' --enable-delay-pools ' 
OPTIONS=$OPTIONS' --enable-kill-parent-hack ' 
OPTIONS=$OPTIONS' --enable-translation ' 
cd squid-4..... 
./bootstrap 
./configure $OPTIONS 2>&1 | tee LOG.CONFIGURE make clean 2>&1 | tee LOG.CLEAN 
make -j 3 2>&1 | tee LOG.MAK 
make clean 2>&1 | tee LOG.CLEAN 
make -j 3 2>&1 | tee LOG.MAK

Il ne vous restera plus qu'à effectuer un "sudo make install" pour disposer de cette dernière version qui fonctionne parfaitement avec libssl 1.1. 
A noter : le reste de l'installation, y compris le paramétrage, restent identiques à ceux utilisés pour la version 3.5. 
 

Améliorer le filtrage de Squid

Améliorer le filtrage de Squid jpp

La fonction filtre de Squid fonctionne essentiellement à l'aide de listes noires, il est donc essentiel de disposer de "listes noires" à jour car les publicitaires "invasifs" n'hésitent pas à modifier leurs noms de domaines et les adresses IP de leurs machines (merci le cloud !).

Une bonne source de ces listes est le site https://pgl.yoyo.org, vous pouvez aussi aller voir https://yoyo.org. 
Comme ces listes ne sont pas forcément dans un format reconnu par Squid, j'utilise deux scripts qui effectuent :

  • La récupération des données.
  • Leur mise en forme.
  • Leur placement dans le bon répertoire sous le "bon nom" reconnu par le paramétrage de Squid.

 Le paramétrage dans "squid.conf" est simple, il suffit d'ajouter :

Paramétrage SQUID

acl         yoyo_ip     dst      "/etc/squid/yoyo_bad_adresses.txt" 
deny_info     http://xxxxxxx/deny.png   yoyo_ip 
http_access     deny     yoyo_ip

acl    ad_block    dstdom_regex    "/etc/squid/ad_block.db" 
deny_info     http://xxxxxxx/deny.png  ad_block 
http_access    deny        ad_block

Note : le renvoi est fait vers un serveur Apache (Nginx doit faire aussi bien) résidant sur la même machine, le fichier "deny.png" est une simple image d'un petit point rouge. 
On doit pouvoir faire le même genre d'opération avec un fichier "local" sur les postes clients. 
Ces scripts sont, plus ou moins, paramétrables à l'aide d'un fichier ".conf"et réalisent les opérations pour lesquelles ils ont été conçus. 
Il est conseillé de les lancer une fois par semaine afin de bénéficier d'une mise à jour régulière.

Les scripts sont disponibles ici en format tar.gz.

Carbonio

Carbonio jpp

Zimbra ayant annoncé que la version "opensource" ne serait pas continuée je me suis mis à la recherche d'un "remplaçant" et j'ai trouvé "Carbonio" qui semble être un "fork" de Zimbra et présente le même genre de fonctionnalités.

Je ne vais pas m'étendre sur l'installation, une seule consigne : il faut suivre "à la lettre" la procédure, et, même si un message semble vous demander de faire autrement (cela m'est arrivé) il ne faut pas dévier de la procédure.
Il est toutefois "conseillé" d'installer le logiciel dans une machine virtuelle avec la "bonne" version de Ubuntu, prendre de préférence une "LTM" car on ne change pas de logiciel de messagerie tous les jours ....
Une fois la MV "vierge" installée en faire une bonne sauvegarde "au cas ou".
Pour le reste rien de très compliqué, les notices de Zextras sont bien faites.

Utiliser Spamhaus

Utiliser Spamhaus jpp

L'installation s'est bien terminée, l'interface Web fonctionne et l'accès depuis Evolution ou Thunderbird fonctionne parfaitement, la première chose qui nous manque est le paramétrage des sites "antispam", oui cela sert ! 
Or l'interface Web d'administration ne donne pas accès (au moins pas encore) à ce type de données, il faut passer par le CLI et des commandes de paramétrages "un peu" ésotériques.
Le mini-script suivant permet d'installer 4 sites antispam d'un coup :

  1.  Abuseat.org (division de Spamhaus) 
  2.  Spamcop.net
  3.  Spamhaus.org
  4.  barracudecentral.org

Cet ensemble doit permettre de "purifier" un peu les mais reçus, voici le petit script qui réalise ce miracle.

carbonio prov mcf \
zimbraMtaRestriction reject_invalid_helo_hostname \
zimbraMtaRestriction reject_unknown_helo_hostname \
zimbraMtaRestriction reject_unknown_client_hostname \
zimbraMtaRestriction reject_unknown_reverse_client_hostname \
zimbraMtaRestriction reject_non_fqdn_sender \
zimbraMtaRestriction reject_unknown_sender_domain \
zimbraMtaRestriction reject_invalid_hostname  \
zimbraMtaRestriction "reject_rbl_client cbl.abuseat.org" \
zimbraMtaRestriction "reject_rbl_client bl.spamcop.net" \
zimbraMtaRestriction "reject_rbl_client sbl.spamhaus.org" \
zimbraMtaRestriction "reject_rbl_client b.barracudacentral.org"

Et on vérifie avec la commande :

carbonio prov gcf zimbraMtaRestriction
qui retourne :
zimbraMtaRestriction: reject_invalid_helo_hostname
zimbraMtaRestriction: reject_unknown_helo_hostname
zimbraMtaRestriction: reject_unknown_client_hostname
zimbraMtaRestriction: reject_unknown_reverse_client_hostname
zimbraMtaRestriction: reject_non_fqdn_sender
zimbraMtaRestriction: reject_unknown_sender_domain
zimbraMtaRestriction: reject_invalid_hostname
zimbraMtaRestriction: reject_rbl_client cbl.abuseat.org
zimbraMtaRestriction: reject_rbl_client bl.spamcop.net
zimbraMtaRestriction: reject_rbl_client sbl.spamhaus.org
zimbraMtaRestriction: reject_rbl_client b.barracudacentral.org

Et c'est tout pour aujourd'hui.

Attention.

Il semble que certaines mises à jour "écrasent" ces données, il faut donc vérifier périodiquement ?
(A confirmer).

Application Carbonio Iphone

Application Carbonio Iphone drupadmin

Carbonio offre aussi une application pour téléphones (Versions Iphone et Android).

La connexion s'effectue par le service "web" standard du serveur web de Carbonio, celui que vous utilisez avec votre browser favori,  (bien indiquer le port) et fonctionne parfaitement.
L'interface (Iphone) , je n'ai pas testé la version pour Android, est fonctionnel et permet de lire agréablement les mails.
Première image : écran d'affichage des mails reçus :

Ecran de démarrage

La fenêtre de lecture des mails est parfaitement lisible et le menu (smple) facilement accessible.
Je n'ai pas testé la partie "contacts" car ... je n'ai pas encore saisi de contacts dans Carbonio ...

L'aspect "utilisateur"

L'aspect "utilisateur" jpp

Le premier écran rencontré, celui de login apparaît sur un fond qui fait un peu "bande dessinée" : 
 

Ecran de login

Après avoir fourni login et mot de passe on arrive sur l'affichage des mails :

Ecran de login

La colonne la plus à gauche donne accès à :

  1.  Emails
  2.  Calendrier
  3.  Contacts
  4.  Fichiers
  5.  Recherche
  6. Paramètres principaux

La colonne suivante présente ici (affichage des mails) les différents dossiers de courrier, il est tout à fait facile de créer de nouveaux dossiers ...
Le gros "bouton bleu" en haut permet de créer :

  1.  un mail
  2.  un nouveau contact
  3.  un nouveau groupe de contacts
  4.  de télécharger un fichier ...

L'écriture d'un nouveau mail ouvre une petite fenêtre dans l'écran :

Ecran de login

Cette fenêtre possède à peu près tout ce qu'il faut pour écrire un "beau" mail avec fontes et tout le reste.