MailScanner: Process did not exit cleanly, returned 9 with signal 0

Rédigé par Nicolas Sulek Aucun commentaire
Classé dans : Messagerie Mots clés : Debian, MailScanner, Perl
Après une installation de MailScanner sous Debian avec les paquets de la distribution, il peut arriver que ce dernier ne fonctionne pas du tout (soit redémarrage en boucle, soit arrêt immédiat).

Une consultation des journaux de logs nous apprend qu'il ne s'est pas arrêté proprement et qu'il a retourné la valeur 9 (en général c'est plutôt 0 pour dire que tout va bien) avec le signal 0 (arrêt) :

MailScanner: Process did not exit cleanly, returned 9 with signal 0

Afin d'en savoir un peu plus, on peut lancer manuellement MailScanner avec des options de debug, afin d'obtenir plus d'informations pertinentes :
mailscanner --debug

L'erreur fatale est alors la suivante :
Mailscanner Insecure dependency in open while running with -T switch at /usr/share/MailScanner/MailScanner/Lock.pm

Perl a trouvé une dépendance non sécurisée pendant son exécution avec le commutateur -T.
-T signifie :

La détection de "souillure" va être activée et testée. Normalement, ces tests ne sont effectués qu'en cas d'exécution en setuid ou setgid. C'est une bonne idée de les activer explicitement pour des programmes qui fonctionnent sous une autre identité dans laquelle on ne peut pas faire confiance, par exemple, les programmes CGI ou n'importe quels serveurs internet écrit en Perl. Pour des raisons de sécurité, cette option doit être vue par Perl le plus tôt possible ; cela signifie généralement qu'elle doit apparaître sur la ligne de commande on dans la ligne débutant par #! sur les systèmes supportant cette instruction.
 

La solution consiste donc à permettre à Perl d'exécuter des programmes sans vérifier cette potentielle insécurité.
Pour cela, il faut utiliser le commutateur -U :

Permet à Perl d'effectuer des opérations non sûres. Actuellement, les seules opérations non "sûres" sont d'essayer de délier un répertoire pendant une exécution en tant que super-utilisateur et exécuter des programmes setuid avec des tests de souillures fatals transformés en warnings.
 
Pour régler notre problème, il faut donc éditer le fichier /usr/sbin/MailScanner et indiquer -U à la fin de la ligne débutant par #! :
#!/usr/bin/perl -I/usr/share/MailScanner/

devient
#!/usr/bin/perl -I/usr/share/MailScanner/ -U


Plus d'informations sur les commutateurs possible pour Perl : perldoc.perl.org/perlrun.html#Command-Switches

Source de la solution :
http://lists.mailscanner.info/pipermail/mailscanner/2011-April/097813.html

Les commentaires sont fermés.