Changement de mot de passe Linux depuis le webmail Squirrelmail

closeCet article a été publié il y a 13 ans 7 mois 9 jours, il est donc possible qu’il ne soit plus à jour. Les informations proposées sont donc peut-être expirées.

Beaucoup de mes utilisateurs Linux ont un compte chez moi uniquement pour leur boîte mail et à la limite du stockage de fichiers ou de mini-sites web. Ils n’ont en général pas d’accès SSH (et ils ne sauraient pas quoi en faire ;). C’est très bien comme cela, mais pour changer leur mot de passe, ils sont marrons. Je décris dans cet article la mise en place d’un plug-in de mon webmail permettant de changer les mots de passe.

Quelques remarques avant de commencer :

  • Je vous renvoie à ma documentation Debian où un long chapitre est dédié à l’installation d’un serveur mail avec webmail (entre autres). Il faut commencer par ça, évidemment.
  • Mon authentification de mot de passe est basée sur le fichier « shadow », donc les mots de passes des utilisateurs (et pas une base spécifique ou une authentification SASL). Il y a d’autres mécanismes et d’autres plug-ins qui répondent à ce besoin.

Je décris ci-dessous, et dans ce contexte, comment mettre en place un plug-in de changement de mot de passe sous Squirrelmail. C’est pas tout à fait automatisé sous Debian, d’où cet article.

J’ai choisi d’utiliser le plug-in qui s’appelle « change_pass« . Il ne dépend pas d’autres plug-ins de Squirrelmail. Sa documentation est suffisante mais pas aidante (voir les fichiers README, INSTALL etc).

Faites attention à la règle de nommage des plug-ins Squirrelmail avant de télécharger : ils tiennent compte de la version du plug-in et de la version nécessaire de Squirrelmail. En général, tout ceci évolue de manière assez synchrone, mais attention aux changements majeurs de version de Squirrelmail, vous pourriez perdre votre plug-in momentanément. Il vous faut un plug-in compatible avec votre squirrelmail. Exemple dans mon cas : 2.7a côté « change_pass » et 1.4(.10) côté Squirrelmail => plug-in « change_pass-2.7a-1.4.x.tar.gz« .

Téléchargez le plug-in dans votre répertoire « /usr/share/squirrelmail/plugins/ » puis décompressez-le, vous obtenez un sous-répertoire « change_pass/« .

Il faut ensuite activer le plug-in dans Squirrelmail via la commande :

squirrelmail-configure

Puis menu 8 (plug-ins), vous indiquez alors le numéro du plug-in à activer.
Pas de reboot nécessaire, juste un reload de la page « Options » si vous étiez déjà connecté à votre webmail.

Pour l’instant, néanmoins, il manque un élément, à savoir LE programme qui prend en charge le changement de mot de passe au niveau OS (shadow). Les auteurs du plug-ins conseillent d’utiliser « poppassd », un petit daemon prévu à cet effet. On pourrait sûrement raisonner à l’identique avec « courierpassd » si vous préférez (remplacez les noms dans le texte qui suit, ça devrait suffire).

Ce démon n’est lancé qu’en cas de besoin (connexion 106/TCP), grâce à inetd ou xinetd. Dans mon cas, c’est « inetd », mais je donnerai un exemple avec xinetd. Si vous ne savez pas lequel vous utilisez :

dpkg -l "*inetd*"

Personnellement, c’est « openbsd-inetd ».

Installez donc poppassd :

apt-get install poppassd

Le message suivant indique que la configuration de INETD est faite par l’installation, mais pas pour xinetd :

--------- IMPORTANT INFORMATION FOR XINETD USERS ----------
The following line will be added to your /etc/inetd.conf file:

poppassd\tstream\ttcp\tnowait\troot\t/usr/sbin/tcpd\t/usr/sbin/poppassd

If you are indeed using xinetd, you will have to convert the
above into /etc/xinetd.conf format, and add it manually. See
/usr/share/doc/xinetd/README.Debian for more information.
-----------------------------------------------------------

Pour inetd, vous devez avoir la ligne suivante dans le fichier « /etc/inetd.conf » :

poppassd        stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/poppassd

Pour xinetd, il faut – probablement – un fichier /etc/xinetd.d/poppassd contenant :

service poppassd
               {
               port = 106
               socket_type = stream
               protocol = tcp
               user = root
               server = /usr/sbin/poppassd
               server_args = -s imap
               wait = no
               only_from = 127.0.0.1
               instances = 4
               disable = no
               }

Enfin, pour dire à inetd/xinetd qu’il faut surveiller le port 106, vérifier que vous avez la ligne suivante dans « /etc/services » :

poppassd        106/tcp

Relancez INETD/XINETD, dans mon cas :

/etc/init.d/openbsd-inetd restart

Puis tentez la manipulation de changement de mot de passe depuis Squirrelmail -> Options -> Change password.

Si vous avez une erreur 111, c’est le démon qui ne se lance pas. Pour en avoir le coeur net, un « telnet localhost 106 » devrait déconner. Sinon, vous avez un message de bienvenue de poppassd et l’erreur est ailleurs.

Et voilà.

2 comments

  1. Je ne sais pas, j’ai vaguement essayé roundcube, kle temps de voir que c’était beau, mais pas fonctionnel( boite partagées KO etc). Je vais attendre une version un peu plus haute que 0.1 ou 2 je ne sais plus 🙂

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.