Virtualmin + Debian : Usermin pas démarré au boot

A tous les coups c’est pareil : il suffit que je prenne quelques jours de congé pour qu’il se passe un truc bizarre qui m’oblige à bosser. Ca doit être la loi de Murphy…

Enfin bref, voici donc le truc bizarre du jour (sur un serveur installé en Debian Lenny + Virtualmin) : un client me dit que Usermin (le webmail qui vient avec Virtualmin et qui se trouve sur le port 20000 – au contraire de Webmin qui se trouve sur le port 10000) n’est plus accessible suite à un reboot de son serveur. Vérification faite, Usermin n’était tout simplement pas lancé. Il a suffit donc de :

/etc/init.d/usermin start

Et tout est rentré dans l’ordre. Seulement voilà, c’est bien … mais pas suffisant : au prochain reboot, Usermin risque fort de ne plus être lancé. On a beau ne pas rebooter tous les jours, il faut tout de même que cela tienne le reboot ! Je m’empresse donc de vérifier sur un serveur de test et j’arrive à reproduire le problème : Usermin ne se lance effectivement plus au démarrage. Cela doit probablement dater d’une des dernières mises à jour de Usermin (peut-être la version 1.480 datant du 5 aout dernier mais j’ignore précisément laquelle car je reboote fort heureusement assez rarement).

Après une petite recherche Google, il semble que la solution n’est pas bien compliquée (mais pas forcément facile à trouver, d’où ce billet). Elle se trouve ici : http://readlist.com/lists/lists.sourceforge.net/webadmin-list/2/13638.html. Il suffit donc de :

insserv usermin

Et le script d’init est à nouveau correctement activé (au besoin, installer le paquet insserv par apt-get install). Testé et approuvé : ça tient à présent le reboot.

Voilou, ce n’est pas très fouillé et je n’ai pas testé à fond … mais bon, n’oublions pas que je suis en vacances 😉

Debian – Installation Virtualmin – Le bug Postfix

Tiens, depuis la récente mise à jour de Postfix dans les dépots Debian Lenny, il me semble qu’il y a comme un souci avec l’installateur automatique de Virtualmin.

Les utilisateurs assidus de Virtualmin savent que l’installation de la bête est d’une simplicité à faire ricaner un enfant de 3 ans. Pour installer Virtualmin sur une Debian, il suffit de :

wget http://software.virtualmin.com/gpl/scripts/install.sh
chmod +x install.sh
./install.sh

Et il ne reste plus qu’à laisser tourner le bouzin. Glop glop glop 🙂

Sauf que voilà, depuis quelques jours … pas glop.

En lançant l’installateur “comme d’habitude”, on se retrouve avec une belle erreur :
E: Package postfix-tls has no installation candidate
Et, quelques lignes plus loin :
FATAL – Cannot continue installation.

En version longue, ça donne ça :

/E: Package postfix-tls has no installation candidate                                                                                                                                 /usr/bin/apt-get --config-file apt.conf.noninteractive -y --force-yes install postfix postfix-pcre webmin usermin ruby libapache2-mod-ruby libxml-simple-perl libcrypt-ssleay-perl unzip zip libfcgi-dev bind9 spamassassin spamc procmail libnet-ssleay-perl libpg-perl libdbd-pg-perl libdbd-mysql-perl quota iptables openssl python mailman subversion ruby irb rdoc ri mysql-server mysql-client mysql-common postgresql postgresql-client awstats webalizer dovecot-common dovecot-imapd dovecot-pop3d proftpd libcrypt-ssleay-perl awstats clamav-base clamav-daemon clamav clamav-freshclam clamav-docs clamav-testfiles libapache2-mod-fcgid apache2-suexec-custom scponly apache2 apache2-doc libapache2-svn libsasl2-2 libsasl2-modules sasl2-bin php-pear php5 php5-cgi libgd2-xpm libapache2-mod-php5 php5-mysql postfix-tls failed.  Error (if any): 0

