Installation SquirrelMail · 16 min read · Sep 28, 2025
Utilisateurs et domaines virtuels avec Postfix, Courier, MySQL et SquirrelMail (Mandriva 2009.1 x86_64) - Page 5
15 Installation de SquirrelMail
SquirrelMail est une interface de webmail qui permettra à vos utilisateurs d’envoyer et de recevoir des e-mails dans un navigateur. Ce chapitre montre comment l’installer et l’ajuster à notre configuration afin que les utilisateurs puissent même changer leur mot de passe de compte e-mail depuis l’interface SquirrelMail.
Pour installer SquirrelMail, il suffit de taper :
urpmi squirrelmailSquirrelMail est livré avec quelques plugins pré-installés, malheureusement aucun d’eux n’est capable de nous permettre de changer notre mot de passe e-mail dans notre base de données MySQL. Mais il existe le plugin Change SQL Password que nous pouvons installer manuellement :
cd /var/www/squirrelmail/plugins/
wget http://squirrelmail.org/countdl.php?fileurl=http%3A%2F%2Fwww.squirrelmail.org%2Fplugins%2Fchange_sqlpass-3.3-1.2.tar.gz
tar xvfz change_sqlpass-3.3-1.2.tar.gz
cd change_sqlpass
cp config.php.sample config.phpMaintenant, nous devons éditer config.php et l’ajuster à notre configuration. Veuillez ajuster les variables $csp_dsn, $lookup_password_query, $password_update_queries, $password_encryption, $csp_salt_static et $csp_delimiter comme suit et commenter $csp_salt_query :
vi config.php| [...] $csp_dsn = 'mysql://mail_admin:mail_admin_password@localhost/mail'; [...] $lookup_password_query = 'SELECT count(*) FROM users WHERE email = "%1" AND password = %4'; [...] $password_update_queries = array('UPDATE users SET password = %4 WHERE email = "%1"'); [...] $password_encryption = 'MYSQLENCRYPT'; [...] $csp_salt_static = 'LEFT(password, 2)'; [...] //$csp_salt_query = 'SELECT salt FROM users WHERE username = "%1"'; [...] $csp_delimiter = '@'; [...] |
Le fichier complet ressemble à ceci :
| * 2002-2005 Paul Lesneiwski <[email protected]> * Ce programme est sous licence GPL. Voir COPYING pour les détails * * @package plugins * @subpackage Change SQL Password * */ // Variables globales, ne touchez pas à cela sauf si vous voulez casser le plugin // global $csp_dsn, $password_update_queries, $lookup_password_query, $force_change_password_check_query, $password_encryption, $csp_salt_query, $csp_salt_static, $csp_secure_port, $csp_non_standard_http_port, $csp_delimiter, $csp_debug, $min_password_length, $max_password_length, $include_digit_in_password, $include_uppercase_letter_in_password, $include_lowercase_letter_in_password, $include_nonalphanumeric_in_password; // csp_dsn // // Théoriquement, toute base de données SQL supportée par Pear devrait être supportée // ici. Le DSN (nom de la source de données) doit contenir les informations nécessaires // pour se connecter à votre backend de base de données. Un exemple MySQL est inclus ci-dessous. // Pour plus de détails sur la syntaxe DSN et la liste des types de bases de données supportés, // veuillez consulter : // http://pear.php.net/manual/en/package.database.db.intro-dsn.php // //$csp_dsn = 'mysql://user:password@localhost/email_users'; $csp_dsn = 'mysql://mail_admin:mail_admin_password@localhost/mail'; // lookup_password_query // // Ce plugin vérifiera toujours l'ancien mot de passe de l'utilisateur // par rapport à leur mot de passe de connexion, mais une vérification supplémentaire peut également // être effectuée contre la base de données pour plus de sécurité si vous // le souhaitez. Si vous n'avez pas besoin de la vérification de mot de passe supplémentaire, // assurez-vous que ce paramètre est vide. // // C'est une requête qui renvoie une valeur positive si un utilisateur // et un mot de passe sont trouvés dans la base de données. // // Cette requête doit renvoyer une valeur (une ligne, une colonne), la // valeur étant idéalement un ou un zéro, indiquant simplement que // la paire utilisateur/mot de passe existe effectivement dans la base de données. // // %1 dans cette requête sera remplacé par le nom d'utilisateur complet // (y compris le domaine), tel que "[email protected]" // %2 dans cette requête sera remplacé par le nom d'utilisateur (sans // aucune portion de domaine), tel que "jose" // %3 dans cette requête sera remplacé par le nom de domaine, // tel que "example.com" // %4 dans cette requête sera remplacé par le mot de passe actuel (ancien) // dans le format de cryptage nécessaire selon les autres // paramètres de configuration du plugin (Notez que la syntaxe du // mot de passe sera fournie en fonction de vos choix de cryptage, // donc vous N'AVEZ JAMAIS besoin de fournir des guillemets autour de cette // valeur dans la requête ici.) // %5 dans cette requête sera remplacé par le mot de passe actuel (ancien) // en texte clair non crypté. Si vous n'utilisez pas de // cryptage de mot de passe, %4 et %5 seront les mêmes valeurs, // sauf que %4 aura des guillemets autour et %5 ne le sera pas. // //$lookup_password_query = ''; // SÉCURITÉ TERRIBLE : $lookup_password_query = 'SELECT count(*) FROM users WHERE username = "%1" AND plain_password = "%5"'; //$lookup_password_query = 'SELECT count(*) FROM users WHERE username = "%1" AND crypt_password = %4'; $lookup_password_query = 'SELECT count(*) FROM users WHERE email = "%1" AND password = %4'; // password_update_queries // // Un tableau de requêtes SQL qui seront toutes exécutées // chaque fois qu'une tentative de changement de mot de passe est faite. // // Un nombre quelconque de requêtes peut être inclus ici. // Les requêtes seront exécutées dans l'ordre donné ici. // // %1 dans toutes les requêtes sera remplacé par le nom d'utilisateur complet // (y compris le domaine), tel que "[email protected]" // %2 dans toutes les requêtes sera remplacé par le nom d'utilisateur (sans // aucune portion de domaine), tel que "jose" // %3 dans toutes les requêtes sera remplacé par le nom de domaine, // tel que "example.com" // %4 dans toutes les requêtes sera remplacé par le nouveau mot de passe // dans le format de cryptage nécessaire selon les autres // paramètres de configuration du plugin (Notez que la syntaxe du // mot de passe sera fournie en fonction de vos // choix de cryptage, donc vous N'AVEZ JAMAIS besoin de fournir des guillemets // autour de cette valeur dans les requêtes ici.) // %5 dans toutes les requêtes sera remplacé par le nouveau mot de passe // en texte clair non crypté - ATTENTION ! Si vous n'utilisez pas de // cryptage de mot de passe, %4 et %5 seront les mêmes // valeurs, sauf que %4 aura des guillemets autour // et %5 ne le sera pas. // //$password_update_queries = array( // 'UPDATE users SET crypt_password = %4 WHERE username = "%1", // 'UPDATE user_flags SET force_change_pwd = 0 WHERE username = "%1", // 'UPDATE users SET crypt_password = %4, force_change_pwd = 0 WHERE username = "%1", // ); $password_update_queries = array('UPDATE users SET password = %4 WHERE email = "%1"'); // force_change_password_check_query // // Une requête qui vérifie un drapeau indiquant si un utilisateur // doit être forcé de changer son mot de passe. Cette requête // doit renvoyer une valeur (une ligne, une colonne) qui est // zéro si l'utilisateur n'a PAS besoin de changer son mot de passe, // ou un si l'utilisateur doit être forcé de le changer maintenant. // // Ce paramètre doit être une chaîne vide si vous ne souhaitez pas // activer cette fonctionnalité. // // %1 dans cette requête sera remplacé par le nom d'utilisateur complet // (y compris le domaine), tel que "[email protected]" // %2 dans cette requête sera remplacé par le nom d'utilisateur (sans // aucune portion de domaine), tel que "jose" // %3 dans cette requête sera remplacé par le nom de domaine, // tel que "example.com" // //$force_change_password_check_query = 'SELECT IF(force_change_pwd = "yes", 1, 0) FROM users WHERE username = "%1"'; //$force_change_password_check_query = 'SELECT force_change_pwd FROM users WHERE username = "%1"'; $force_change_password_check_query = ''; // password_encryption // // Quelle méthode de cryptage utilisez-vous pour stocker les mots de passe // dans votre base de données ? Veuillez utiliser l'une des suivantes, // exactement comme vous la voyez : // // AUCUN Les mots de passe sont stockés en texte clair uniquement // MYSQLPWD Les mots de passe sont stockés en utilisant la fonction password() de MySQL // MYSQLENCRYPT Les mots de passe sont stockés en utilisant la fonction encrypt() de MySQL // PHPCRYPT Les mots de passe sont stockés en utilisant la fonction crypt() de PHP // MD5CRYPT Les mots de passe sont stockés en utilisant l'algorithme MD5 crypté // MD5 Les mots de passe sont stockés sous forme de hachage MD5 // //$password_encryption = 'MYSQLPWD'; $password_encryption = 'MYSQLENCRYPT'; // csp_salt_query // csp_salt_static // // Les types de cryptage qui ont besoin d'un sel doivent savoir où obtenir // ce sel. Si vous avez une valeur de sel constante et connue, // vous devez la définir dans $csp_salt_static. Sinon, laissez cette // valeur vide et définissez une valeur pour le $csp_salt_query. // // Laissez les deux valeurs vides si vous n'avez pas besoin (ou n'utilisez pas) de sels // pour crypter vos mots de passe. // // La requête doit renvoyer une valeur (une ligne, une colonne) qui // est la valeur de sel pour le mot de passe de l'utilisateur actuel. Cette // requête est ignorée si $csp_salt_static n'est pas vide. // // %1 dans cette requête sera remplacé par le nom d'utilisateur complet // (y compris le domaine), tel que "[email protected]" // %2 dans cette requête sera remplacé par le nom d'utilisateur (sans // aucune portion de domaine), tel que "jose" // %3 dans cette requête sera remplacé par le nom de domaine, // tel que "example.com" // //$csp_salt_static = 'LEFT(crypt_password, 2)'; //$csp_salt_static = '"a4"'; // utilisez ce format avec MYSQLENCRYPT //$csp_salt_static = '$2$blowsomefish$'; // utilisez ce format avec PHPCRYPT //$csp_salt_static = ''; $csp_salt_static = 'LEFT(password, 2)'; //$csp_salt_query = 'SELECT SUBSTRING_INDEX(crypt_password, '$', 1) FROM users WHERE username = "%1"'; //$csp_salt_query = 'SELECT SUBSTRING(crypt_password, (LENGTH(SUBSTRING_INDEX(crypt_password, '$', 2)) + 2)) FROM users WHERE username = "%1"'; //$csp_salt_query = 'SELECT salt FROM users WHERE username = "%1"'; //$csp_salt_query = ''; // csp_secure_port // // Vous pouvez vous assurer que le cryptage SSL est utilisé lors du changement de mot de passe // en définissant cela sur le port sur lequel votre HTTPS est servi // (443 est typique). Définissez sur zéro si vous ne souhaitez pas forcer // une connexion HTTPS lorsque les utilisateurs changent leurs mots de passe. // // Vous pouvez remplacer cette valeur pour certains domaines, utilisateurs, ou // niveaux de service via le plugin Virtual Host Login (vlogin) // en définissant une ou plusieurs valeurs pour $vlogin_csp_secure_port dans la configuration vlogin. // $csp_secure_port = 0; //$csp_secure_port = 443; // csp_non_standard_http_port // // Si vous servez des requêtes web HTTP standard sur un port non standard // (tout autre que le port 80), vous devez spécifier ce // numéro de port ici. Définissez sur zéro sinon. // // Vous pouvez remplacer cette valeur pour certains domaines, utilisateurs, ou // niveaux de service via le plugin Virtual Host Login (vlogin) // en définissant une ou plusieurs valeurs pour $vlogin_csp_non_standard_http_port // dans la configuration vlogin. // //$csp_non_standard_http_port = 8080; $csp_non_standard_http_port = 0; // min_password_length // max_password_length // include_digit_in_password // include_uppercase_letter_in_password // include_lowercase_letter_in_password // include_nonalphanumeric_in_password // // Vous pouvez définir les longueurs minimales et maximales des mots de passe que // vous acceptez ou laisser ces paramètres à zéro pour indiquer qu'aucune limite // ne doit être appliquée. // // Activez l'un des autres paramètres ici pour vérifier que le // nouveau mot de passe contient au moins un chiffre, une lettre majuscule, // une lettre minuscule et/ou un caractère non alphanumérique. // $min_password_length = 6; $max_password_length = 0; $include_digit_in_password = 0; $include_uppercase_letter_in_password = 0; $include_lowercase_letter_in_password = 0; $include_nonalphanumeric_in_password = 0; // csp_delimiter // // si votre système a des noms d'utilisateur avec autre chose que // un signe "@" séparant la portion utilisateur et domaine, // spécifiez ce caractère ici // //$csp_delimiter = '|'; $csp_delimiter = '@'; // mode débogage // $csp_debug = 0; ?> |
Maintenant, nous devons entrer dans la configuration de SquirrelMail et dire à SquirrelMail que nous utilisons Courier comme notre serveur POP3 et IMAP (si vous ne faites pas cela, vous verrez probablement des erreurs telles que
ERROR: Could not complete request.
Query: CREATE "Sent"
Reason Given: Invalid mailbox name.lorsque vous vous connectez à SquirrelMail) et activer le plugin Change SQL Password et désactiver les autres plugins de mot de passe :
/var/www/squirrelmail/conf/conf.plVous verrez le menu suivant. Tapez D pour changer le serveur IMAP/POP3 :
SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Menu Principal --
1. Préférences d'organisation
2. Paramètres du serveur
3. Paramètres par défaut des dossiers
4. Options générales
5. Thèmes
6. Carnets d'adresses
7. Message du jour (MOTD)
8. Plugins
9. Base de données
10. LanguesD. Définir des paramètres prédéfinis pour des serveurs IMAP spécifiquesC Désactiver la couleur
S Enregistrer les données
Q QuitterCommande >> <– D
SquirrelMail Configuration : Read: config.php
---------------------------------------------------------
Alors que nous avons construit SquirrelMail, nous avons découvert quelques
préférences qui fonctionnent mieux avec certains serveurs qui ne fonctionnent pas si
bien avec d'autres. Si vous sélectionnez votre serveur IMAP, cette option va
configurer certains paramètres prédéfinis pour ce serveur.Veuillez noter que vous devrez toujours passer en revue et vous assurer que
tout est correct. Cela ne change pas tout. Il n'y a que quelques paramètres que cela changera.Veuillez sélectionner votre serveur IMAP :
bincimap = Serveur IMAP Binc
courier = Serveur IMAP Courier
cyrus = Serveur IMAP Cyrus
dovecot = Serveur IMAP sécurisé Dovecot
exchange = Serveur IMAP Microsoft Exchange
hmailserver = hMailServer
macosx = Serveur de messagerie Mac OS X
mercury32 = Mercury/32
uw = Serveur IMAP de l'Université de Washingtonquitter = Ne rien changer
Commande >> <– courier
imap_server_type = courier
default_folder_prefix = INBOX.
trash_folder = Trash
sent_folder = Sent
draft_folder = Drafts
show_prefix_option = false
default_sub_of_inbox = false
show_contain_subfolders_option = false
optional_delimiter = .
delete_folder = true
Appuyez sur n’importe quelle touche pour continuer… <– appuyez sur n’importe quelle touche
SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Menu Principal --
1. Préférences d'organisation
2. Paramètres du serveur
3. Paramètres par défaut des dossiers
4. Options générales
5. Thèmes
6. Carnets d'adresses
7. Message du jour (MOTD)
8. Plugins
9. Base de données
10. LanguesD. Définir des paramètres prédéfinis pour des serveurs IMAP spécifiquesC Désactiver la couleur
S Enregistrer les données
Q QuitterCommande >> <– 8
SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Plugins
Plugins installés
1. delete_move_next
2. squirrelspell
3. newmail
4. filters
5. address_add
6. change_pass
7. quota_usage
8. change_ldappass
9. avelsieve
10. windows
11. folder_sizes
12. archive_mail
13. empty_foldersPlugins disponibles :
14. abook_import_export
15. administrator
16. block_sender
17. bookmarks
18. bug_report
19. calendar
20. change_sqlpass
21. compatibility
22. demo
23. fortune
24. info
25. junkfolder
26. ldifimport
27. listcommands
28. login_image
29. mail_fetch
30. message_details
31. rewrap
32. secure_login
33. select_range
34. sent_subfolders
35. spam_buttons
36. spamassassin
37. spamcop
38. test
39. translate
40. usernameR Retour au menu principal
C Désactiver la couleur
S Enregistrer les données
Q QuitterCommande >> <– 21 (ou quel que soit le numéro du plugin de compatibilité - il est nécessaire pour le plugin change_sqlpass)
SquirrelMail Configuration : Read: config.php (1.4.0)
Plugins
Plugins installés
- delete_move_next
- squirrelspell
- newmail
- filters
- address_add
- change_pass
- quota_usage
- change_ldappass
- avelsieve
- windows
- folder_sizes
- archive_mail
- empty_folders
- compatibilityPlugins disponibles :
- abook_import_export
- administrator
- block_sender
- bookmarks
- bug_report
- calendar
- change_sqlpass
- demo
- fortune
- info
- junkfolder
- ldifimport
- listcommands
- login_image
- mail_fetch
- message_details
- rewrap
- secure_login
- select_range
- sent_subfolders
- spam_buttons
- spamassassin
- spamcop
- test
- translate
- usernameR Retour au menu principal
C Désactiver la couleur
S Enregistrer les données
Q QuitterCommande >> <-- 21 (le numéro du plugin change_sqlpass) SquirrelMail Configuration : Read: config.php (1.4.0) --------------------------------------------------------- Plugins Plugins installés 1. delete_move_next 2. squirrelspell 3. newmail 4. filters 5. address_add 6. quota_usage 7. change_ldappass 8. avelsieve 9. windows 10. folder_sizes 11. archive_mail 12. empty_folders 13. compatibility 14. change_sqlpass
Plugins disponibles :
15. abook_import_export
16. administrator
17. block_sender
18. bookmarks
19. bug_report
20. calendar
21. change_pass
22. demo
23. fortune
24. info
25. junkfolder
26. ldifimport
27. listcommands
28. login_image
29. mail_fetch
30. message_details
31. rewrap
32. secure_login
33. select_range
34. sent_subfolders
35. spam_buttons
36. spamassassin
37. spamcop
38. test
39. translate
40. usernameR Retour au menu principal
C Désactiver la couleur
S Enregistrer les données
Q QuitterCommande >> <– 6 (le numéro du plugin change_pass)
SquirrelMail Configuration : Read: config.php (1.4.0)
Plugins
Plugins installés
- delete_move_next
- squirrelspell
- newmail
- filters
- address_add
- quota_usage
- change_ldappass
- avelsieve
- windows
- folder_sizes
- archive_mail
- empty_folders
- compatibility
- change_sqlpassPlugins disponibles :
- abook_import_export
- administrator
- block_sender
- bookmarks
- bug_report
- calendar
- change_pass
- demo
- fortune
- info
- junkfolder
- ldifimport
- listcommands
- login_image
- mail_fetch
- message_details
- rewrap
- secure_login
- select_range
- sent_subfolders
- spam_buttons
- spamassassin
- spamcop
- test
- translate
- usernameR Retour au menu principal
C Désactiver la couleur
S Enregistrer les données
Q QuitterCommande >> <-- 7 (le numéro du plugin change_ldappass) SquirrelMail Configuration : Read: config.php (1.4.0) --------------------------------------------------------- Plugins Plugins installés 1. delete_move_next 2. squirrelspell 3. newmail 4. filters 5. address_add 6. quota_usage 7. avelsieve 8. windows 9. folder_sizes 10. archive_mail 11. empty_folders 12. compatibility 13. change_sqlpass
Plugins disponibles :
14. abook_import_export
15. administrator
16. block_sender
17. bookmarks
18. bug_report
19. calendar
20. change_ldappass
21. change_pass
22. demo
23. fortune
24. info
25. junkfolder
26. ldifimport
27. listcommands
28. login_image
29. mail_fetch
30. message_details
31. rewrap
32. secure_login
33. select_range
34. sent_subfolders
35. spam_buttons
36. spamassassin
37. spamcop
38. test
39. translate
40. usernameR Retour au menu principal
C Désactiver la couleur
S Enregistrer les données
Q QuitterCommande >> <– S
Données enregistrées dans config.php
Appuyez sur entrée pour continuer… <– ENTRER
SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Plugins
Plugins installés
1. delete_move_next
2. squirrelspell
3. newmail
4. filters
5. address_add
6. quota_usage
7. change_ldappass
8. avelsieve
9. windows
10. folder_sizes
11. archive_mail
12. empty_folders
13. compatibility
14. change_sqlpassPlugins disponibles :
15. abook_import_export
16. administrator
17. block_sender
18. bookmarks
19. bug_report
20. calendar
21. change_ldappass
22. change_pass
23. demo
24. fortune
25. info
26. junkfolder
27. ldifimport
28. listcommands
29. login_image
30. mail_fetch
31. message_details
32. rewrap
33. secure_login
34. select_range
35. sent_subfolders
36. spam_buttons
37. spamassassin
38. spamcop
39. test
40. usernameR Retour au menu principal
C Désactiver la couleur
S Enregistrer les données
Q QuitterCommande >> <– Q
Maintenant, vous pouvez taper http://server1.example.com/squirrelmail ou http://192.168.0.100/squirrelmail dans votre navigateur pour accéder à SquirrelMail.
Connectez-vous avec votre adresse e-mail (par exemple, [email protected]) et votre mot de passe :

Vous devriez trouver l’e-mail de bienvenue dans votre boîte de réception :


Pour changer votre mot de passe, allez dans Options puis sélectionnez Changer le mot de passe :

Tapez votre mot de passe actuel puis votre nouveau mot de passe deux fois :

SquirrelMail vous dira si le mot de passe a été changé avec succès :

16 Références
Tutoriel : Service de messagerie de style ISP avec Debian-Sarge et Postfix 2.1 : http://workaround.org/articles/ispmail-sarge/
Postfix + Quota : http://vhcs.net/new/modules/newbb/viewtopic.php?topic_id=3496&forum=17
Mots de passe de messagerie cryptés utilisant saslauthd : http://www.syscp.de/docs/public/contrib/cryptedmailpws
17 Liens
- Postfix MTA : http://www.postfix.org/
- Patch de quota Postfix : http://vda.sourceforge.net/
- phpMyAdmin : http://www.phpmyadmin.net/
- SquirrelMail : http://www.squirrelmail.org/
- Mandriva : http://www.mandriva.com/
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.