lancement de postgrey sur Mac OS X 10.5 (was Re: [Admin-ml] Spam)

Proniewski Patrick patrick.proniewski at univ-lyon2.fr
Jeu 14 Mai 11:01:56 CEST 2009


Bonjour,

Je reviens plus d'un an après !

On 8 mars 08, at 16:54, Proniewski Patrick wrote:

> On 8 mars 08, at 10:06, Jean-Luc Bailloeul wrote:
>
>> J'ai suivi ta démarche, mais quand je lance :
>>
>>> /usr/bin/postgrey \
>>> --pidfile=/var/run/postgrey.pid \
>>> ...
>> J'ai l'erreur suivante :
>>
>> ERROR: Insecure $ENV{PATH} while running with -T switch at /System/ 
>> Library/Perl/Extras/5.8.6/Net/Server/Daemonize.pm line 70.
>>
>> Tu sais ce que cela veut dire ?
>
> Ça veut dire que PERL ne fait pas confiance à ton environnement.  
> Cela ne s'est produit pour moi que quand j'installais postgrey dans / 
> usr/local/bin, et l'erreur a disparu quand je l'ai déplacé dans /usr/ 
> bin/. Cétait le sens de ma remarque ici :
>
>>> Si on a copié postgrey dans /usr/bin plutôt que dans /usr/local/ 
>>> bin, PERL
>>> ne râle pas, et on peut se passer de "PATH=/usr/loc..." devant la  
>>> commande.
>>>
>
> tente de lancer postgrey avec cette commande pour voir si c'est le  
> même problème :
>
> PATH=/sbin:/bin:/usr/sbin:/usr/bin /usr/bin/postgrey \
> --pidfile=/var/run/postgrey.pid ...


Alors je viens de me colleter avec le même problème. Mon guide  
d'install de postgrey fonctionnait très bien avec Mac OS X 10.4, mais  
plus en 10.5, car un module Perl a changé.

Le module /System/Library/Perl/Extras/5.8.6/Net/Server/Daemonize.pm, à  
la ligne 70 fait un test d'existence de /proc :

      69   ### try a proc file system
      70   if( -d '/proc' && opendir(_DH,'/proc') ){
      71
      72     while ( defined(my $pid = readdir(_DH)) ){
      73       if( $pid eq $current_pid ){
      74         $exists = 1;
      75         last;
      76       }
      77     }
      78
      79   ### try ps
      80   #}elsif( -x '/bin/ps' ){ # not as portable
      81   # the ps command itself really isn't portable
      82   # this follows BSD syntax ps (BSD's and linux)
      83   # this will fail on Unix98 syntax ps (Solaris, etc)
      84   }elsif( `ps h o pid p $$` =~ /^\s*$$\s*$/ ){ # can I play  
ps on myself ?
      85     $exists = `ps h o pid p $current_pid`;
      86
      87   }

Flairant l'arnaque : aucune des parties de ce if ne peuvent  
fonctionner sur Mac, j'ai tout commenté entre les lignes 70 et 87 :  
bilan, postgrey se lance nickel et fonctionne plein pot.
Mais ce n'est pas satisfaisant de modifier un .pm fourni par Apple et  
susceptible d'être mis à jour ultérieurement sans qu'on le sache.
J'ai donc restauré le .pm fourni par Apple, et j'ai créé à la racine  
du disque un dossier "proc".
J'ai relancé postgrey, et là, ça marche !


Patrick PRONIEWSKI
-- 
Administrateur Système - SENTIER - Université Lumière Lyon 2



Plus d'informations sur la liste de diffusion Admin-ml