  Mail2News Mini-Howto
  Robert Hart, iweft@ipax.com.au
  v1.0, 4 November 1996
  쓇 _, kei@sm.sony.co.jp

  ̃hLgł́ACOXg[Jȃj[XO[vɋ
  n邽߂ɕKv mail2news.pl ƃj[XT[õZbgAbv̕@
  Љ܂B

  : ͂̕ȂȑOɏꂽ̂Ȃ̂ŁA܂ǂ Linux 
  ɂ͂Ă͂܂Ȃӏ܂B (JF Project)

  1.  쌠Ȃ

  ̃hLg̒쌠͒҂ێĂ܂BIWǐ`S
   ێĂɂāAdqIȎi CD ɂĔzz邱
  ܂BlIȎgp̂߂ɂ̃hLg邱Ƃ
  ܂B

  ̃hLg̈ꕔ܂͑SALȊO̕@ŁA쌠ێ҂
  ȂĔzz邱Ƃ؋֎~܂B

  ̃hLg InterWeft IT Consultants (Melbourne, Australia) 
  ĒڃT|[gĂ܂B

  ̃hLg̍ŐVł InterWeft IT Consultants
  <http://203.29.72.65/> ́AInterWeft WWW TCgɂ܂B

  (:{ւ̖|󋖉͌҂炢Ă܂B)

  ҂ : ҂ Robert Hart ɊmFƂƂAIWi (
  ̂܂܂) 쌠\܂߂ė~AƂ̂Ƃł̂ŁAȉɂ
  ͂̌̂܂܌fڂ܂B

    1.  Copyright and such

    The copyright of this document is retained by the author. Permission
    is granted to distribute the document by electronic means and on CDs
    provided that it is kept entirely in its original format. Permission
    is also granted to print a copy of this document for personal use.

    The republishing of this document in part or in whole without the
    permission of the copyright holder by any means other than as noted
    above is prohibited.

    This document is directly supported by InterWeft IT Consultants
    (Melbourne, Australia).

    The latest version of this document is available at the InterWeft WWW
    site at InterWeft IT Consultants <http://203.29.72.65/>.

  2.  Cg_NV

  C^[lbg̐ڑɎgƂ̂łoh͌Ă܂BقƂ
  ǂ̃C^[lbgTCgł́ǍꂽohLɎg@
  ɖ͍Ă܂B

  2lȏ̃[UCOXgwǂĂA͂Ȃ킿
  d (ʂ) gtBbN𐶂Ă邱ƂɂȂ܂B̂悤ȏd
  񂠂ÃCOXg̃gtBbNꍇ
  ́Aoh傫Ȃ̂ƂȂ܂B

  COXg̊Ǘ҂Ă̂ȂA[JȃCO
  Xg[U (ML) wǂA[Jj[XT[oɗ (
  :gate) ƂɂāÃCOXg̓eTCg̃[US
  œǂނƂł܂B܂AuinndṽZLeB[@\g΁A
  ̃[Û݂ɃANZX𐧌邱Ƃł܂B

  ɍgtBbÑCOXgꍇɂ́Â悤ȃTCg
  wǂɂăoh̏}邱Ƃł܂B

  COXg̓ej[X[_[œǂނƂɂ͑ɂbg
  ܂BقƂǂ̃CtgGhł̓T|[gĂȂuX
  bhvgƂł邩łB(: m̂ƂAXbh
  ́A̔ƁAɑ΂tH[\ăANZXł悤Ȏd
  g݂łB)܂AlIȋً}̃Ĉ߂ɃC{bNX̗eʂ
  ĂƂł܂B

  ̃~jnEc[ł́AƂ܂邽߂́umail2news.plv
  XNvgЉ܂B

  2.1.  mail2news.pl 

  ҂́ACPAN (Comprehensive Perl Archive Network) ł mail2news.pl 
  邱Ƃł܂łA͒PɌƂ܂
  B܂AƂɂ sunsite.unc.edu  ftp.redhat.com ̂ǂɂ͂
  ܂B

   Perl XNvg͂قǒȂ̂ŁÃnEc[̍ŌɂYt
  Ă܂B

  3.  VXe̊Tv

  炭ÃVXeǂ̂悤ɓ삷̂𗝉ԊȒPȕ@
  ́ACOXg瑗ꂽbZ[Wǂ̂悤Ƀj[XO[v
  ɔfꂽA[Jj[XO[vɃ|XgꂽbZ[Wǂ
  悤ɂăCOXgɑ邩AȂǂǐՂA炪ǂ
  悤Ɉ̂Ă݂邱Ƃł傤B

  3.1.  COXg̃C

  COXg̃ĆA̍wǎґS̃CAhXɑ΂
  ܂BłAʂȃCGCAXCOXgɓo^
  Ă΁ÃCOXgƂ̂Ƃ́AׂẴAhXɑ΂
  ĂȂ邱ƂɂȂ܂B

  COXg̃C[Jȃ}VɓƁA̓C
  GCAXpCv( : sendmail.cf ̒ŁA | gĎ܂
  ˁB)gāAmail2news.pl ɓn܂B܂ÃCGCAX
  [Jȃj[XO[v̈w肷邱Ƃɂg܂B

  mail2news.pl XNvg͂̃bZ[WAj[X̃wb_
  𗘗pāArnews ܂ inews ʂẴbZ[W[Jj[
  XO[vɃ|Xg܂B

  3.2.  [Jj[XO[vɃ|XgꂽbZ[W

  [Jj[XO[vf[gȃj[XO[vƂĐݒ肵
  B邱ƂŁAinnd  C@\gƂł邩łB

  f[gȃj[XO[vɃ|XgꂽbZ[W͒ڂɃj[XO
  [vɑɁAj[XO[ṽf[^(Ǘ)ɃC
  ő܂B

  [Jj[XO[ṽf[^ƂăCOXg̃AhX
  ݒ肷邱ƂɂāA[Jj[XO[vɃ|XgꂽbZ[W
  ́Ainnd ɂĎIɃCOXgɑ΂đo܂B̂
  ɂđoꂽbZ[W COXgT[oԂĂ
  MɃ[Jj[XO[vɂ܂|Xg܂B(d邱Ƃ
  )

  mail2news.pl ɂāuapprovedvst܂̂ŁAinnd ͂
  邱Ƃł܂B(: vɃf[gȃj[XO
  [vȂ̂ǁAuapprovedvŝł͂̂܂(x̓f
  [g邱ƂȂ)j[XO[vɃ|XgAƂƂł
  ˁB)

  4.  mail2news ̃ZbgAbv

  ܂Amail2news.pl KȂƂɒu܂B̏ꍇɂ
  /usr/local/scripts ɒuĂ܂AȂ̍DȂƂɒuĂ
  B

  ȉ̂悤ɂ̃XNvgҏWĂ:

  o  XNvg̐擪Bperl ̃oCiǂɂ̂w肵܂B

       #!/usr/bin/perl
       # point at the correct location of perl

  o  ̏ꍇɂ͎3sŖ肪܂BRgAEgĂ܂Ė
     肠܂B

       ( $version  ) = $] =~ /(\d+\.\d+).*\nPatch level/;
       die "$program: requires at least version 3 of perl\n"
               if $version < 3;

  o  ̍sɂ́AȂ̃j[X|XgvOw肵ĂB (
     ̏ꍇɂ rnews łB)܂Aj[XzXgw肵܂B

  # $inews = "/usr/bin/inews";
  # $iopts = "-h -o \"mail2news gateway\"";
  $inews = "/usr/bin/rnews";
  $iopts = "";
  $postinghost = "your.news.server";   # points at your news server

  o  XNvgt@Cɂ͎s\p[~bVݒ肵Ă܂B (
     [h 755)

  5.  CGCAX̐ݒ

  /etc/aliases ҏWāAj[XɃpCvCOXg̃G
  g[쐬܂Bꂼ̃Gg[͈ȉ̂悤Ȍ`ł:

       <subscribed email address to list>: \
               "| /usr/local/scripts/mail2news.pl <local news group name>"

  Ⴆ΃COXg̃CAhX(wǃCAhX)
  site_list ŁA͂C|Xgׂ[Jj[XO[v
   local.site.group ƂƁAGCAX͈ȉ̂悤ɂȂ܂:

       # The site subscription address for blah-blah@some.mailing.list
       site_list: "| /usr/local/scripts/mail2news.pl local.site.group"

  [Jȃj[XO[vɗ( gated)Kv̂郁COXg
  ꂼɂĂ̂悤ȃGg[쐬ɁA[Jj[X
  T[o newaliases R}hs܂B

  6.  j[XO[vƃj[XT[o (innd) ̃ZbgAbv

  ctlinnd gāA[Jȃj[XT[oɃj[XO[v쐬
  ܂B[Jȃj[XO[vłÃTCgɂ̃j[XO
  [vzMĂ͂܂B̓j[X̔zMt@CŃtB
  ^Oł܂̂ŁÂƂɎw肵₷j[XO[v
  قł傤B

  ( : Ƃ local. Ŏn܂j[XO[vɂĂ΁ÃO
  [vȉ̃j[X̔zM֎~邱ƂȒPɂł܂ˁB)

  ܂Ainnd ̐ݒŁÃj[XO[vf[gɂĂ
  ܂(ctlinnd g)BAinnd ́At@C̃[U ID A
  p[~bVɌƂYȂłBłȂs
  ȂƂɂ news [UɂȂđ삵ł傤Bf[g
  ݒ肷ɂ́Â悤ɁActlinnd  newgroup R}h m w
  ܂B

       ctlinnd newgroup <newgroup name> m <newsadmin>

  m  ̃O[v̓f[gł邱Ƃw肵Ă܂B

  ɁA[Jȃj[XO[ṽTCgɏoĂȂ悤ɁA
  j[XzMt@C (newsfeeds) ҏW܂B ([Jj[XO
  [v𑼂̃TCgɔzMAȂɂʂȗRꍇ̂)

  Ƃ΁A[JȃCOXg local.site.group Ƃ
  ƁA㗬̃j[XTCg(炭ɑ΂Ălł傤) ɂ
  Ẵj[XzMt@C(newsfeeds)ɁA !local* ȂǂƋLq킯
  B

  ɁA[Jj[XO[vɃ|XgꂽbZ[W innd ʂ
  IɃCOXgɑ悤ɂ邽߂ɁA
  /etc/news/moderators ҏW܂B

  ȉ̂悤ɁÃj[XO[ṽf[^ƂăCOXg
  CAhXw肷sǉ܂B

       some.site.list:list@mail.list.site

  7.  COXg mail2news GCAXo^B

  āACOXgɃGCAXo^ԂłB

  ̃COXg̍wǕ@mFĉB̃CO
  Xgł́Awǐ\ꂽCAhXƂ͈قȂAhXłw
  󂯕tĂƂ낪܂B (̃AhXŖ{ɍwǂ̈ӎu
  邩ǂmF܂B)

  ܂Â悤ȍwǌ`ԂȂCOXg܂B̂悤
  ȏꍇɂ́Awǐ\݂ułvKv邩܂B
  ɂ͂낢ȕ@܂AԊȒPȂ̂ Netscape ̃CZb
  gAbvŖړI̎󂯎AhX (ꎞI) ݒ肷AƂ@
  B

  wǐ\݂󂯕tƁACOXgT[o瑗Ă
  AuEGJvbZ[Ŵ悤Ȃ̂j[XO[vɌ͂
  łBȂ΂ׂĂ܂sĂ܂B̐VCOXg
  ɁAj[XbZ[W|XgăeXgĂ݂܂傤B

  (:eXgƂ͂AӖȃ|Xg͖fȂ̂ł߂܂傤ˁB)

  |XgbZ[W͂ɂ̓j[XɔfȂ͂łB(
  fĂ܂Ă悤ƁAȂɂԈĂ܂B) bZ[W̓C
  ŊOɑoACOXgT[o܂Ԃă[J}V
  A[Jȃj[XO[vɃ|XgAƂ菇𓥂ނ
  łB

  ܂΁A[Jj[XʂĂ܂COXgƂ
  Ƃ肪łĂ邱ƂɂȂ܂B

  8.  ܂삵Ȃꍇ...

  Ȃɂ܂삵Ȃꍇɂ́AbZ[W̒ʂׂoHǐՂĂǂ
  ŎsĂ̂悭ׂKv܂Bɂ́ACj[
  X̃ObZ[WĂ݂̂ł傤B

    Robert Hart
    Melbourne, Victoria, Australia October 1996

  9.  mail2news.pl XNvg

  #!/usr/bin/perl

  ($program = $0) =~ s%.*/%%;
  #( $version  ) = $] =~ /(\d+\.\d+).*\nPatch level/;
  #die "$program: requires at least version 3 of perl\n"
  #        if $version < 3;

  # $inews = "/usr/bin/inews";
  # $iopts = "-h -o \"mail2news gateway\"";
  $inews = "/usr/bin/rnews";
  $iopts = "";
  $postinghost = "your.news.server";

  if ($#ARGV < 0) {
      # $newsgroup = "test";
      # we'll expect the newsgroup line in the body
  } elsif ($#ARGV == 0) {
      $newsgroup = $ARGV[0];
  } else {
      die "usage: $program [newsgroup]\n";
  }

  # in case inews dumps core or something crazy
  $SIG{'PIPE'} = "plumber";
  sub plumber { die "$program: \"$inews\" died prematurely!\n"; }

  open (INEWS, "| $inews $iopts") ||
      die "$program: can't run $inews\n";

  # header munging loop
  while (<STDIN>) {
     last if /^$/;

     # transform real from: line back to icky style
     s/^From:\s+(.*) <(.*)>/From: $2 ($1)/;

     s/Message-Id/Message-ID/;

     # transform from_ line to path header; also works locally
     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: didn't expect newsgroup in both headers and ARGV\n"
      if $newsgroup && $saw_newsgroup;

  die "$program: didn't get newsgroup from either headers or ARGV\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>;   # gobble rest of message

  close INEWS;
  exit $?;

  10.  {ɂ

  { : 쓇 _ (kei@sm.sony.co.jp)
  Z     : ɓ   (nozomi@biol.tsukuba.ac.jp)

  ́ALinux MINI-HOWTO Mail2News ̖|łBӖ܂A
  e͂B܂AěAAƂ킩₷ĂȂǂ
  ܂AЖ҂܂ŃtB[hobN肢v܂B

