  inn+suck - instalacja.
  Rafa Czecztka <mailto:michu@amg.gda.pl>
  v4.11, 18 sierpie 2000

  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.  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 Podstawowa instalacja i konfiguracja
     2.5 Kompresja newsw w drodze
     2.6 CNFS
        2.6.1 Krtka chrakterystyka CNFS
        2.6.2 Instalacja i konfiguracja CNFS
        2.6.3 Podstawowe rnice
     2.7 Grupy moderowane
     2.8 Uwagi i kruczki
        2.8.1 Jeli co moe pj le, to z pewnoci pjdzie
        2.8.2 Inn na co dzie, czyli rzeczy o ktrych warto wiedzie

  3. Inne dokumenty zwizane z tematem

  4. Do zrobienia

  5. 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


  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 dziaajcej konfiguracji
  bdzie dla kogo przydatny.

  Ca tre tego dokumentu stanowi opis mojej instalacji duetu inn+suck
  w systemie RedHat 6.2, w oparciu o pakiety inn-2.2.2-3 i suck-4.2.2-1.
  Jeli dysponujesz inn wersj systemu i/lub pakietw to mog wystpi
  pewne rnice w konfiguracji, mniemam jednak, e nie powinno to
  stanowi najmniejszego problemu ju dla rednio zaawansowanego
  mionika Linux'a.

  Wszelkie sugestie i poprawki s mile widziane i naley je wysya pod
  adres michu@amg.gda.pl.  Jestem skory do pomocy, prosz jednak o
  uszanowanie mojego czasu i nie wysyanie mi listw o lakonicznej
  treci typu "_n_i_e _d_z_i_a__a _m_i_, _C_O _R_O_B_I__?_?_?" czy magabajtowych zacznikw
  z konfiguracj.  Jeli widzisz, e nic Ci nie wychodzi, to sprawd czy
  wykonae dokadnie wszystkie kroki (z dokadnoci do rnych wersji
  pakietw/dystrybucji). Jeli po paru podejciach nadal masz powane
  problemy, to lepiej na razie sobie odpu i sprbuj ponownie za jaki
  czas.

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

    Andrzej Radecki (radecki@posejdon.wpk.p.lodz.pl) - poda sposb
     czytania lokalnego archiwum,

    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,

    Jakub Bogusz (qboosh@priv6.onet.pl) - poda jeszcze jeden sposb, w
     jaki mona rozwiza problem odsyania postw,

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

    Maciej Miechowicz (miechus@aurora.put.poznan.pl) - dokona
     przeoenia niniejszego tekstu na jzyk angielski,

    Marcin Kasperski (Marcin.Kasperski@softax.com.pl) - doda par uwag
     dotyczcych instalacji na Debian'ie, wymiany postw z wieloma
     serwerami oraz podesa ca sekcj na temat grup moderowanych,

    Michal Kaczmarek (shadow@fanthom.math.put.poznan.pl) - poda kilka
     istotnych uwag,

    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 Sienicki (tsca@cryogen.com) - poda ciekawego URL'a
     zwizanego z tematem,

    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 s rozwizania typu
     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.7b-7, wymagany tylko w RedHat, aby
     speni zalenoci RPM'a),

  2. inn (np. inn-2.2.2-3),

  3. perl-MD5 (np. perl-MD5-1.7-2, podobnie jak cleanfeed wymagany tylko
     w RedHat),

  4. suck (np. suck-4.2.2-1).





  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..  PPooddssttaawwoowwaa 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


  UWAGA!!! W zalenoci od dystrybucji i wersji pakietw wymienione
  poniej pliki konfiguracyjne mog wystpowa w innych katalogach (np.
  /var/lib/suck/, /usr/lib/suck/, /etc/suck/, ...).

  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),
     UWAGA!!! Poniewa inn bardzo le znosi wszelkie zmiany atrybutw
     plikw (jest to przyczyna wikszoci niepowodze), najlepiej je
     gdzie zapisa:


       ----- ciach -----
       ls -ld `rpm -ql inn` > ~/jaki_plik_z_atrybutami
       ----- ciach -----




  a wszelkie operacje wykonywa jako uytkownik news.

  2. 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\
           :*,!junk,!control*,!local*,!foo.*\
           /pl,world,usa,na,gnu,bionet,pubnet,u3b,eunet,vmsnet,inet,ddn,k12\
           ::
       ##   ^^ - to jest to pl
       ...
       ----- ciach -----




  3. W pliku /var/lib/suck/get.news.inn (w Debiani'e jest to plik
     /etc/suck/get-news.conf) wstawi nazw serwera news (np.
     REMOTE_HOST=news.task.gda.pl) oraz "sajtu" (tego samego co przy
     definicji feed'u, tj.  SITE=news.task.gda.pl),

  4. W suck'u w pliku /var/lib/suck/sucknewsrc zapisa wszystkie
     interesujce nas grupy i numery postw, od ktrych ma si zacz
     "ciganie", np. aby cign ostatnich 100 postw naley poda:


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



  5. Jeli istniej pliki /etc/cron.daily/inn-cron-rnews oraz
     /etc/cron.hourly/inn-cron-nntpsend, to naley je usun (ich
     funkcje przejmuje suck),

  6. Jeli w pliku /etc/news/nnrp.access nie ma wpisu localhost: to
     naley go doda,

  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/rc[0-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, ktre podae w pliku
       # /var/lib/suck/sucknewsrc - konfiguracyjnym dla suck-a.
       # UWAGA !!!
       # Wymagany format tego pliku to:
       ############################
       # nazwa.grupy numer.artykulu
       ############################
       #
       # Moesz poda inna lokalizacje
       SUCK_FILE=/var/lib/suck/sucknewsrc
       #
       # Podaj ciek do programu ctlinnd. Skrypt sprbuje sam zgadn, 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 Bd podczas zakadania grupy $1 !!!
                       exit
               fi
       done
       ----- ciach -----




  9. Aby nie ciga grup control, control.cancel, junk, test ani to (z
     pewnoci nam si nie przydadz), musimy stworzy plik
     /var/lib/suck/get.news.inn:


       ----- ciach -----
       control
       control.cancel
       junk
       test
       to
       ----- ciach -----




  Oczywicie grup tych nie naley umieszcza w pliku /var/lib/suck/suck
  newsrc,


  10.
     Wymian newsw ze zdalnym serwerem inicjujemy skryptem
     /var/lib/suck/get.news.inn (lub /var/sbin/get-news na Debian'ie),

  11.
     Aby czyta newsy musimy ustawi zmienn rodowiskow NNTPSERVER.
     Dla bash'a bdzie to komenda:


       export NNTPSERVER=localhost








  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.

  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 /var/lib/suck/get.news.inn ca sekcj suc do
     cigania 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/articles       # base directory for articles to be rposted
  NEWSDIR=/usr                            # base directory for news binaries
  BASEDIR=/var/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}/../outgoing/${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

  HISTORY=/var/lib/news/history           # location of history file

  # 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
                  # this is needed by INND so that the outgoing file will be
                  # properly flushed and we have a new blank file to work with
                  # when we are done
                  # First mv the current one to a new file name
                  # Since innd already has the file open, it doesn't care
                  # about the rename.
                  # The flush will ensure that all messages to be posted have
                  # been written out, close off the old one (already renamed)
                  # and create a new one.

                  # if the outgoingnew already exists, it means we aborted last time
                  # so don't try to do it again
                  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 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
          echo "You can hang up the modem now"
  fi

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




  Oczywicie naley pamita o waciwym ustawieniu zmiennych
  REMOTE_HOST i SITE.

  2. Skopiowa z lokalnego katalogu /var/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 skopiowa 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 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 = ();
    while (<>) {
      last if /^\.$/;
      push @POST, $_;
    }
    $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
  /var/lib/suck/get.news.inn.

  6. Pomocnym bdzie uaktualnienie bazy overview (rnews nie robi tego
     automatycznie):


       ----- ciach -----
       su news -c 'expireover -s -a'
       ----- ciach -----









  22..66..  CCNNFFSS




  22..66..11..  KKrrttkkaa cchhrraakktteerryyssttyykkaa CCNNFFSS


  Domylnie inn skonfigurowany jest w taki sposb, e artykuy
  przechowywane s w postaci oddzielnych plikw, w strukturze katalogw
  odpowiadajcej pozycji grupy w hierarchii. Podstawow zalet tego
  rozwizania jest prostota oraz wynikajca z niej atwo tworzenia
  rozwiza pomocniczych. Jednak taki sposb przechowywania ma co
  najmniej dwie powane wady. Pierwsz jest to, e artykuy
  przechowywane s z uyciem mechanizmw systemu operacyjnego, ktre to
  nie s zoptymalizowane do obsugi wielu plikw o maym rozmiarze,
  konsekwencj czego jest wolny dostp i dua ilo zmarnowanego
  miejsca. Drug wad jest to, e nigdy nie wiemy, jak duo miejsca bd
  nam zajmoway newsy, co grozi przepenieniem partycji.

  Wymienione powyej niedogodnoci tradycyjnego przechowywania plikw
  eliminuje CNFS (Cyclic News File System). Ten sposb przechowywania
  artykuw polega na tym, e zapisywane s one w pliku o specjalnym
  formacie. Gdy skoczy si miejsce, nowe artykuy automatycznie
  nadpisuj najstarsze.  Rozwizanie takie jest bardzo szybkie i nie
  grozi nam ju przepenienie partycji. Jedyn jego wad jest to, e
  teraz utrudniony jest "samodzielny" dostp do pojedynczych artykuw.



  22..66..22..  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 CCNNFFSS


  Aby zainstalowa CNFS naley (wszystkie te czynnoci oczywicie
  najlepiej wykona jako uytkownik news):

  1. W pliku /etc/news/inn.conf ustawi opcj storageapi na on,

  2. W pliku /etc/news/newsfeeds:

     a. Wyrzuci wpis crosspost:...,

     b. Zmieni wpis overview na:


          ----- ciach -----
          overview!:*:Tc,Ao,WhR:/usr/bin/overchan
          ----- ciach -----




  3. W pliku /etc/news/cycbuff.conf umieci definicj naszego bufora
     cyklicznego, np.:


       ----- ciach -----
       cycbuff:ONE:/var/spool/news/one:131072
       metacycbuff:BIGAREA:ONE
       ----- ciach -----




  gdzie ONE jest symboliczn nazw bufora, /var/spool/news/one jest
  plikiem bufora, 131072 rozmiarem bufora a BIGAREA jest nazw metabu
  fora cyklicznego,

  4. W /etc/news/storage.conf definiujemy jakie artykuy maj by
     przechowywane w buforze. Poniewa my mamy tylko jeden bufor, gdzie
     powinny znale si wszystkie artykuy, to u nas ten plik bdzie
     wyglda nastpujco:








  ----- ciach -----
  method cnfs {
    newsgroups: *
    class: 1
    size: 0,1000000
    options: BIGAREA
  }
  ----- ciach -----




  5. Z poziomu shell'a tworzymy bufor zdefiniowany w pliku
     /etc/news/cycbuff.conf:


       ----- ciach -----
       dd if=/dev/zero of=/var/spool/news/one bs=1k count=131072
       chmod 0664 /var/spool/news/one
       ----- ciach -----




  6. Poniewa teraz do treci artykuw nie dostaniemy si przez nazw
     pliku (np. komend cat) lecz token (program sm), to musimy w
     konfiguracji suck'a:

     a. W skrypcie /var/lib/suck/get.news.inn usun w wywoaniu rpost'a
        parametr -p nazwa_katalogu,

     b. Zamieni skrypt put.news na put.news.sm (powinien by w
        przykadach lub rdach),

  7. I moemy zaczyna ciga news'y.



  22..66..33..  PPooddssttaawwoowwee rrnniiccee


  Podstawow rnic w stosunku do standardowego sposobu przechowywania
  artykuw jest to, e nie ma potrzeby ich expirowania, teraz dzieje
  si to automatycznie, bez naszej pomocy (czasem by moe wbrew naszej
  woli ;-).

  Inn konsekwencj jest to, e pewne czynnoci wykonuje si w zupenie
  inny sposb. Np. do odtworzenia bazy overview naley zamiast komendy
  expireover uywa komendy expireindex (baza overview znajduje si
  teraz w katalogu /var/spool/news/uniover/).  Poniewa nie mamy teraz
  bezporedniego dostpu do artykuw, czasem jest potrzeba wspomoenia
  si komend makehistory (wicej informacji w manualach).







  22..77..  GGrruuppyy mmooddeerroowwaannee


  [ RCz: sekcja napisana w caoci przez Marcina Kasperskiego ]

  W normalnej konfiguracji inn+suck grupy moderowane traktowane s tak
  samo, jak wszystkie pozostae: wysyane na nie artykuy trafiaj od
  razu na lokalne grupy (bez akceptacji moderatora) i s wysyane do
  serwera z ktrego pobieramy newsy. Dopiero ten serwer przesya posty
  do moderatora.

  Sprawia to nastpujce problemy:

    nie wiemy, czy nasze posty naprawd trafiy na grup, czy nie (tj.
     czy moderator je zaakceptowa czy odrzuci - i kiedy)

    jeli wymieniamy suck'iem posty z kilkoma serwerami, moemy podpa
     moderatorom bo bdziemy wysya po kilka razy ten sam list (kady z
     serwerw sforward'uje post do moderatora)

    cz grup moderowanych jako nie jest dobrze obsugiwana (nie
     udao mi si przez tpnet wysa listu na comp.lang.perl.moderated)

    jeli z naszego hosta korzysta grupa osb, widz one grup inaczej
     ni pozostali, mog wysya odpowiedzi zanim moderator zaakceptowa
     pytanie itp.

  Problemy te moemy rozwiza konfigurujc grupy jako moderowane na
  naszym wasnym serwerze. Wwczas inn nie bdzie automatycznie
  umieszcza na grupie wysyanych postw a zamiast tego wyle je poczt
  do moderatora. Zaakceptowane posty "spyn" do nas kiedy tam suck'iem
  - tak jak to si dzieje normalnie.

  W celu takiej konfiguracji naley (lokalizacje plikw poniej
  odpowiadaj Debianowi):

  1. Tworzymy plik /etc/news/moderators z nastpujc treci:


       # Uniwersalny adres moderatorw grup polskich
       pl.*:%s@usenet.pl
       # Uniwersalny adres moderatorw grup wiatowych
       *:%s@moderators.isc.org




  2. W pliku /etc/news/inn.conf ustawiamy fromhost na adres jakiej
     maszyny widocznej w wiatowym DNS'ie (nasz host maskaradujcy, nasz
     provider, my sami jeli jestemy wbici).  Najlepiej, jeli jestemy
     w stanie czyta poczt dostawan przez konto news na tym hocie
     (listy ktre nie doszy) ale nie jest to zdaje si absolutnie
     konieczne. Przy konfiguracji poczty smarthost najlepiej nadaje si
     tu adres naszego serwera mailowego.

     Mj plik inn.conf zawiera pola organization, server (prawdziwa
     nazwa mojego serwera) i fromhost (nazwa serwera pocztowego).

     Uwaga: straciem dobry dzie zgadujc czemu moje posty nie dochodz
     pki na to nie wpadem - miaem wczeniej jako fromhost pewien
     adres z sieci lokalnej i jaki mailer po drodze wywala poczt do
     kosza - nie przysyajc adnej informacji zwrotnej, bo nie mia
     jak.

  3. Sprawdzamy dla pewnoci, czy jestemy w stanie wysa poczt z
     palca z konta news, przy pomocy sendmail'a na jakie konto w
     internecie (np. na friko), ustawiajc jako From news@to-co-
     wpisalimy-jako-fromhost.

  4. Charakteryzujemy grupy jako moderowane



  ----- ciach -----
  ...
  ctlinnd changegroup pl.rec.humor.najlepsze m
  ctlinnd changegroup comp.lang.c++.moderated m
  ...
  ----- ciach -----




  5. Prbujemy co wysa - najlepiej na grup z ktrej przychodz
     powiadomienia o zakolejkowaniu.







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





  22..88..11..  JJeellii ccoo mmooee ppjj llee,, ttoo zz ppeewwnnooccii ppjjddzziiee



  1. Bardzo pomocnym programem jest inncheck, ktry sprawdza poprawno
     konfiguracji, atrybuty plikw oraz wywietla potencjalne rda
     problemw. Jeli co nam nie dziaa to diagnostyk powinnimy
     zacz wanie od uruchomienia tego programu.

  2. W razie problemw naley take sprawdzi wacicieli oraz prawa
     dostpu do plikw z pakietu inn'a (np. z plikiem
     ~/jaki_plik_z_atrybutami ktry czujnie zrobilimy na pocztku
     instalacji).

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

  4. Jeli wysyane przez nas posty nie pojawiaj si w naszej kolejce
     wyjciowej (tzn. pliki w katalogu /var/spool/news/outgoing/ s
     puste), to moe pomc dodanie wpisu *, w pliku /etc/news/newsfeeds:


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




  5. Jeli nasz serwer odsya z powrotem cignite posty do zdalnego
     serwera, to przyczyn moe by to, e nazwa zdalnego feed'u (np.
     news.task.gda.pl) jest inna ni nazwa umieszczona w polu Path: (np.
     tasknews.task.gda.pl). Aby temu zaradzi naley sprawdzi jaka
     nazwa jest w tym polu (najbardziej z lewej) i zmodyfikowa plik
     /etc/news/newsfeeds w nastpujcy sposb:

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




  Innym rozwizaniem tego problemu jest dodanie parametru H1 do opcji
  feedu, czyli :Tf,Wnm,H1:.




  22..88..22..  IInnnn nnaa ccoo ddzziiee,, cczzyyllii rrzzeecczzyy oo kkttrryycchh wwaarrttoo wwiieeddzziiee



  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, control.cancel, 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 -----




  Moemy je cign np. komend


       testhost news.task.gda.pl -d > jaki_plik




  (jeli na serwerze z ktrego cigamy opisy jest duo grup (moe by
  ich nawet pardziesit tysicy), to moe to potrwa par minut).

  3. Dane o przeterminowaniach (nie dotyczy CNFS) 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. 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.

  5. Jeli nie chcemy aby inn odrzuca stare posty, powinnimy zwikszy
     warto parametru artcutoff w pliku /etc/news/inn.conf.

  6. Od czasu do czasu mona wyczyci skrytk pocztow uytkownika news
     np. z konta root'a komend su - news -c pine.
  7. 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).

  8. Jeli przy prbie poczenia z inn'em pojawia si komunikat You
     have no permision to talk. Goodbye naley zaktualizowa zawarto
     pliku /etc/news/nnrp.access, np. poniej dodalimy moliwo
     dostpu z sieci 192.168.1.0:


       ----- ciach -----
       # Default to no access
       *:: -no- : -no- :!*
       # Allow access from localhost
       localhost:Read Post:::*
       192.168.1.0/24:Read Post:::*
       ----- ciach -----




  9. Jeli chcemy zaoy lokaln (local) hierarchi, to wystarczy
     zaoy odpowiednie grupy local.* oraz zmieni wpis w
     /etc/news/newsfeeds:


       ----- ciach -----
       ...
       news.task.gda.pl\
               :!junk,!test,!to,!local.*\
               :Tf,Wnm:
       #                       ^^^^^^^^^ ten wpis
       ...
       ----- ciach -----




  aby nasze lokalne posty nie wdroway gdzie po wiecie.

  10.
     Jeli cigamy newsy z kilku serwerw, to wystarczy jeli umiecimy
     w pliku /etc/news/newsfeeds odpowiednie wpisy:


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

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




  11.
     Jeli przy uruchomieniu suck'a pojawia si komunikat typu Can not
     open /usr/news/db/history, Skipping warto podlinkowa /usr/news/db/
     do katalogu z baz history (zazwyczaj /var/lib/news/). Jeli zdarza
     nam si uywa kilku serwerw, to suck nie bdzie ponownie ciga
     postw, ktre ju s w naszym serwerze.
  12.
     Sprawdzenie kolejki postw wychodzcych mona dokona poniszym
     skryptem (jest to przerobiony skrypt newsq z pakietu leafnode):


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

       use MIME::Words qw(:all);

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

       if ( chdir "$spooldir/outgoing" && 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/articles/$_") ) {
       #       if ( open(F, "sm $_ |") ) {  # zamieni te linie dla CNFS
                   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 );
                   }
                   if ( $subject ne "" && $from ne "" && $newsgroups ne "" ) {
                     $from=decode_mimewords($from);
                     $newsgroups=decode_mimewords($newsgroups);
                     $subject=decode_mimewords($subject);
                     print $from . " in " . $newsgroups . "\n\t" . $subject . "\n";
                   }
               }
           }
       }
       ----- ciach -----




  13.
     Jeli chcemy aby byo robione lokalne archiwum (np. grup z
     hierarchii pl.comp), to wystarczy jeli dopiszemy do pliku
     /etc/news/newsfeeds:


       ----- ciach -----
       source-archive:!*,pl.comp.*\
         :Tc,Wn\
         :/usr/bin/archive -i /var/spool/news/archive/INDEX
       ----- ciach -----

  Archiwum to moemy czyta uywajc tin'a, np.:


       export TIN_SPOOLDIR=/var/spool/news/archive
       export TIN_LIBDIR=/var/lib/news
       tin




  14.
     Jeli mamy ju wczeniej cignite pliki z postami, to moemy
     sprbowa przenie te zasoby do inn'a, np. komend:


       ----- ciach -----
       (for i in [0-9]*; do cat $i; echo .; done) \
         | filter2rnews | rnews -N -vvv -S localhost
       ----- ciach -----




  wykonywan po kolei w kadym katalogu (z postami).







  33..  IInnnnee ddookkuummeennttyy zzwwiizzaannee zz tteemmaatteemm



    Dokumentacja dostarczana z pakietem (cz moe by dostpna tylko
     z pakietem ze rdami),

    INN FAQ <ftp://ftp.xlink.net/pub/news/docs/>,

    Newsy w Polsce <http://www.usenet.pl>,

    Newsy na wiecie <http://www.usenet.org>,

    Pakiet
     <http://home.pages.de/~lamepage/linux/news/sp4si-0.96.tar.gz>
     zaatwiajcy modemowcom spraw "inn+suck z kilku serwerw" tak, e
     prociej nie mona,

    Pakiet <http://www.media-com.com.pl/~radecki> umoliwiajcy
     ciganie skompresowanych paczek newsw przez WWW.







  44..  DDoo zzrroobbiieenniiaa



    Transport newsw po UUCP.



  55..  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  Rafaa Czecztki
  <mailto:michu@amg.gda.pl>.  Dokument ten jest rozpowszechniany na
  podstawie GPL (Gnu Public License). Aby otrzyma kopi tej licencji
  napisz do Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA
  02139, USA.

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























































