  inn+suck - instalacja.
  Rafa Czecztka, michu@amg.gda.pl
  v2.02, 1 listopad 1998

  Tekst ten opisuje procedur instalacji lokalnego serwera news (inn),
  sposb wymiany postw (suck) oraz metod kompresji newsw w drodze (ssh).
  Orygina tego dokumentu mona znale na stronie
  www.amg.gda.pl/~michu/linux.html
  <http://www.amg.gda.pl/~michu/linux.html>.  Zostao uyte kodowanie
  ISO-8859-2.
  ______________________________________________________________________

  Spis treci


  1. Wstp.

     1.1 Przedmowa.
     1.2 Podzikowania.

  2. Sowo o programach, instalacja i konfiguracja.

     2.1 Co to jest inn i suck.
     2.2 Kiedy instalowa inn+suck.
     2.3 Wady i zalety tego rozwizania.
     2.4 Instalacja i konfiguracja.
     2.5 Kompresja newsw w drodze.
     2.6 Uwagi i kruczki.

  3. Prawa autorskie/legalno.



  ______________________________________________________________________

  11..  WWssttpp..




  11..11..  PPrrzzeeddmmoowwaa..


  Ca tre tego dokumentu stanowi opis mojej instalacji duetu suck+inn w
  systemie RedHat5.1, w oparciu o konkretne pakiety (inn-1.7.2-13 i
  suck-3.9.4-2). Impulsem do napisania tego tekstu byy moje pocztkowo
  nieudane prby instalacji oraz niky odzew na moje posty na grupie
  pl.comp.os.linux (pewnie jak zwykle moje zapytania zaginy gdzie w
  potoku informacji i zapyta docierajcych tu codziennie).  Nie mam
  zamiaru pretendowa do miana fachowca od konfiguracji serwerw news (po
  prostu u mnie ju to dziaa), tym nie mniej mam nadziej, e opis
  minimalnej, dziaajcej konfiguracji bdzie dla kogo przydatny.

  Wszelkie sugestie i poprawki s mile widziane i naley je wysya pod
  adres michu@amg.gda.pl <mailto:michu@amg.gda.pl>.

  W tym dokumencie w paru miejscach porwnuj inn'a do leafnode'a, ktrego
  wczeniej uywaem.



  11..22..  PPooddzziikkoowwaanniiaa..


  Nastpujcy ludzie przyczynili si do postania tego dokumentu, tak czy
  inn drog, wiadomie lub niewiadomie (w kolejnoci alfabetycznej):
  +o  Ariadna - wyjechaa subowo na dwa tygodnie, dziki czemu mogem m.in.
     spokojnie spodzi ten dokument ;-) oraz po powrocie poprawia wiele
     literwek (kobiety bywaj czasem przydatne :-)

  +o  Bartosz Maruszewski z JTZ (B.Maruszewski@jtz.org.pl) - nadesa
     doczony skrypt do dodawania zasubscribowanych grup do inn'a,
     wspiera mnie moralne (z czego pewnie nie zdawa sobie sprawy :) oraz
     przekodowa ten dokument do SGML,

  +o  Jacek Czerwiski (klik@rubikon.net.pl) - poda rozwizanie likwidujce
     problem odsyania postw,

  +o  Krzysztof Zietara (tarhim@alpha.net.pl) - rozwiza problem ze
     ciganiem (a raczej jak ich nie ciga) grup "control", "junk", "test"
     i "to" oraz nadesa inne uwagi,

  +o  Micha Tyraa (kbns@zeus.polsl.gliwice.pl) - pomg w rozwizaniu
     problemw z wpuszczaniem postw do inn'a przy transferze z kompresj
     oraz nadesa odpowiedni skrypt,

  +o  Radosaw Gancarz (feanor@zeus.polsl.gliwice.pl) - rozwiza problemy z
     odrzucaniem niektrych postw (zmiany w newsfeeds),

  +o  Tomasz Szymczak (szymczak@bg.univ.gda.pl) - poda sugesti dotyczc
     opcji "-M" w suck'u,

  +o  Inni, nie wymienieni z nazwiska, zwrcili uwag na par drobnych
     niedomwie, niedocigni, potkni i niecisoci.



  22..  SSoowwoo oo pprrooggrraammaacchh,, iinnssttaallaaccjjaa ii kkoonnffiigguurraaccjjaa..




  22..11..  CCoo ttoo jjeesstt iinnnn ii ssuucckk..


  Inn jest to "InterNetNews daemon" czyli program umoliwiajcy wielu
  uytkownikom korzystanie z zasobw news.

  Suck jest to zasysacz newsw; poredniczy on w wymianie newsw pomidzy
  dwoma serwerami: naszym i zdalnym (emulujc zachowanie normalnego
  czytnika; protok wymiany postw pomidzy serwerami (wbudowany w inn'a)
  odbywa si na troch innej zasadzie i wymaga specjalnej konfiguracji po
  obu stronach, czego chcemy unikn).



  22..22..  KKiieeddyy iinnssttaalloowwaa iinnnn++ssuucckk..


  Jeli uwaasz, e spenione s ponisze warunki:


  1. Nudzi Ci si i potrzebujesz jakiej odmiany (warunek konieczny, bo
     przecie tak naprawd jeli potrzebujesz lokalnego serwera newsw, to z
     pewnoci wystarczy Ci duo prostszy w konfiguracji i uywaniu
     leafnode, poza tym ten eksperyment moe Ci kosztowa sporo czasu i
     nadszarpnitych nerww),

  2. Z newsw na twoim komputerze korzysta wicej ni jeden uytkownik (bo
     dla jednego usera zupenie wystarczajce jest "rtin -SQ") ewentualnie
     "twj" komputer suy jako serwer news dla caej sieci (np. w firmie),

  3. Moliwoci leafnode'a ju Ci nie wystarczaj (potrzebujesz killfile'i,
     rnych ogranicze na cigan poczt newsow, ...),

  4. ciganie newsw trwa u Ciebie zbyt dugo i potrzebujesz ich kompresji,

  to znaczy, e powiniene zainstalowa duet inn+suck.

  Jeli ju bdziesz chcia zainstalowa to oprogramowanie, to bd Ci
  potrzebne nastpujce (lub inne wersje) pakiety:


  1. cleanfeed (np. cleanfeed-0.95.5a-1),

  2. inn (np. inn-1.7.2-13, UWAGA: oryginalny pakiet z dystrybucji RH5.1
     jest niepoprawny),

  3. perl-MD5 (np. perl-MD5-1.7-2),

  4. suck (np. suck-3.9.4-2).

  Ja skorzystaem z niej wymienionych adresw:

  +o  pakiety cleanfeed, inn i perl-MD5 -
     ftp.task.gda.pl/pub/linux/redhat-updated/i386/RedHat/RPMS/
     <ftp://ftp.task.gda.pl/pub/linux/redhat-updated/i386/RedHat/RPMS/>,

  +o  pakiet suck ftp.task.gda.pl/pub/linux/redhat-contrib/tbird/i386/
     <ftp://ftp.task.gda.pl/pub/linux/redhat-contrib/tbird/i386/>.



  22..33..  WWaaddyy ii zzaalleettyy tteeggoo rroozzwwiizzaanniiaa..


  Zalety inn+suck:


  1. Szybki (piekielnie),

  2. Znaczne moliwoci (killfile, ...), cho tu naley raczej patrze na
     moliwoci suck'a (poniewa dopiero po cigniciu pliki s przesyane do
     inn'a a jak co ju w caoci przeszo przez modem, to moim zdaniem
     niech ju zostanie),

  3. Mona tak skonfigurowa inn+suck, e newsy s cigane skompresowane,
     czyli czas transmisji mona skrci parokrotnie,

  4. Mona grep'owa pliki z zawartoci grup bez adnych "skutkw ubocznych"
     (ta uwaga odnosi si do duo prostszego leafnode'a, gdzie czas do
     expire jest liczony od daty ostatniego dostpu do pliku, wic jeli
     "to si zrobio", to czas ten oczywicie przedua si),

  5. Instalujc ten serwer jeste "wrd najlepszych" (wikszo duych serwerw
     news dziaa wanie na inn'ie).

  Wady inn+suck:


  1. Do pogmatwana konfiguracja i hermetyczna dokumentacja (przynajmniej
     na pocztek) ale ten dokument powsta wanie aby wyeliminowa t
     niedogodno,

  2. Pamicioerno:

  +o  Proces innd cay czas pozostaje w pamici (leafnode wywoywany jest
     "na danie"),
  +o  Na dysku zajmuje wicej miejsca ni leafnode (cho jest to do
     przyjcia).



  22..44..  IInnssttaallaaccjjaa ii kkoonnffiigguurraaccjjaa..


  Proces instalacji i "konfiguracji" jest prosty (przynajmniej do
  pierwszego "ruszenia", ale o tym, bez tego wstpu, przecitny zjadacz
  newsw mone przekona si dopiero po parodniowych dociekaniach):


  1. Zainstalowa inn i suck (i jeszcze par wymienionych wczeniej
     drobiazgw),

  2. W pliku "/etc/news/innfeed.conf" usun sekcj peers,

  3. W pliku "/etc/news/newsfeeds" doda wasn sekcj z feeds, tj.:


       ----- ciach -----
       ...
       news.task.gda.pl\
               :!junk,!test,!to\
               :Tf,Wnm:
       ...
       ----- ciach -----




  gdzie news.task.gda.pl to nazwa mojego serwera news, oraz do definicji
  dystrybucji akceptowanych przez nasz serwer doda polsk:


       ----- ciach -----
       ...
       ME\
           :*,@alt.binaries.warez.*,!junk,!control*,!local*,!foo.*\
           /pl,world,usa,na,gnu,bionet,pubnet,u3b,eunet,vmsnet,inet,ddn,k12\
           ::
       ##   ^^ - to jest to pl
       ...
       ----- ciach -----




  4. W pliku "/usr/lib/suck/get.news.innxmit" wstawi nazw serwera news
     (REMOTE_HOST=news.task.gda.pl) oraz "sajtu" (tego samego co w
     punkcie 3., tj. SITE=news.task.gda.pl),

  5. W suck'u w pliku "/usr/lib/suck/sucknewsrc" zapisa wszystkie
     interesujce nas grupy i numery postw, od ktrych ma si zacz
     "ciganie", np.:


       ----- ciach -----
       ...
       pl.comp.ogonki 1
       pl.comp.os.linux 1
       ...
       ----- ciach -----


  UWAGA!!! Zaczynajc od pierwszego postu jestemy naraeni na ciganie duej
  iloci danych a co si z tym wie znaczne koszty. W kocu i tak zapewne
  okae si, e wikszo postw jest za stara i zostanie odrzucona przez
  inn'a. Lepiej wic nie zaczyna od pocztku ale od kilku(set) postw
  wstecz. U mnie 57 grup (w caoci) z dostpem online (ethernet "wpity do"
  TASKu, transfer osiga 160KB/sec, jednak to byo bardziej ograniczenie
  zdalnego serwera ni cza) cigao si prawie godzin,

  6. Usun pliki "/etc/cron.daily/inn-cron-rnews" oraz
     "/etc/cron.hourly/inn-cron-nntpsend" (ich funkcje przejmuje suck),

  7. Teraz moemy ju wystartowa serwer np. poleceniem
     "/etc/rc.d/init.d/innd start". Mona/trzeba take doda odpowiednie
     linki do katalogw "/etc/rc.d/rc0-6].d/" (np. poleceniem ntsysv),

  8. Doda grupy do inn'a. Mona to zrobi rcznie poleceniem "ctlinnd
     newgroup nazwa.grupy" lub skorzysta z poniszego skryptu:


       ----- ciach -----
       #!/bin/bash
       #
       # Ten skrypt tworzy automatycznie grupy w inn-ie, ktore podales w pliku
       # /usr/lib/suck/sucknewsrc - konfiguracyjnym dla suck-a.
       # UWAGA !!!
       # Wymagany format tego pliku to:
       ############################
       # nazwa.grupy numer.artykulu
       ############################
       #
       # Mozesz podac inna lokalizacje
       SUCK_FILE=/usr/lib/suck/sucknewsrc
       #
       # Podaj sciezke do programu ctlinnd. Skrypt sprobuje sam zgadnac, ale
       # lepiej podaj jak wiesz.
       CTLINND=`which ctlinnd`

       cat ${SUCK_FILE} | while read ln; do
               set -e $ln >/dev/null
               ${CTLINND} newgroup $1
               if [ $? -eq 1 ]; then
                       echo Blad podczas zakladania grupy $1 !!!
                       exit
               fi
       done
       ----- ciach -----





  9. Aby nie ciga grup "control", "junk", "test" ani "to" (z pewnoci nam
     si nie przydadz), musimy stworzy plik "/usr/lib/suck/active-
     ignore":


       ----- ciach -----
       control
       junk
       test
       to
       ----- ciach -----




  Oczywicie grup tych nie naley umieszcza w pliku "/usr/lib/suck/suck-
  newsrc",

  10.
     Wymian newsw ze zdalnym serwerem inicjujemy skryptem
     "/usr/lib/suck/get.news.innxmit".



  22..55..  KKoommpprreessjjaa nneewwssww ww ddrrooddzzee..


  Poniewa newsy s danymi tekstowymi, wic ich kompresja zdecydowanie
  skraca czas transmisji, dziki czemu z pewnoci zaoszczdzimy troch
  pienidzy kosztem naszego operatora telekomunikacyjnego (pienidze te
  mog by wysane do autora powyszego tekstu, za ewentualne straty autor
  oczywicie nie bierze adnej odpowiedzialnoci ;-). Osobicie wydaje mi
  si, e przedstawione tu rozwizanie jest najbardziej naturalne i
  elastyczne. Nie oznacza to oczywicie, e nie mona tego zrobi lepiej.
  Podczas eksperymentw okazao si take, e zwyke tunelowanie komunikacji w
  skompresowanym kanale ssh nie daje oczekiwanych rezultatw, std wynikna
  potrzeba wywoania suck'a na zdalnym komputerze (po prostu komunikacja
  pomidzy komputerami jest na tyle dua, e po uwzgldnieniu opnie
  wystpujcych w trakcie transferu, niemal cakowicie niweczony jest efekt
  zmniejszonej objtoci danych).

  Opisujc ponisze rozwizanie zakadam, e masz ju poprawnie zainstalowane
  i skonfigurowane pakiety inn+suck. Aby z niego korzysta niezbdne nam
  take bd:


  1. na domowym komputerze musi by zainstalowny klient ssh,

  2. musimy mie dostp do konta na zdalny komputerze z zainstalowanym
     systemem Unix'opodobnym, podczony w miar szybkim czem staym do
     internetu, z zainstalowanym suck'iem oraz uruchomionym demonem ssh.

  Pakiety ssh w wersji midzynarodowej (te z literk "i" na kocu) mona
  cign z ftp.task.gda.pl/pub/linux/redhat-crypto/i386/
  <ftp://ftp.task.gda.pl/pub/linux/redhat-crypto/i386/>. Podczas pisania
  tego dokumentu najnowszymi wersjami byy: ssh-1.2.26-1i, ssh-
  clients-1.2.26-1i, ssh-extras-1.2.26-1i i ssh-server-1.2.26-1i.

  Caa przedstawiona poniej idea opiera si na moliwoci uruchomienia
  suck'a na zdalnym komputerze tak, aby wiadomoci byy wysyane w postaci
  strumienia danych, ktry jest przesyany w skompresowanym kanale ssh
  (opcja "-C"). Dopiero pniej, lokalnie, za pomoc skryptu filter2rnews,
  strumie ten jest dzielony na poszczeglne wiadomoci, ktre s wpuszczane
  za pomoc programu rnews do lokalnego serwera innd.

  W tym celu musimy:


  1. Usun z pliku "/usr/lib/suck/get.news.innx" ca sekcj suc do wysyania
     wiadomoci, czyli skrypt ten powinien by postaci:











  ----- ciach -----
  #!/bin/sh

  #BEFORE USING - check to ensure all the paths defined below are
  #               correct!!

  #NOTE: this script probably needs to be run by root.  Most systems
  # will not let a normal user run ctlinnd

  REMOTE_HOST=news.task.gda.pl
  LOCAL_HOST=localhost

  SPOOLDIR=/var/spool/news  # base directory for articles to be rposted
  NEWSDIR=/usr/lib/news     # base directory for news binaries
  BASEDIR=/usr/lib/suck     # base directory for scripts and data files

  CTLINND=${NEWSDIR}/bin/ctlinnd    # location of binary
  SHLOCK=${NEWSDIR}/bin/shlock      # location of binary

  TMPDIR=${BASEDIR}           # location for suck.* files
  MSGDIR=${BASEDIR}/Msgs      # where to put MultiFile messages when
                              #   getting them

  SITE=news.task.gda.pl       # name of site from newsfeeds file

  OUTGOING=${SPOOLDIR}/out.going/${SITE}  # location of the list of
                                          #   articles to upload
  OUTGOINGNEW=${OUTGOING}.new # file to contain the list temporarily
  OUTGOINGFAIL=${OUTGOINGNEW}.fail  # file with failed xfers
  SCRIPT=${BASEDIR}/put.news  # my filter for rpost
  OUTFILE=/tmp/tmp$$          # used by rpost as article after it is
                              #   filtered
  LOCKFILE=${BASEDIR}/getnews.lock  # lock file to prevent multiple
                                    #   instances of script
  NEWSGROUP=news              # which group owns the file in out.going,
                              #   typically either news or uucp.

  TESTHOST=testhost
  RPOST=rpost
  SUCK=suck

  # if we are already running, abort

  trap 'rm -f ${LOCKFILE} ; echo "Aborting" ; exit 1' 1 2 3 15
  ${SHLOCK} -p $$ -f ${LOCKFILE}
  if [ $? -ne 0 ]; then
    echo "Already running, can't run two at one time"
    exit
  fi

  # now upload messages
  if [ -s ${OUTGOING}  -o -s ${OUTGOINGNEW} ]; then
    ${TESTHOST} ${REMOTE_HOST} -s

    if [ $? -ne 0 ]; then
      echo "Remote posting host not responding"
    else
      if [ ! -s ${OUTGOINGNEW} ]; then
        mv ${OUTGOING} ${OUTGOINGNEW}
        ${CTLINND} flush ${SITE}
      fi

      # outgoing messages to post
      ${RPOST} ${REMOTE_HOST} -d -b ${OUTGOINGNEW} -p ${SPOOLDIR} \
          -f \$\$o=${OUTFILE} ${SCRIPT} \$\$i ${OUTFILE}
      ERRLEV=$?
      if [ ${ERRLEV} -eq 0 ]; then
        echo "Remotely posted articles"
        rm ${OUTFILE}
      elif [ ${ERRLEV} -eq 1 ]; then
        echo "Error posting a message"
      elif [ ${ERRLEV} -eq 2 ]; then
        echo "Unable to do NNTP authorization with remote server"
      elif [ ${ERRLEV} -eq 3 ]; then
        echo "Unexpected answer from remote server to a command"
        echo "while doing NNTP authorization"
      elif [ ${ERRLEV} -eq -1 ]; then
        echo "Fatal error"
      fi

      if [ -f ${OUTGOINGFAIL} ]; then
        mv ${OUTGOINGFAIL} ${OUTGOINGNEW} # so we can re do it
        chown news.${NEWSGROUP} ${OUTGOINGNEW}
        chmod 664 ${OUTGOINGNEW}
      fi
    fi
  fi

  rm -f ${LOCKFILE}
  ----- ciach -----




  Oczywicie naley pamita o waciwym ustawieniu zmiennych REMOTE_HOST i
  SITE.

  2. Skopiowa z lokalnego katalogu "/usr/lib/suck/" pliki "active-
     ignore", "suck.killlog", "suckkillfile" oraz "sucknewsrc" do
     zdalnego katalogu "$HOME/suck/" (jeli nie jest tam zainstalowany
     suck, a tamta maszyna ma tak sam architektur jak nasza, to moemy
     skopiowa tam take program "/usr/bin/suck").

  3. Stworzy moliwo logowania si na zdalnym komputerze za pomoc ssh bez
     uycia hasa (tylko na podstawie znajomoci klucza RSA):


     a. wygenerowa par kluczy RSA komend ssh-keygen (w pass phrase nie
        podawa hasa),

     b. nastpnie skopiwa plik "$HOME/.ssh/identity.pub" na zdalny
        komputer do pliku "$HOME/.ssh/authorized_keys".


     UWAGA!!! Naley zdawa sobie spraw z tego, e mimo, i takie rozwizanie
     jest o wiele bezpieczniejsze od logowania si za pomoc hasa, to kry-
     tyczn rol dla bezpieczestwa odgrywa tutaj nie ujawnianie zawartoci
     pliku "$HOME/.ssh/identity", czyli prywatnej poowy klucza. Istnieje
     take rozwizanie umoliwiajce wygenerowanie klucza z hasem i
     podawanie go tylko raz na sesj (patrz program ssh-agent).

  4. Utworzy skrypt "/usr/local/bin/filter2rnews":










  ----- ciach -----
  #!/usr/bin/perl -w

  while (not eof(STDIN)) {
      @POST = "";
      do {
          $linia = <>;
          push @POST, $linia if $linia !~ /^\.$/;
      } until ($linia =~ /^\.$/);
      $dlug = length(join('',@POST));
      print "#! rnews $dlug\n";
      print @POST;
  }
  ----- ciach -----




  5. Po dokonaniu wszystkich powyszych krokw moemy ju pobiera newsy
     komend:


       ----- ciach -----
       ssh -C -l username serwer.name \
         '~/suck/suck news.task.gda.pl -dd ~/suck -dt ~/suck -M -c' | \
         filter2rnews | rnews -N -vvv -S localhost
       ----- ciach -----




  gdzie username to nazwa uytkownika na komputerze serwer.name a
  news.task.gda.pl jest nazw naszego serwera news. Wiadomoci wysyamy tak
  jak poprzednio, czyli za pomoc skryptu
  "/usr/lib/suck/get.news.innxmit".



  22..66..  UUwwaaggii ii kkrruucczzkkii..



  1. Usuwanie grup odbywa si przez "ctlinnd rmgroup nazwa.grupy" (jeli
     wywoujemy suck'a lokalnie, to on sam usunie tak grup z pliku
     sucknewsrc, jeli zdalnie (patrz kompresja) to musimy to zrobi
     rcznie),
     UWAGA!!! Nie naley usuwa grup "control", "junk", "test" ani "to",
     inn bardzo le to znosi.

  2. Opisy grup mona dodawa w pliku "/var/lib/news/newsgroups", np.:


       ----- ciach -----
       ...
       pl.comp.ogonki O polskich literkach w komputerach.
       pl.comp.os.linux Linux - system operacyjny dla kazdego.
       ...
       ----- ciach -----




  3. Dane o przeterminowaniach s w pliku "/etc/news/expire.ctl",
     usuwanie przeterminowanych postw mona wymusi uruchamiajc skrypt
     "/etc/cron.daily/inn-cron-expire" (przecie nie kady ma wczony
     komputer ca dob).
  4. Wyczenie odrzucania artykuw przez innd (ju to przecie robi suck)
     dokonuje si komend "ctlinnd perl n".

  5. Aby usun limit linii dla postw cignitych przez inn'a (ju po
     zaakceptowaniu przez suck'a) naley doda w pliku "/etc/rc.d/rc.news"
     do opcji FLAGS flag "-l0".

  6. Jeli podczas cigania newsw pojawi si komunikat "GROUP command not
     recognized, try the -M option" oczywicie dodaj w pliku
     "/usr/lib/suck/get.news.innxmit" opcj "-M" do wywoania suck'a.

  7. Od czasu do czasu mona wyczyci skrytk pocztow uytkownika news np. z
     konta root'a komend "su - news -c pine".

  8. W pliku "/etc/news/inn.conf" moemy zmieni parametry "organization"
     (bo napis "A poorly-installed InterNetNews site" w postach wyglda
     nieelegancko) oraz ustawi "pathhost" (uatwia czytanie logw).

  9. Sprawdzenie kolejki postw wychodzcych mona dokona poniszym skryptem
     (jest to przerobiony skrypt newsq z pakietu leafnode):


       ----- ciach -----
       #!/usr/bin/perl

       $spooldir = "/var/spool/news";

       if ( chdir "$spooldir/out.going" && opendir( DIR, "." ) ) {
           @sites = readdir( DIR );
           closedir( DIR );

           foreach (@sites) {
               if ( open(F, "< $_") ) {
                   while(<F>) {
                       push @posts, (split)[0];
                   }
                   close F;
               }
           }

           undef $/;
           foreach (@posts) {
               if ( open(F, "< $spooldir/$_") ) {
                   undef $subject, $newsgroups, $from;
                   $_ = <F>;
                   close F;
                   s/\n\n.*//s;
                   s/\r//gs;
                   s/\n\s+/ /sg;
                   foreach ( split( /\n/, $_ ) ) {
                       $subject = $1 if ( /^Subject:\s+(.*)/i );
                       $newsgroups = $1 if ( /^Newsgroups:\s+(.*)/i );
                       $from = $1 if ( /^From:\s+(.*)/i );
                   }
                   print $from, " in ", $newsgroups, "\n\t", $subject, "\n",
                       if ( $subject ne "" && $from ne "" && $newsgroups ne "" );
               }
           }
       }
       ----- ciach -----




  10.
     Jeli suck odsya cignite posty z powrotem do zdalnego serwera, to
     moemy zmieni sekcj feeds w pliku "/etc/news/newsfeeds" w nastpujcy
     sposb:


       ----- ciach -----
       ...
       news.task.gda.pl/news.task.gda.pl\
               :!junk,!test,!to\
               :Tf,Wnm:
       ...
       ----- ciach -----




  UWAGA!!! Nie jestem przekonany do tego rozwizania, ale podobno dziaa
  (w kadym razie komu taki wpis rozwiza problem).

  11.
     Jeli zobaczymy na ekranie napis typu:


       ----- ciach -----
       ...
       stdin: rejected 437 Unwanted newsgroup "pl.rec.radio" [Path:\
       news.task.gda.pl!orion.cst.tpsa.pl...]
       ...
       ----- ciach -----




  nie naley wpada w panik. Najprawdopodobniej jest to wynik bdu w zdal-
  nym inn'ie (wersja 2.1) zwizanego z bazami overview.



  33..  PPrraawwaa aauuttoorrsskkiiee//lleeggaallnnoo..


  Prawa autorskie nale do (C) Rafaa Czecztki michu@amg.gda.pl
  <mailto:michu@amg.gda.pl>.  Dokument ten jest rozpowszechniany na
  podstawie GPL (Gnu Public License).

  Znaki towarowe nale do ich wacicieli. Nie ma adnych gwarancji co do
  dokadnoci czy przydatnoci informacji zawartych w tym dokumencie.




















