Tags:, Posted in Debian,planet-libre.org 2 Comments

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à.

14 juin 2007