Sophie

Sophie

distrib > Mandriva > 9.0 > i586 > by-pkgid > 0d5cd12c82d627a82c59047e1ba7b8a9 > files > 1963

howto-html-fr-9.0-0.2mdk.noarch.rpm

<HTML>
<HEAD>
<TITLE>Le script <CODE>mail2news.pl</CODE></TITLE>
</HEAD>
<BODY>
<H1>9. <A NAME="s9"></A>Le script <CODE>mail2news.pl</CODE></H1>
<P>
<A HREF="Mail2News.html#toc9">Contenu de cette section</A></P>

<P></P>
<P>
<HR>
<PRE>
#!/usr/bin/perl

($program = $0) =~ s%.*/%%;

#( $version  ) = $] =~ /(\d+\.\d+).*\nPatch level/;
#die &quot;$program: demande au moins la version 3 de Perl\n&quot;
#        if $version &lt; 3;

# $inews = &quot;/usr/bin/inews&quot;;
# $iopts = &quot;-h -o \&quot;passerelle mail2news\&quot;&quot;;
$inews = &quot;/usr/bin/rnews&quot;;
$iopts = &quot;&quot;;
$postinghost = &quot;votre.serveur.de.news&quot;;

if ($#ARGV &lt; 0) {
    # $newsgroup = &quot;test&quot;;
    # nous attendons la ligne newsgroup dans le corps
} elsif ($#ARGV == 0) {
    $newsgroup = $ARGV[0];
} else {
    die &quot;usage: $program [groupe de news]\n&quot;;
}

# si jamais inews fait un core dump ou quelque chose insense
$SIG{'PIPE'} = &quot;plumber&quot;;
sub plumber { die &quot;$program: \&quot;$inews\&quot; est mort trop tot !\n&quot;; }

open (INEWS, &quot;| $inews $iopts&quot;) ||
    die &quot;$program: ne peut pas lancer $inews\n&quot;;

# boucle qui prend les en-tetes
while (&lt;STDIN&gt;) {
   last if /^$/;

   # transforme la vraie ligne from: dans le vieux style
   s/^From:\s+(.*) &lt;(.*)&gt;/From: $2 ($1)/;

   s/Message-Id/Message-ID/;

   # transforme la ligne from_ en en-tete de chemin ;
   # fonctionne aussi en local
   s/^From\s+(\S+)@(\S+).*/Path: $2!$1/
     || s/^From\s+(\S+)[^@]*$/Path: $1\n/;

   print INEWS
#       if /^(Date|From|Subject|Path|Newsgroups|Organization|Message-ID):/i;
   if /^(Date|From|Subject|Path|Newsgroups|Message-ID):/i;
   $saw_subject |= ( $+ eq 'Subject' );

   $saw_msgid |= ( $+ eq 'Message-ID' );

#   $saw_newsgroup |= ( $+ eq 'Newsgroups' );
}

warn &quot;$program: n'attendait pas le groupe dans les en-tetes et les arguments\n&quot;
    if $newsgroup &amp;&amp; $saw_newsgroup;

die &quot;$program: n'a pas obtenu le groupe des en-tetes ni des arguments\n&quot;
    unless $newsgroup || $saw_newsgroup;

$approved = $newsgroup;
$approved =~ s/\./'-'/eg;

($sec,$min,$hour,$mday,$mon,$year)=localtime(time);
$madeupid = &quot;\&lt;$year$mon$mday.$hour$min$sec.$$\@kepler.hedland.edu.au\&gt;&quot;;

printf INEWS &quot;Newsgroups: %s\n&quot;, $newsgroup if $newsgroup;
printf INEWS &quot;Approved: %s\@kepler.hedland.edu.au\n&quot;, $approved;
print  INEWS &quot;Subject: Untitled\n&quot; unless $saw_subject;
printf INEWS &quot;Message-ID: %s\n&quot;, $madeupid unless $saw_msgid;
printf INEWS &quot;NNTP-Posting-Host: %s\n&quot;, $postinghost;
print  INEWS &quot;Organisation: (mail2news gateway)\n&quot;;
print  INEWS &quot;\n&quot;;

print INEWS while &lt;STDIN&gt;;   # avale le reste du message

close INEWS;
exit $?;
</PRE>
<HR>
</P>
<P></P>
<HR>
<P>
Chapitre <A HREF="Mail2News-8.html">Pr&eacute;c&eacute;dent</A>
<P>
Table des mati&egrave;res de <A HREF="Mail2News.html#toc9">ce chapitre</A>,
 <A HREF="Mail2News.html#toc">Table des mati&egrave;res</A> g&eacute;n&eacute;rale</P>
<P>
<A HREF="Mail2News.html">D&eacute;but</A> du document,
 <A HREF="#0"> D&eacute;but de ce chapitre</A></P>
</BODY>
</HTML>