Displaying the last 15 lines of /root/virtualmin-install.log to help troubleshoot this problem:
INFO - 2011-05-18 20:17:58 - OK
INFO - 2011-05-18 20:18:03 - Hit
INFO - 2011-05-18 20:18:03 - Removing Debian standard Webmin package, if they exist...
INFO - 2011-05-18 20:18:03 - Removing Debian apache packages...
DEBUG - 2011-05-18 20:18:04 - Reading
INFO - 2011-05-18 20:18:04 - Installing dependencies using command: /usr/bin/apt-get --config-file apt.conf.noninteractive -y --force-yes install postfix postfix-pcre webmin usermin ruby libapache2-mod-ruby libxml-simple-perl libcrypt-ssleay-perl unzip zip libfcgi-dev bind9 spamassassin spamc procmail libnet-ssleay-perl libpg-perl libdbd-pg-perl libdbd-mysql-perl quota iptables openssl python mailman subversion ruby irb rdoc ri mysql-server mysql-client mysql-common postgresql postgresql-client awstats webalizer dovecot-common dovecot-imapd dovecot-pop3d proftpd libcrypt-ssleay-perl awstats clamav-base clamav-daemon clamav clamav-freshclam clamav-docs clamav-testfiles libapache2-mod-fcgid apache2-suexec-custom scponly apache2 apache2-doc libapache2-svn libsasl2-2 libsasl2-modules sasl2-bin php-pear php5 php5-cgi libgd2-xpm libapache2-mod-php5 php5-mysql postfix-tls
Reading package lists...
Building dependency tree...
Reading state information...
bind9 is already the newest version.
iptables is already the newest version.
libsasl2-2 is already the newest version.
Package postfix-tls is a virtual package provided by:
postfix 2.5.5-1.1+lenny1
You should explicitly select one to install.

FATAL - Fatal Error Occurred: Something went wrong during installation: 0
FATAL - Cannot continue installation.
FATAL - Attempting to remove virtualmin repository configuration, so the installation can be
FATAL - re-attempted after any problems have been resolved.
FATAL - Removing temporary directory and files.
FATAL - If you are unsure of what went wrong, you may wish to review the log
FATAL - in /root/virtualmin-install.log

Pan dans les dents ! 🙁

On comprend bien que le paquet postfix-tls pose problème, mais que faire ? La solution existe, elle est un poil difficile à trouver (d’où ce billet) et elle se trouve sur le forum Virtualmin :  http://www.virtualmin.com/node/18213

En bref, il suffit d’éditer l’installateur (install.sh donc) et de commenter les lignes 97, 98 et 99 :

if [ "$?" != 0 ]; then
       debdeps="$debdeps postfix-tls"
fi

On relance le bouzin et (soulagement, volupté), ça remarche.

Virtualmin et DNS secondaire chez OVH

Si vous installez Virtualmin sur un serveur dédié et que vous vous empressez de créer un hébergement (un “Virtual Server” en langage Virtualmin), voici le genre de zone Bind que vous allez obtenir pour votre nom de domaine. Elle sera automatiquement créée par Virtualmin  et, pour l’exemple, je prends ici syrelis.com comme nom de domaine, 11.22.33.44 comme adresse IP et ns1234.ovh.net comme nom de serveur :

(contenu de /var/lib/bind/syrelis.com.hosts)

$ttl 38400
@    IN    SOA    ns1234.ovh.net. root.ns1234.ovh.net. (
1299337556
10800
3600
604800
38400 )
@    IN    NS    ns1234.ovh.net.
syrelis.com.    IN    A    11.22.33.44
www.syrelis.com.    IN    A    11.22.33.44
ftp.syrelis.com.    IN    A    11.22.33.44
m.syrelis.com.    IN    A    11.22.33.44
localhost.syrelis.com.    IN    A    127.0.0.1
webmail.syrelis.com.    IN    A    11.22.33.44
admin.syrelis.com.    IN    A    11.22.33.44
mail.syrelis.com.    IN    A    11.22.33.44
syrelis.com.    IN    MX    5 mail.syrelis.com.
syrelis.com.    IN    TXT    "v=spf1 a mx a:syrelis.com ip4:11.22.33.44 ?all"

