Sophie

Sophie

distrib > Mandriva > 9.1 > ppc > by-pkgid > 1c8dd3ad2a7f81676a3a01bf6b47f616 > files > 178

howto-sgml-fr-9.0-1mdk.noarch.rpm

<!doctype linuxdoc system>

<!-- labels : -->

<article>

<title>Mini Howto Mail vers News
<author>Robert Hart, InterWeft IT Consultants Melbourne, Australie,
<tt/iweft@ipax.com.au/
<newline>
Traduit par Olivier Tharan, <tt/tharan@int-evry.fr/

<date>v1.0, 4 novembre 1996

<abstract>
Ce document d&eacute;crit comment configurer votre logiciel de News et
mail2news.pl pour relier des listes de distribution aux groupes de news
locaux. 
</abstract>

<toc>

<sect>Copyright et autres choses
<p>

Le copyright de ce document est retenu par l'auteur. Il donne la
permission de distribuer ce document par des moyens &eacute;lectroniques et sur
des CDs, &agrave; condition qu'il soit gard&eacute; enti&egrave;rement dans son format
d'origine. Il donne aussi la permission d'imprimer une copie de ce
document pour usage personnel.

La publication de ce document en partie ou en entier sans la permission du
propri&eacute;taire du copyright de toute mani&egrave;re autre qu'indiqu&eacute;e ci-dessus
est interdite.

Ce document est directement support&eacute; par InterWeft IT Consultants
(Melbourne, Australie).

La derni&egrave;re version de ce document est disponible sur le site WWW
d'InterWeft chez InterWeft IT Consultants, <url
url="http://203.29.72.65/">.

<sect>Introduction
<p>

La plupart des sites sur Internet sont toujours en train de chercher des
moyens d'am&eacute;liorer l'utilisation de la bande passante limit&eacute;e dont ils
disposent sur leur lien &agrave; Internet.

Supposons que plus d'un utilisateur s'abonne &agrave; la m&ecirc;me liste de
distribution, et il y aura duplication de trafic. S'il y a un certain
nombre de telles duplications, ou si le trafic sur les listes est
important, la consommation de bande passante s'accro&icirc;t.

En abonnant le site &agrave; une liste (si c'est permis par le propri&eacute;taire de la
liste), et en <em/routant/ le courrier &eacute;lectronique vers le serveur de
news local, il est possible de rendre les listes de distribution
accessibles &agrave; tous les utilisateurs du site ou, en utilisant les principes
de s&eacute;curit&eacute; d'<tt/innd/, de limiter l'acc&egrave;s &agrave; certains utilisateurs.

Un tel abonnement de groupe (surtout s'il y a quelques listes &agrave; grand
trafic) peut g&eacute;n&eacute;rer des &eacute;conomies d'utilisation de bande passante
importantes.

La lecture des listes &agrave; travers un lecteur de news offre aussi aux
utilisateurs l'avantage du threading (NdT : cr&eacute;er des enfilades), qui
n'est pas disponible dans de nombreux programmes de mail, et aussi
l'avantage de lib&eacute;rer leur bo&icirc;te aux lettres pour du courrier peut-&ecirc;tre
plus urgent ou plus personnel. 

Ce mini Howto d&eacute;crit la mise en place du script <tt/mail2news.pl/ pour
r&eacute;aliser ceci.

<sect1>O&ugrave; trouver <tt/mail2news.pl/
<p>

L'auteur n'a pas pu trouver <tt/mail2news.pl/ sur le CPAN (le r&eacute;seau
complet d'archives Perl), mais il a pu passer devant sans le voir. Il est
cependant sur <tt/sunsite.unc.edu/ (quelque part) et aussi sur
<tt/ftp.redhat.com/.

Comme ce script Perl n'est pas tr&egrave;s long, vous le trouverez &agrave; la fin de ce
Howto.

<sect>Vue d'ensemble du syst&egrave;me
<p>

Il est probablement plus facile de comprendre le fonctionnement de ce
syst&egrave;me en suivant un message &agrave; partir de la liste de distribution vers le
groupe de news, puis d'un message post&eacute; sur le groupe de news local (rout&eacute;
vers la liste de distribution) et en regardant comment ils sont trait&eacute;s.

<sect1>Le courrier venant de la liste de distribution
<p>

Le courrier de la liste de distribution est envoy&eacute; &agrave; toutes les adresses
mail abonn&eacute;es. Un alias de mail sp&eacute;cial est abonn&eacute; &agrave; la liste de
distribution en question et tout le trafic &agrave; destination et en
provenance de la liste est ainsi envoy&eacute; par le serveur de liste &agrave; cette
adresse.

