====== Déploiement de configuration pour Thunderbird et Firefox ====== Il est possible de gérer la configuration des logiciels Mozilla Thunderbird et Mozilla Firefox de façon centralisée, grâce la fonction appelée MCD ((**M**ission **C**ontrol **D**esktop)) (aussi appelée AutoConfig). Le problème est simplement que cette fonction n'est pas très bien documentée. On peut trouver quelques informations par ci par là, mais rien de très complet. Cette page essaiera de combler ce vide. Je tiens quand même à préciser que je n'ai rien inventé ici, je me suis contenté de glaner des informations sur différents sites web. Une de mes principales sources d'inspiration a été [[http://www.famille-fontes.net/comments.php?y=09&m=10&entry=entry091031-193036|cette page]] ===== Prérequis ===== La méthode décrite ici nécessite: * Un annuaire LDAP dans lequel les informations sur vos utilisateurs sont stockées * Un serveur Web gérant le PHP, avec les extensions ldap (php-ldap) * Une uniformisation des identifiants (les identifiants des utilisateurs sur les postes Windows doivent correspondre aux identifiants dans l'annuaire LDAP) Le serveur LDAP et le serveur web peuvent tout à fait être séparés, tout dépend de votre infrastructure en place. ===== Principes ===== Le déploiement de configuration se passe en plusieurs étapes. Il faut d'abord indiquer à Thunderbird et Firefox où récupérer leur configuration. La configuration peut être récupérée de plusieurs façon (fichier local, http, ftp etc…). Dans cet exemple, ce sera une URI HTTP qui sera utilisée. À chaque démarrage, Thunderbird va contacter le serveur qui héberge la configuration, en passant en paramètre l'utilisateur en cours (qui sera récupéré dans une variable d'environnement). À partir du nom d'utilisateur, un script en PHP sur votre serveur va interroger un annuaire LDAP pour connaitre les adresses mails attribuées, et éventuellement d'autres informations (comme l'appartenance à des groupes spécifiques). La sortie de ce script PHP sera une configuration pour Thunderbird, qui sera appliquée sur le poste et conservée en cache. Si Thunderbird ne peut pas contacter le serveur, alors la dernière configuration connue sera appliquée. ===== Script de génération de configuration ===== Commençons par mettre en place le script PHP qui se chargera de générer la configuration pour les clients. Placez ces scripts dans /usr/share/mozilla-mcd (par exemple): * thunderbird.php (générateur de configuration pour Thunderbird) // Linux / UNIX ? if(getenv("USER") != "") { var path_sep = '/'; var path_profile = getenv("HOME"); } // Windows ? else { var path_sep = '\\'; var path_profile = getenv("USERPROFILE"); } // Local Account ("mail.account.account1.server", "server1"); ("mail.accountmanager.localfoldersserver", "server1"); ("mail.server.server1.directory-rel", "[ProfD]Mail/Local Folders"); ("mail.server.server1.hostname", "Local Folders"); ("mail.server.server1.name", "Dossiers locaux"); ("mail.server.server1.type", "none"); ("mail.server.server1.userName", "nobody"); // SMTP config ("mail.smtp.defaultserver", "smtp1"); ("mail.smtpservers", "smtp1"); ("mail.smtpserver.smtp1.try_ssl", 3); ("mail.smtpserver.smtp1.port", ); ("mail.smtpserver.smtp1.hostname", ""); ("mail.smtpserver.smtp1.username", ""); // Default account is acocunt2 (the personal account) ("mail.accountmanager.defaultaccount", "account2"); // Personnal account ("mail.account.account2.server", "server"); ("mail.server.server2.hostname", ""); ("mail.server.server2.name", ""); ("mail.server.server2.port", ); ("mail.server.server2.socketType", 3); ("mail.server.server2.type", "imap"); ("mail.server.server2.userName", ""); ("mail.identity.id.fullName", ""); ("mail.identity.id.organization", ""); ("mail.identity.id.smtpServer", "smtp1"); ("mail.identity.id.useremail", ""); ("mail.identity.id.valid", true); defaultPref("mail.identity.id.fcc_folder", "imap://@/Sent"); defaultPref("mail.identity.id.draft_folder", "imap://@/Drafts"); defaultPref("mail.identity.id.stationery_folder", "imap://@/Templates"); defaultPref("mail.identity.id.attach_signature", true); defaultPref("mail.identity.id.sig_file", path_profile+path_sep+"signature"+path_sep+"email.html"); ("mail.account.account2.identities", ""); ("mail.accountmanager.accounts", "account1,account2"); // Disable auto updates ("app.update.enabled", false); ("app.update.auto", false); // Extensions ("extensions.installDistroAddons", true); ("extensions.enabledScopes", 13); ("extensions.autoDisableScopes", 2); // Spam ("mail.adaptivefilters.junk_threshold", 500); // Checks IMAP folders defaultPref("mail.check_all_imap_folders_for_new", true); // Composition defaultPref("mail.default_html_action", 3); // Attachments defaultPref("mail.content_disposition_type ", 1); // Expunge defaultPref("mail.imap.expunge_option", 3); defaultPref("mail.imap.expunge_threshold_number", 100); // Adds the domain from your email address to the // recipients email address if it doesn't have a domain ("mail.enable_autocomplete", true); // Hide useless messages ("mail.ui.show.migration.on.upgrade", false); ("app.update.showInstalledUI", false); ("browser.startup.homepage_override.mstone", "ignore"); ("mailnews.start_page_override.mstone", "ignore"); ("mail.rights.version", 1); * firefox.php (générateur de configuration pour Firefox) // Disable auto updates ("app.update.enabled", false); ("app.update.auto", false); // Extensions ("extensions.installDistroAddons", true); ("extensions.enabledScopes", 13); ("extensions.autoDisableScopes", 2); // Disable the "know your rights" message ("browser.rights.3.shown", true); // Home page ("browser.startup.homepage", ""); ("browser.startup.page", 1); ("startup.homepage_override_url", ""); ("startup.homepage_welcome_url", ""); // Do not check for default browser ("browser.shell.checkDefaultBrowser", false); // Disable popup blocker // not that very useful anymore, and blocks legitim popups from SOGo ("dom.disable_open_during_load", false); // Block 3rd party cookies ("network.cookie.cookieBehavior", 1); * conf.php (fichier de configuration commun pour thunderbird et firefox) ==== Explications sur conf.php ==== Le script conf.php vous permet de définir votre nom de domaine, le serveur LDAP et la base qui contient les utilisateurs, les paramètres de votre serveur IMAP (nom d'hôte et port) ainsi que de votre serveur SMTP. La page d'accueil pour Firefox, le type de préférence pour Firefox et Thunderbird (defaultPref ne configure que des paramètres par défaut, les utilisateurs peuvent les changer, alors que lockPref vérouille les paramètres). Vous pouvez aussi définir une liste de groupes d'utilisateurs pour lesquels les préférences ne seront jamais verrouillés. Pour cette dernière fonction, on utilise un attribut LDAP non standard nommé posixMemberOf, qui donne la liste des groupes pour chaque utilisateur (un peu comme le memberOf sur AD, mais sans utiliser de DN complet). Si votre annuaire ne dispose pas de cet attribut (ce qui sera probablement le cas sauf si vous utilisez une iPasserelle), il faudra adapter les scripts thunderbird.php et firefox.php pour utiliser une autre requête LDAP. ==== Configuration du serveur web ==== Il ne reste plus qu'à rendre ces scripts accessible par votre serveur web, par exemple pour apache, quelque chose comme ça devrait faire l'affaire: Alias /thunderbird.cfg /usr/share/mozilla-mcd/thunderbird.php Alias /firefox.cfg /usr/share/mozilla-mcd/firefox.php AddType application/x-httpd-php .php .php3 php_admin_value open_basedir /usr/share/mozilla-mcd Order deny,allow Deny from all Allow from 192.168.23.0/24 order deny,allow Deny from all ==== Testez le tout ==== Vous pouvez déjà vérifier le fonctionnement en vous rendant avec votre navigateur sur [[https://votre-serveur.com/thunderbird.php?utilisateur@domain.tld|https://votre-serveur.com/thunderbird.php?utilisateur@domain.tld]] (utilisateur doit être un identifiant valide et présent dans votre annuaire LDAP). N'allez pas plus loin si cette partie ne fonctionne pas, vous devez ici obtenir un fichier de configuration. ===== Configuration sur les postes clients ===== Il ne reste plus qu'à indiquer sur les postes l'URI pour récupérer la configuration. Pour celà, il faut créer deux fichiers pour Thunderbird: * C:\Program Files\Mozilla Thunderbird\defaults\pref\autoconf.js // Autoconfig pref("general.config.obscure_value", 0); pref("general.config.filename", "thunderbird.cfg"); * C:\Program Files\Mozilla Thunderbird\thunderbird.cfg // Autoconf if(getenv("USER") != "") { var user = getenv("USER"); } else { var env_user = getenv("USERNAME"); } var mail = env_user + '@domain.tld'; lockPref("mail.identity.useremail", mail); lockPref("autoadmin.append_emailaddr", true); lockPref("autoadmin.global_config_url", "https://mon-serveur.com/thunderbird.cfg"); lockPref("autoadmin.failover_to_cached", true); lockPref("autoadmin.offline_failover", true); * C:\Program Files\Mozilla Firefox\defaults\pref\autoconf.js // Autoconfig pref("general.config.obscure_value", 0); pref("general.config.filename", "firefox.cfg"); * C:\Program Files\Mozilla Firefox\firefox.cfg // Autoconf if(getenv("USER") != "") { var user = getenv("USER"); } else { var env_user = getenv("USERNAME"); } var mail = env_user + '@domain.tld'; lockPref("mail.identity.useremail", mail); lockPref("autoadmin.append_emailaddr", true); lockPref("autoadmin.global_config_url", "https://mon-serveur.com/firefox.cfg"); lockPref("autoadmin.failover_to_cached", true); lockPref("autoadmin.offline_failover", true); Il est possible de déployer ces fichiers de configuration sur l'ensemble de vos postes, avec [[http://www.wpkg.org|WPKG]] par exemple.