A première vue, ça a une bonne tête, mis à part peut-être le numéro de série (ici : 1299337556) qui devrait plutôt être au format “année-mois-jour-chiffre-chiffre”, soit 2011030501 à l’heure où j’écris ces lignes) mais passons, ce n’est pas le but de ce billet…

Il manque en tout cas quelque chose d’important, vous ne trouvez pas ?

Il s’agit bien sûr d’un champ NS, car savez sûrement que l’usage veut qu’un nom de domaine doit avoir 2 serveurs DNS. Il est donc logique que sa zone Bind ait 2 champs NS !

Toujours en suivant notre exemple, syrelis.com doit donc avoir 2 serveurs DNS : (1) le primaire qui correspond au serveur sur lequel est installé le site (en l’occurrence ns1234.ovh.net) et (2) le secondaire, qui dépend d’OVH. Chez OVH, quand vous installez un nom de domaine sur un serveur dédié, ils est d’ailleurs nécessaire d’inscrire vous-même le nom de domaine sur le DNS secondaire. Cela se passe dans le manager, plus précisément là (ns1234.ovh.net > Services) :

Inscrire votre nom de domaine dans le DNS secondaire (sdns2.ovh.net – ou bien ns.kimsufi.com si votre serveur est un Kimsufi), c’est bien. Mais faire en sorte que votre serveur communique avec le DNS secondaire, c’est bien mieux ! Pour cela, retournons à votre serveur et ajoutons une ligne dans la zone Bind du nom de domaine :

@    IN    NS    sdns2.ovh.net.

Simple, non ? Oui, mais le problème c’est qu’il va falloir le faire à chaque fois que vous créez un hébergement sur le serveur via Virtualmin. Là, c’est tout de suite moins cool…

Heureusement, il y a une parade simple : juste un petit paramètre à ajouter dans Virtualmin. Commencez donc par cliquer sur System Settings > Server Templates :

Puis sur Default Settings :

Et enfin choisissez BIND DNS Domain :

Ajoutez alors sdns2.ovh.net (ou bien ns.kimsufi.com si votre serveur est un Kimsufi) dans le formulaire, là  :

Et sauvez.

C’est tout. Dorénavant, tous les “Virtual Server” que vous allez créer auront les bons champs NS dans leur zone Bind et, cerise sur le gâteau, toutes les modifications que vous allez faire sur votre serveur (ajout/suppression de sous-domaines par exemple) seront automatiquement transmises au DNS secondaire 🙂

Debian : Mise à jour de Bind9 fait buguer Webmin

Une récente mise à jour de Bind dans les dépôts Debian induit un léger bug dans Webmin / Virtualmin.

Ceux qui sont dans le cas (Webmin / Virtualmin installé sur une Debian Lenny) et qui mettent à jour (apt-get upgrade) apercevront sans doute que Bind “ne tourne plus”. En tout cas c’est ce que vous dira votre Webmin. Si vous essayez alors de lancer Bind via Webmin, vous obtiendrez une jolie erreur “Unknown Error”. Pas vraiment rassurant…

Heureusement, c’est en fait nettement moins grave qu’il n’y paraît : Bind tourne bel et bien (un petit passage en SSH vous le confirmera vite), c’est simplement Wembin qui ne le détecte plus. Pour fixer ça, il suffit de se rendre dans Webmin -> Servers -> BIND DNS Server -> Module Config -> System configuration et ajouter ceci dans Default PID file location(s) :

/var/run/bind/run/named/named.pid

Avec le bon chemin vers named.pid, Webmin retrouvera ses petits et il ne vous embêtera plus 🙂

Source : https://www.virtualmin.com/node/14569 (inscription nécessaire sur le site)

Attention, cela concerne aussi les nouvelles installations : pour ceux qui ont l’habitude d’installer Virtualmin sur Debian, ne soyez pas surpris de constater que Bind ne “semble” pas tourner sur une installation fraîche (la manipulation pour fixer le bug est évidemment identique).