  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tp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ik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):


    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 :-)

    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,

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

    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,

    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,

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

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

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



  22..  SSo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:

    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/>,

    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iz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:

    Proces innd cay czas pozostaje w pamici (leafnode wywoywany jest
     "na danie"),

    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 odrzu
  cona 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/sucknewsrc",

  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sw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 krytyczn rol dla bezpieczestwa odgrywa tutaj nie ujaw
     nianie zawartoci pliku "$HOME/.ssh/identity", czyli prywatnej
     poowy klucza. Istnieje take rozwizanie umoliwiajce wygen
     erowanie 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
  zdalnym 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.


