Quand le courrier de la liste de distribution arrive sur la machine
locale, l'alias de mail envoie le message entrant dans <tt/mail2news.pl/.
L'alias de mail sp&eacute;cifie aussi le groupe de news (local) de destination.

Le script <tt/mail2news.pl/ traite le message, en appliquant de nouvelles
en-t&ecirc;tes et utilise ensuite <tt/rnews/ ou <tt/inews/ pour poster le
message dans le groupe de news.

<sect1>Messages post&eacute;s dans le groupe de news local
<p>

Le groupe de news local est install&eacute; en tant que groupe mod&eacute;r&eacute;, puisque
ceci nous permet de b&eacute;n&eacute;ficier des possibilit&eacute;s de courrier &eacute;lectronique
d'<tt/innd/. Tout message post&eacute; dans un groupe mod&eacute;r&eacute; n'est pas transmis
automatiquement au groupe. &Agrave; la place, les messages sont envoy&eacute;s par
<em/email/ au mod&eacute;rateur du groupe. 

En d&eacute;clarant le mod&eacute;rateur du groupe de news local comme &eacute;tant l'adresse
de la liste de distribution, tous les messages post&eacute;s sur le groupe de
news local seront envoy&eacute;s par <em/email/ &agrave; la liste de distribution par
<tt/innd/ et n'appara&icirc;tront qu'une fois qu'ils auront &eacute;t&eacute; re&ccedil;us par
<tt/mail2news.pl/ qui ajoute la ligne <em/approved/ n&eacute;cessaire aux
messages pour qu'<tt/innd/ accepte de les poster dans le groupe de news. 

<sect>Configurer <tt/mail2news/
<p>

Placez le script <tt/mail2news.pl/ dans un endroit convenable. Je pr&eacute;f&egrave;re
<tt>/usr/local/scripts</tt>, mais l'endroit d&eacute;pend de vous.

Vous devrez &eacute;diter le script comme suit :

<itemize>
<item> au d&eacute;but du script, assurez-vous que vous pointez vers le binaire
Perl local

<code>
#!/usr/bin/perl
# pointe vers l'endroit courant de Perl
</code>

<item> j'ai eu des probl&egrave;mes avec les trois lignes suivantes. Les mettre
en commentaire ne pose pas de probl&egrave;mes.

<code>
( $version  ) = $] =~ /(\d+\.\d+).*\nPatch level/;
die "$program: demande au moins la version 3 de Perl\n"
       if $version < 3;
</code>

