Prochaine révision
|
Révision précédente
|
tuto:ipasserelle:mail:mozilla_mcd [14/09/2012 14:37] dani créée |
tuto:ipasserelle:mail:mozilla_mcd [20/10/2020 09:21] (Version actuelle) heuzef [Configuration sur les postes clients] |
| |
| |
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]] | 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]] |
| |
| |
| |
| |
* Un annuaire LDAP dans lequel les informations sur vos utilisateurs sont stockées | * 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) | * 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) | * Une uniformisation des identifiants (les identifiants des utilisateurs sur les postes Windows doivent correspondre aux identifiants dans l'annuaire LDAP) |
| |
| |
| |
| |
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é. | 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. |
| |
| |
| |
| |
* thunderbird.php (générateur de configuration pour Thunderbird) | * thunderbird.php (générateur de configuration pour Thunderbird) |
* | |
* | |
| |
<file php thunderbird.php> | <file php thunderbird.php> |
ini_set('log_errors', 1); | ini_set('log_errors', 1); |
ini_set('display_errors', 0); | ini_set('display_errors', 0); |
| |
| |
require('conf.php'); | require('conf.php'); |
| |
| |
if(isset($_SERVER['QUERY_STRING']) && preg_match('/^.+@' . DOMAIN . '$/', $_SERVER['QUERY_STRING'])) { | if(isset($_SERVER['QUERY_STRING']) && preg_match('/^.+@' . DOMAIN . '$/', $_SERVER['QUERY_STRING'])) { |
$temp = explode('@', $_SERVER['QUERY_STRING']); | $temp = explode('@', $_SERVER['QUERY_STRING']); |
$uid = $temp[0]; | $uid = $temp[0]; |
| |
| |
// Bind to the LDAP server | // Bind to the LDAP server |
$link = @ldap_connect(LDAP_SERVER) or die ("Couldn't connect to the LDAP server"); | $link = @ldap_connect(LDAP_SERVER) or die ("Couldn't connect to the LDAP server"); |
} | } |
?> | ?> |
| |
| |
// Linux / UNIX ? | // Linux / UNIX ? |
if(getenv("USER") != "") { | if(getenv("USER") != "") { |
<?php echo $pref;?>("mail.server.server1.type", "none"); | <?php echo $pref;?>("mail.server.server1.type", "none"); |
<?php echo $pref;?>("mail.server.server1.userName", "nobody"); | <?php echo $pref;?>("mail.server.server1.userName", "nobody"); |
| |
| |
// SMTP config | // SMTP config |
<?php echo $pref;?>("mail.smtp.defaultserver", "smtp1"); | <?php echo $pref;?>("mail.smtp.defaultserver", "smtp1"); |
<?php echo $pref;?>("mail.smtpserver.smtp1.hostname", "<?php echo SMTP_SERVER; ?>"); | <?php echo $pref;?>("mail.smtpserver.smtp1.hostname", "<?php echo SMTP_SERVER; ?>"); |
<?php echo $pref;?>("mail.smtpserver.smtp1.username", "<?php echo $uid; ?>"); | <?php echo $pref;?>("mail.smtpserver.smtp1.username", "<?php echo $uid; ?>"); |
| |
| |
// Default account is acocunt2 (the personal account) | // Default account is acocunt2 (the personal account) |
<?php echo $pref;?>("mail.accountmanager.defaultaccount", "account2"); | <?php echo $pref;?>("mail.accountmanager.defaultaccount", "account2"); |
| |
| |
<?php | <?php |
$mail = explode('@', $user[0]['mail'][0]); | $mail = explode('@', $user[0]['mail'][0]); |
$identities = '' | $identities = '' |
?> | ?> |
| |
| |
// Personnal account | // Personnal account |
<?php echo $pref;?>("mail.account.account2.server", "server<?php echo $server?>"); | <?php echo $pref;?>("mail.account.account2.server", "server<?php echo $server?>"); |
<?php echo $pref;?>("mail.account.account2.identities", "<?php echo $identities;?>"); | <?php echo $pref;?>("mail.account.account2.identities", "<?php echo $identities;?>"); |
<?php echo $pref;?>("mail.accountmanager.accounts", "account1,account2"); | <?php echo $pref;?>("mail.accountmanager.accounts", "account1,account2"); |
| |
| |
// Disable auto updates | // Disable auto updates |
<?php echo $pref;?>("app.update.enabled", false); | <?php echo $pref;?>("app.update.enabled", false); |
<?php echo $pref;?>("app.update.auto", false); | <?php echo $pref;?>("app.update.auto", false); |
| |
| |
// Extensions | // Extensions |
<?php echo $pref;?>("extensions.installDistroAddons", true); | <?php echo $pref;?>("extensions.installDistroAddons", true); |
<?php echo $pref;?>("extensions.enabledScopes", 13); | <?php echo $pref;?>("extensions.enabledScopes", 13); |
<?php echo $pref;?>("extensions.autoDisableScopes", 2); | <?php echo $pref;?>("extensions.autoDisableScopes", 2); |
| |
| |
// Spam | // Spam |
<?php echo $pref;?>("mail.adaptivefilters.junk_threshold", 500); | <?php echo $pref;?>("mail.adaptivefilters.junk_threshold", 500); |
| |
| |
// Checks IMAP folders | // Checks IMAP folders |
defaultPref("mail.check_all_imap_folders_for_new", true); | defaultPref("mail.check_all_imap_folders_for_new", true); |
| |
| |
// Composition | // Composition |
defaultPref("mail.default_html_action", 3); | defaultPref("mail.default_html_action", 3); |
| |
| |
// Attachments | // Attachments |
defaultPref("mail.content_disposition_type ", 1); | defaultPref("mail.content_disposition_type ", 1); |
| |
| |
// Expunge | // Expunge |
defaultPref("mail.imap.expunge_option", 3); | defaultPref("mail.imap.expunge_option", 3); |
// recipients email address if it doesn't have a domain | // recipients email address if it doesn't have a domain |
<?php echo $pref;?>("mail.enable_autocomplete", true); | <?php echo $pref;?>("mail.enable_autocomplete", true); |
| |
| |
// Hide useless messages | // Hide useless messages |
<?php echo $pref;?>("mail.ui.show.migration.on.upgrade", false); | <?php echo $pref;?>("mail.ui.show.migration.on.upgrade", false); |
<?php echo $pref;?>("mailnews.start_page_override.mstone", "ignore"); | <?php echo $pref;?>("mailnews.start_page_override.mstone", "ignore"); |
<?php echo $pref;?>("mail.rights.version", 1); | <?php echo $pref;?>("mail.rights.version", 1); |
| |
| |
<?php | <?php |
// Include other conf fragment if they exist | // Include other conf fragment if they exist |
?> | ?> |
</file> | </file> |
* firefox.php (générateur de configuration pour Firefox \\ | |
* | |
* | |
| |
| |
| * firefox.php (générateur de configuration pour Firefox) |
| |
<file php firefox.php> | <file php firefox.php> |
| |
<?php | <?php |
ini_set('log_errors', 1); | ini_set('log_errors', 1); |
ini_set('display_errors', 0); | ini_set('display_errors', 0); |
| |
| |
require('conf.php'); | require('conf.php'); |
| |
| |
if(isset($_SERVER['QUERY_STRING']) && preg_match('/^.+@' . DOMAIN . '$/', $_SERVER['QUERY_STRING'])) { | if(isset($_SERVER['QUERY_STRING']) && preg_match('/^.+@' . DOMAIN . '$/', $_SERVER['QUERY_STRING'])) { |
$temp = explode('@', $_SERVER['QUERY_STRING']); | $temp = explode('@', $_SERVER['QUERY_STRING']); |
$uid = $temp[0]; | $uid = $temp[0]; |
| |
| |
// Bind to the LDAP server | // Bind to the LDAP server |
// Not used for now, but might be usefull one day to generate conf per group or per user | // Not used for now, but might be usefull one day to generate conf per group or per user |
if (preg_match('/^https?:///', $user[0]['labeleduri'][0])) | if (preg_match('/^https?:///', $user[0]['labeleduri'][0])) |
$url = $user[0]['labeleduri'][0]; | $url = $user[0]['labeleduri'][0]; |
| |
| |
} | } |
else { | else { |
<?php echo $pref;?>("app.update.enabled", false); | <?php echo $pref;?>("app.update.enabled", false); |
<?php echo $pref;?>("app.update.auto", false); | <?php echo $pref;?>("app.update.auto", false); |
| |
| |
// Extensions | // Extensions |
<?php echo $pref;?>("extensions.installDistroAddons", true); | <?php echo $pref;?>("extensions.installDistroAddons", true); |
<?php echo $pref;?>("extensions.enabledScopes", 13); | <?php echo $pref;?>("extensions.enabledScopes", 13); |
<?php echo $pref;?>("extensions.autoDisableScopes", 2); | <?php echo $pref;?>("extensions.autoDisableScopes", 2); |
| |
| |
// Disable the "know your rights" message | // Disable the "know your rights" message |
<?php echo $pref;?>("browser.rights.3.shown", true); | <?php echo $pref;?>("browser.rights.3.shown", true); |
| |
| |
// Home page | // Home page |
<?php | <?php |
<?php echo $pref;?>("startup.homepage_override_url", ""); | <?php echo $pref;?>("startup.homepage_override_url", ""); |
<?php echo $pref;?>("startup.homepage_welcome_url", ""); | <?php echo $pref;?>("startup.homepage_welcome_url", ""); |
| |
| |
// Do not check for default browser | // Do not check for default browser |
<?php echo $pref;?>("browser.shell.checkDefaultBrowser", false); | <?php echo $pref;?>("browser.shell.checkDefaultBrowser", false); |
| |
| |
// Disable popup blocker | // Disable popup blocker |
// not that very useful anymore, and blocks legitim popups from SOGo | // not that very useful anymore, and blocks legitim popups from SOGo |
<?php echo $pref;?>("dom.disable_open_during_load", false); | <?php echo $pref;?>("dom.disable_open_during_load", false); |
| |
| |
// Block 3rd party cookies | // Block 3rd party cookies |
<?php echo $pref;?>("network.cookie.cookieBehavior", 1); | <?php echo $pref;?>("network.cookie.cookieBehavior", 1); |
| |
| |
<?php | <?php |
// Include other conf fragment if they exist | // Include other conf fragment if they exist |
?> | ?> |
</file> | </file> |
* | |
conf.php (fichier de configuration commun pour thunderbird et firefox) | |
| |
| * conf.php (fichier de configuration commun pour thunderbird et firefox) |
==== ==== | |
| |
| |
==== | |
| |
| |
==== | |
| |
| |
<file php conf.php> | <file php conf.php> |
<?php | <?php |
| |
| |
define('DOMAIN', 'domain.tld'); | define('DOMAIN', 'domain.tld'); |
define('USER_BASE', 'ou=Users,dc=domain,dc=tld'); | define('USER_BASE', 'ou=Users,dc=domain,dc=tld'); |
define('HOME_URL', 'https://www.my-super-company.com'); | define('HOME_URL', 'https://www.my-super-company.com'); |
$NOENFORCEGROUPS = array('admins','bigboss'); | $NOENFORCEGROUPS = array('admins','bigboss'); |
| |
| |
?> | ?> |
</file> | </file> |
| |
| |
==== | ==== Explications sur conf.php ==== |
Explications sur conf.php ==== | |
| |
| |
Alias /thunderbird.cfg /usr/share/mozilla-mcd/thunderbird.php | Alias /thunderbird.cfg /usr/share/mozilla-mcd/thunderbird.php |
Alias /firefox.cfg /usr/share/mozilla-mcd/firefox.php | Alias /firefox.cfg /usr/share/mozilla-mcd/firefox.php |
| |
| |
<Directory /usr/share/mozilla-mcd/> | <Directory /usr/share/mozilla-mcd/> |
AddType application/x-httpd-php .php .php3 | AddType application/x-httpd-php .php .php3 |
| |
| |
Vous pouvez déjà vérifier le fonctionnement en vous rendant avec votre navigateur sur 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. | 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. |
| |
| |
| |
| |
* C:\Program Files\Mozilla Thunderbird\defaults\pref\autoconf.js | * C:\Program Files\Mozilla Thunderbird\defaults\pref\autoconf.js |
* | |
* | |
| |
| <file javascript autoconf.js>// Autoconfig |
<file javascript autoconf.js> | |
// Autoconfig | |
pref("general.config.obscure_value", 0); | pref("general.config.obscure_value", 0); |
pref("general.config.filename", "thunderbird.cfg"); | pref("general.config.filename", "thunderbird.cfg"); |
</file> | </file> |
* C:\Program Files\Mozilla Thunderbird\thunderbird.cfg | |
| |
| |
<file javascript thunderbird.cfg> | * C:\Program Files\Mozilla Thunderbird\thunderbird.cfg |
// Autoconf | |
| |
| |
| <file javascript thunderbird.cfg>// Autoconf |
| |
| |
if(getenv("USER") != "") { | if(getenv("USER") != "") { |
var user = getenv("USER"); | var user = getenv("USER"); |
var env_user = getenv("USERNAME"); | var env_user = getenv("USERNAME"); |
} | } |
| |
| |
var mail = env_user + '@domain.tld'; | var mail = env_user + '@domain.tld'; |
| |
| |
lockPref("mail.identity.useremail", mail); | lockPref("mail.identity.useremail", mail); |
lockPref("autoadmin.append_emailaddr", true); | lockPref("autoadmin.append_emailaddr", true); |
| |
| |
* C:\Program Files\Mozilla Firefox\defaults\pref\autoconf.js | * C:\Program Files\Mozilla Firefox\defaults\pref\autoconf.js |
* | |
* | |
| |
| |
<file javascript autoconf.js> | <file javascript autoconf.js>// Autoconfig |
// Autoconfig | |
pref("general.config.obscure_value", 0); | pref("general.config.obscure_value", 0); |
pref("general.config.filename", "firefox.cfg"); | pref("general.config.filename", "firefox.cfg"); |
</file> | </file> |
* | |
C:\Program Files^Mozilla Firefox\firefox.cfg | |
| |
| |
<file javascript firefox.cfg> | * C:\Program Files\Mozilla Firefox\firefox.cfg |
// Autoconf | |
| |
| |
| <file javascript firefox.cfg>// Autoconf |
| |
| |
if(getenv("USER") != "") { | if(getenv("USER") != "") { |
var user = getenv("USER"); | var user = getenv("USER"); |
var env_user = getenv("USERNAME"); | var env_user = getenv("USERNAME"); |
} | } |
| |
| |
var mail = env_user + '@domain.tld'; | var mail = env_user + '@domain.tld'; |
| |
| |
lockPref("mail.identity.useremail", mail); | lockPref("mail.identity.useremail", mail); |
lockPref("autoadmin.append_emailaddr", true); | lockPref("autoadmin.append_emailaddr", true); |
| |
| |
Il est possible de déployer ces fichiers de configuration sur l'ensemble de vos postes, on utilise par exemple [[http://www.wpkg.org|WPKG]] pour ça. | Il est possible de déployer ces fichiers de configuration sur l'ensemble de vos postes, avec [[http://www.wpkg.org|WPKG]] par exemple. |
| |