  ======== Mail2News.j ========
    Mail2News ~jnEc[
    v1.0, 4 November 1996

    :   Robert Hart, InterWeft IT Consultants Melbourne, Australia
            iweft@ipax.com.au

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

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

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

    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
    COXg[U (ML) wǂA[Jj[X
    T[oɗ (:gate) ƂɂāÃCOXg
    eTCg̃[USœǂނƂł܂B
    ܂AuinndṽZLeB[@\g΁Ã[Û݂
    ANZX𐧌邱Ƃł܂B

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

    COXg̓ej[X[_[œǂނƂɂ͑ɂbg
    ܂BقƂǂ̃CtgGhł̓T|[gĂȂ
    uXbhvgƂł邩łB(: m̂ƂA
    XbhƂ́A̔ƁAɑ΂tH[\ăANZX
    ł悤Ȏdg݂ł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[X
    O[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
    CGCAXpCv( : 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[X
    O[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[X
    O[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 COXg
    T[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Ƀ|Xg
    AƂƂłˁB)

    4.  mail2news ̃ZbgAbv

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

    ȉ̂悤ɂ̃XNvgҏWĂ:

      XNvg̐擪Bperl ̃oCiǂɂ̂w肵܂B
       ___________________________________________________________________
       #!/usr/bin/perl
       # point at the correct location of perl
       ___________________________________________________________________

      ̏ꍇɂ͎3sŖ肪܂BRgAEgĂ܂
        肠܂B
       ___________________________________________________________________
       ( $version  ) = $] =~ /(\d+\.\d+).*\nPatch level/;
       die "$program: requires at least version 3 of perl\n"
               if $version < 3;
       ___________________________________________________________________

      ̍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
       ___________________________________________________________________

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

    5.  CGCAX̐ݒ

    /etc/aliases ҏWāAj[XɃpCvCOXg
    Gg[쐬܂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̂郁CO
    XgꂼɂĂ̂悤ȃGg[쐬ɁA[J
    j[XT[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̔zM
    t@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)B
    Ainnd ́At@C̃[U ID Ap[~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
    COXgł́Awǐ\ꂽCAhXƂ͈قȂ
    AhXłwǂ󂯕tĂƂ낪܂B
    (̃AhXŖ{ɍwǂ̈ӎu邩ǂmF܂B)

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

    wǐ\݂󂯕tƁACOXgT[o瑗
    AuEGJvbZ[Ŵ悤Ȃ̂j[XO[vɌ
    ͂łBȂ΂ׂĂ܂sĂ܂B̐VCO
    XgɁ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 $?;
    ______________________________________________________________________