<item> &eacute;ditez les lignes suivantes pour pointer vers le programme qui
poste (j'utilise <tt/rnews/) et vers votre machine de news :

<code>
# $inews = "/usr/bin/inews";
# $iopts = "-h -o \"passerelle mail2news\"";
$inews = "/usr/bin/rnews";
$iopts = "";
$postinghost = "votre.serveur.de.news";   # pointe vers votre serveur de news
</code>
 
<item> assurez-vous que le script est ex&eacute;cutable (mode 755).

</itemize>

<sect>Mettre en place les alias de mail
<p>

&Eacute;ditez <tt>/etc/aliases</tt> pour cr&eacute;er des entr&eacute;es pour les listes de
distribution que vous voulez envoyer vers les news. Chaque entr&eacute;e doit
&ecirc;tre de la forme :

<tscreen><verb>
<adresse email abonn&eacute;e &agrave; la liste>: \
          "| /usr/local/scripts/mail2news.pl <nom du groupe de news local>"
</verb></tscreen>

Si par exemple l'adresse de mail &agrave; laquelle il faut envoyer le courrier de
la liste (l'adresse <em/email/ abonn&eacute;e) est <tt/liste_site/ et le groupe
de news local dans lequel il faut poster le courrier s'appelle
<tt/groupe.site.local/, l'alias sera

<tscreen><verb>
# adresse d'abonnement de groupe pour machin@une.certaine.liste
liste_site: "|/usr/local/scripts/mail2news.pl groupe.site.local"
</verb></tscreen>

Cr&eacute;ez une entr&eacute;e pour chaque liste de distribution que vous devez router
vers votre serveur de news local et lancez ensuite <tt/newaliases/.

<sect>Configurer les groupes de news et le serveur de news (<tt/innd/)
<p>

En utilisant <tt/ctlinnd/, cr&eacute;ez les groupes de news sur votre serveur de
news. Rappelez-vous qu'ils doivent &ecirc;tre locaux, donc nommez-les de fa&ccedil;on
distincte avec un pr&eacute;fixe de fa&ccedil;on &agrave; les exclure de votre distribution de
news (dans le fichier <tt/newsfeeds/).

Vous devez aussi dire &agrave; <tt/innd/ que le groupe est mod&eacute;r&eacute; (en utilisant
<tt/ctlinnd/). Rappelez-vous que <tt/innd/ est tr&egrave;s sensible aux
propri&eacute;taires et permissions de fichiers, vous devez agir &agrave; ce niveau avec
<tt/innd/ en tant qu'utilisateur <em/news/. Vous indiquez un groupe mod&eacute;r&eacute;
en donnant le param&egrave;tre <tt/m/ &agrave; la commande <tt/newgroup/.

<tscreen><verb>
ctlinnd newgroup <nom du nouveau groupe> m <administrateur>
</verb></tscreen>

Le <tt/m/ indique &agrave; <tt/innd/ que le groupe est mod&eacute;r&eacute;.

&Eacute;ditez votre fichier <tt/newsfeeds/ pour vous assurer que ces groupes
locaux ne sont pas distribu&eacute;s (sauf si vous voulez sp&eacute;cifiquement que &ccedil;a
se passe ainsi).

Par exemple, si votre liste de distribution s'appelle
<tt/groupe.site.local/, vous ajouterez sans doute <tt/!local*/ dans le
second champ des sites que vous distribuez (ou dont vous recevez les news)
dans votre fichier <tt/newsfeeds/.

Maintenant, de fa&ccedil;on &agrave; vous assurer que les messages des utilisateurs sont
envoy&eacute;s sur la liste automatiquement par <tt/innd/, &eacute;ditez
<tt>/etc/news/moderators</tt> (ou <tt>/usr/local/news/moderators</tt>)
pour ajouter une ligne qui d&eacute;clare l'adresse de la liste de distribution
comme mod&eacute;rateur.

<tscreen><verb>
groupe.site.local:liste@un.site.de.liste
</verb></tscreen>

<sect>Abonner l'alias <tt/mail2news/ &agrave; la liste de distribution
<p>

Vous devez maintenant abonner l'alias de mail &agrave; la liste de distribution.
V&eacute;rifiez avec l'information de la liste de distribution comment s'abonner.
Certaines listes de distribution vous permettent d'abonner une adresse
<em/email/ diff&eacute;rente de celle d'o&ugrave; vient l'abonnement (elles v&eacute;rifient
la confirmation avec l'adresse &agrave; abonner avant d'abonner r&eacute;ellement cette
adresse).

D'autres listes de distribution ne permettent pas ceci. Vous devrez donc
<em/forger/ une demande d'abonnement. Il y a plusieurs fa&ccedil;ons de faire
ceci. L'une des plus simples est d'utiliser Netscape Mail configur&eacute; (de
mani&egrave;re temporaire) avec l'adresse avec laquelle la liste de distribution
doit envoyer le courrier.

Apr&egrave;s l'abonnement, vous devriez voir un message de bienvenue de la part
du serveur de listes dans votre serveur de news. Dans ce cas, tout s'est
bien pass&eacute; et vous pouvez maintenant tester l'autre sens en postant un
message de news dans votre nouvelle liste.

Le message <em/ne devrait pas/ appara&icirc;tre imm&eacute;diatement dans le groupe de
news. Il devrait &ecirc;tre envoy&eacute; par courrier &eacute;lectronique et re&ccedil;u &agrave; nouveau
et post&eacute; dans le groupe de news.

Si cela fonctionne, vous avez r&eacute;ussi &agrave; router la liste vers les news.

<sect>Si &ccedil;a ne fonctionne pas...
<p>

Si &ccedil;a ne marche pas, vous devez retrouver la trace des messages pour voir
exactement o&ugrave; &ccedil;a s'arr&ecirc;te de fonctionner. Des outils utiles &agrave; ce niveau
sont les logs de mail et de news.

Robert Hart
Melbourne, Victoria, Australie, octobre 1996

<sect>Le script <tt/mail2news.pl/
<p>

<code>
#!/usr/bin/perl

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

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

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

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

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

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

# boucle qui prend les en-tetes
while (<STDIN>) {
   last if /^$/;

   # transforme la vraie ligne from: dans le vieux style
   s/^From:\s+(.*) <(.*)>/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 "$program: n'attendait pas le groupe dans les en-tetes et les arguments\n"
    if $newsgroup && $saw_newsgroup;

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

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

($sec,$min,$hour,$mday,$mon,$year)=localtime(time);
$madeupid = "\<$year$mon$mday.$hour$min$sec.$$\@kepler.hedland.edu.au\>";

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

print INEWS while <STDIN>;   # avale le reste du message

close INEWS;
exit $?;
</code>

</article>