Sophie

Sophie

distrib > Mandriva > 9.1 > i586 > by-pkgid > 214a7a0a5436a15cb6309d788db691fe > files > 53

howto-text-pl-9.0-1mdk.noarch.rpm

  inn+suck - instalacja.
  Rafa³ Czeczótka <mailto:michu@amg.gda.pl>
  v4.11, 18 sierpieñ 2000

  Tekst ten opisuje procedurê instalacji lokalnego serwera news (inn),
  sposób wymiany postów (suck) oraz metodê kompresji newsów w drodze
  (ssh). Orygina³ tego dokumentu mo¿na znale¼æ na stronie
  www.amg.gda.pl/~michu/linux.html.  Zosta³o u¿yte kodowanie ISO-8859-2.
  ______________________________________________________________________

  Spis tre¶ci


  1. Wstêp

     1.1 Przedmowa
     1.2 Podziêkowania

  2. S³owo 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 rozwi±zania
     2.4 Podstawowa instalacja i konfiguracja
     2.5 Kompresja newsów w drodze
     2.6 CNFS
        2.6.1 Krótka chrakterystyka CNFS
        2.6.2 Instalacja i konfiguracja CNFS
        2.6.3 Podstawowe ró¿nice
     2.7 Grupy moderowane
     2.8 Uwagi i kruczki
        2.8.1 Je¶li co¶ mo¿e pój¶æ ¼le, to z pewno¶ci± pójdzie
        2.8.2 Inn na co dzieñ, czyli rzeczy o których warto wiedzieæ

  3. Inne dokumenty zwi±zane z tematem

  4. Do zrobienia

  5. Prawa autorskie/legalno¶æ



  ______________________________________________________________________

  11..  WWssttêêpp






  11..11..  PPrrzzeeddmmoowwaa


  Impulsem do napisania tego tekstu by³y moje pocz±tkowo nieudane próby
  instalacji oraz nik³y odzew na moje posty na grupie pl.comp.os.linux
  (pewnie jak zwykle moje zapytania zaginê³y gdzie¶ w potoku informacji
  i zapytañ docieraj±cych tu codziennie). Nie mam zamiaru pretendowaæ do
  miana fachowca od konfiguracji serwerów news (po prostu u mnie ju¿ to
  dzia³a), tym nie mniej mam nadziejê, ¿e opis dzia³aj±cej konfiguracji
  bêdzie 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.
  Je¶li dysponujesz inn± wersj± systemu i/lub pakietów to mog± wystêpiæ
  pewne ró¿nice w konfiguracji, mniemam jednak, ¿e nie powinno to
  stanowiæ najmniejszego problemu ju¿ dla ¶rednio zaawansowanego
  mi³o¶nika Linux'a.

  Wszelkie sugestie i poprawki s± mile widziane i nale¿y je wysy³aæ pod
  adres michu@amg.gda.pl.  Jestem skory do pomocy, proszê jednak o
  uszanowanie mojego czasu i nie wysy³anie mi listów o lakonicznej
  tre¶ci typu "_n_i_e _d_z_i_a_³_a _m_i_, _C_O _R_O_B_I_Æ_?_?_?" czy magabajtowych za³±czników
  z konfiguracj±.  Je¶li widzisz, ¿e nic Ci nie wychodzi, to sprawd¼ czy
  wykona³e¶ dok³adnie wszystkie kroki (z dok³adno¶ci± do ró¿nych wersji
  pakietów/dystrybucji). Je¶li po paru podej¶ciach nadal masz powa¿ne
  problemy, to lepiej na razie sobie odpu¶æ i spróbuj ponownie za jaki¶
  czas.

  W tym dokumencie w paru miejscach porównujê inn'a do leafnode'a,
  którego wcze¶niej u¿ywa³em.





  11..22..  PPooddzziiêêkkoowwaanniiaa


  Nastêpuj±cy ludzie przyczynili siê do powstania tego dokumentu, tak±
  czy inn± drog±, ¶wiadomie lub nie¶wiadomie (w kolejno¶ci
  alfabetycznej):

  ·  Ariadna - wyjecha³a s³u¿bowo na dwa tygodnie, dziêki czemu mog³em
     m.in. spokojnie sp³odziæ ten dokument ;-) oraz po powrocie
     poprawi³a wiele literówek (kobiety bywaj± czasem przydatne :-)

  ·  Andrzej Radecki (radecki@posejdon.wpk.p.lodz.pl) - poda³ sposób
     czytania lokalnego archiwum,

  ·  Bartosz Maruszewski z JTZ (B.Maruszewski@jtz.org.pl) - nades³a³
     do³±czony 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 Czerwiñski (klik@rubikon.net.pl) - poda³ rozwi±zanie
     likwiduj±ce problem odsy³ania postów,

  ·  Jakub Bogusz (qboosh@priv6.onet.pl) - poda³ jeszcze jeden sposób, w
     jaki mo¿na rozwi±zaæ problem odsy³ania postów,

  ·  Krzysztof Zietara (tarhim@studio.net.pl) - rozwi±za³ problem ze
     ¶ci±ganiem (a raczej jak ich nie ¶ci±gaæ) grup control,
     control.cancel, junk, test i to oraz nades³a³ inne uwagi,

  ·  Maciej Miechowicz (miechus@aurora.put.poznan.pl) - dokona³
     prze³o¿enia niniejszego tekstu na jêzyk angielski,

  ·  Marcin Kasperski (Marcin.Kasperski@softax.com.pl) - doda³ parê uwag
     dotycz±cych instalacji na Debian'ie, wymiany postów z wieloma
     serwerami oraz podes³a³ ca³± sekcjê na temat grup moderowanych,

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

  ·  Micha³ Tyra³a (kbns@zeus.polsl.gliwice.pl) - pomóg³ w rozwi±zaniu
     problemów z wpuszczaniem postów do inn'a przy transferze z
     kompresj± oraz nades³a³ odpowiedni skrypt,

  ·  Rados³aw Gancarz (feanor@zeus.polsl.gliwice.pl) - rozwi±za³
     problemy z odrzucaniem niektórych postów (zmiany w newsfeeds),

  ·  Tomasz Sienicki (tsca@cryogen.com) - poda³ ciekawego URL'a
     zwi±zanego z tematem,

  ·  Tomasz Szymczak (szymczak@bg.univ.gda.pl) - poda³ sugestiê
     dotycz±c± opcji -M w suck'u,

  ·  Inni, nie wymienieni z nazwiska, zwrócili uwagê na parê drobnych
     niedomówieñ, niedoci±gniêæ, potkniêæ i nie¶cis³o¶ci.







  22..  SS³³oowwoo oo pprrooggrraammaacchh,, iinnssttaallaaccjjaa ii kkoonnffiigguurraaccjjaa






  22..11..  CCoo ttoo jjeesstt iinnnn ii ssuucckk


  Inn jest to "InterNetNews daemon" czyli program umo¿liwiaj±cy wielu
  u¿ytkownikom korzystanie z zasobów news.

  Suck jest to zasysacz newsów; po¶redniczy on w wymianie newsów
  pomiêdzy dwoma serwerami: naszym i zdalnym (emuluj±c zachowanie
  normalnego czytnika; protokó³ wymiany postów pomiêdzy serwerami
  (wbudowany w inn'a) odbywa siê na trochê innej zasadzie i wymaga
  specjalnej konfiguracji po obu stronach, czego chcemy unikn±æ).





  22..22..  KKiieeddyy iinnssttaalloowwaaææ iinnnn++ssuucckk


  Je¶li uwa¿asz, ¿e spe³nione s± poni¿sze warunki:

  1. Nudzi Ci siê i potrzebujesz jakiej¶ odmiany (warunek konieczny, bo
     przecie¿ tak naprawdê je¶li potrzebujesz lokalnego serwera newsów,
     to z pewno¶ci± wystarczy Ci du¿o prostszy w konfiguracji i u¿ywaniu
     leafnode, poza tym ten eksperyment mo¿e Ciê kosztowaæ sporo czasu i
     nadszarpniêtych nerwów),

  2. Z newsów na twoim komputerze korzysta wiêcej ni¿ jeden u¿ytkownik
     (bo dla jednego usera zupe³nie wystarczaj±ce s± rozwi±zania typu
     rtin -SQ) ewentualnie "twój" komputer s³u¿y jako serwer news dla
     ca³ej sieci (np. w firmie),

  3. Mo¿liwo¶ci leafnode'a ju¿ Ci nie wystarczaj± (potrzebujesz
     killfile'i, ró¿nych ograniczeñ na ¶ci±gan± pocztê newsow±, ...),

  4. ¦ci±ganie newsów trwa u Ciebie zbyt d³ugo i potrzebujesz ich
     kompresji,

     to znaczy, ¿e powiniene¶ zainstalowaæ duet inn+suck.

  Je¶li ju¿ bêdziesz chcia³ zainstalowaæ to oprogramowanie, to bêd± Ci
  potrzebne nastêpuj±ce (lub inne wersje) pakiety:


  1. cleanfeed (np. cleanfeed-0.95.7b-7, wymagany tylko w RedHat, aby
     spe³niæ zale¿no¶ci 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).





  22..33..  WWaaddyy ii zzaalleettyy tteeggoo rroozzwwii±±zzaanniiaa


  Zalety inn+suck:

  1. Szybki (piekielnie),

  2. Znaczne mo¿liwo¶ci (killfile, ...), choæ tu nale¿y raczej patrzeæ
     na mo¿liwo¶ci suck'a (poniewa¿ dopiero po ¶ci±gniêciu pliki s±
     przesy³ane do inn'a a jak co¶ ju¿ w ca³o¶ci przesz³o przez modem,
     to moim zdaniem niech ju¿ zostanie),

  3. Mo¿na tak skonfigurowaæ inn+suck, ¿e newsy s± ¶ci±gane
     skompresowane, czyli czas transmisji mo¿na skróciæ parokrotnie,

  4. Mo¿na grep'owaæ pliki z zawarto¶ci± grup bez ¿adnych "skutków
     ubocznych" (ta uwaga odnosi siê do du¿o prostszego leafnode'a,
     gdzie czas do expire jest liczony od daty ostatniego dostêpu do
     pliku, wiêc je¶li "to siê zrobi³o", to czas ten oczywi¶cie
     przed³u¿a³ siê),

  5. Instaluj±c ten serwer jeste¶ "w¶ród najlepszych" (wiêkszo¶æ du¿ych
     serwerów news dzia³a w³a¶nie na inn'ie).

  Wady inn+suck:

  1. Do¶æ pogmatwana konfiguracja i hermetyczna dokumentacja
     (przynajmniej na pocz±tek) ale ten dokument powsta³ w³a¶nie aby
     wyeliminowaæ tê niedogodno¶æ,

  2. Pamiêcio¿erno¶æ:

  ·  Proces innd ca³y czas pozostaje w pamiêci (leafnode wywo³ywany jest
     "na ¿±danie"),

  ·  Na dysku zajmuje wiêcej miejsca ni¿ leafnode (choæ jest to do
     przyjêcia).





  22..44..  PPooddssttaawwoowwaa iinnssttaallaaccjjaa ii kkoonnffiigguurraaccjjaa


  UWAGA!!! W zale¿no¶ci od dystrybucji i wersji pakietów wymienione
  poni¿ej pliki konfiguracyjne mog± wystêpowaæ 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 wstêpu, przeciêtny zjadacz
  newsów mo¿ne przekonaæ siê dopiero po parodniowych dociekaniach):
  1. Zainstalowaæ inn i suck (i jeszcze parê wymienionych wcze¶niej
     drobiazgów),
     UWAGA!!! Poniewa¿ inn bardzo ¼le znosi wszelkie zmiany atrybutów
     plików (jest to przyczyna wiêkszo¶ci niepowodzeñ), najlepiej je
     gdzie¶ zapisaæ:


       ----- ciach -----
       ls -ld `rpm -ql inn` > ~/jaki¶_plik_z_atrybutami
       ----- ciach -----




  a wszelkie operacje wykonywaæ jako u¿ytkownik news.

  2. W pliku /etc/news/newsfeeds dodaæ w³asn± 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
     interesuj±ce nas grupy i numery postów, od których ma siê zacz±æ
     "¶ci±ganie", np. aby ¶ci±gn±æ ostatnich 100 postów nale¿y podaæ:


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



  5. Je¶li istniej± pliki /etc/cron.daily/inn-cron-rnews oraz
     /etc/cron.hourly/inn-cron-nntpsend, to nale¿y je usun±æ (ich
     funkcje przejmuje suck),

  6. Je¶li w pliku /etc/news/nnrp.access nie ma wpisu localhost: to
     nale¿y go dodaæ,

  7. Teraz mo¿emy ju¿ wystartowaæ serwer np. poleceniem
     /etc/rc.d/init.d/innd start. Mo¿na/trzeba tak¿e dodaæ odpowiednie
     linki do katalogów /etc/rc.d/rc[0-6].d/ (np. poleceniem ntsysv),

  8. Dodaæ grupy do inn'a. Mo¿na to zrobiæ rêcznie poleceniem ctlinnd
     newgroup nazwa.grupy lub skorzystaæ z poni¿szego skryptu:


       ----- ciach -----
       #!/bin/bash
       #
       # Ten skrypt tworzy automatycznie grupy w inn'ie, które poda³e¶ w pliku
       # /var/lib/suck/sucknewsrc - konfiguracyjnym dla suck-a.
       # UWAGA !!!
       # Wymagany format tego pliku to:
       ############################
       # nazwa.grupy numer.artykulu
       ############################
       #
       # Mo¿esz podaæ inna lokalizacje
       SUCK_FILE=/var/lib/suck/sucknewsrc
       #
       # Podaj ¶cie¿kê do programu ctlinnd. Skrypt spróbuje 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 B³±d podczas zak³adania grupy $1 !!!
                       exit
               fi
       done
       ----- ciach -----




  9. Aby nie ¶ci±gaæ grup control, control.cancel, junk, test ani to (z
     pewno¶ci± nam siê nie przydadz±), musimy stworzyæ plik
     /var/lib/suck/get.news.inn:


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




  Oczywi¶cie grup tych nie nale¿y umieszczaæ w pliku /var/lib/suck/suck­
  newsrc,


  10.
     Wymianê newsów 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 bêdzie to komenda:


       export NNTPSERVER=localhost








  22..55..  KKoommpprreessjjaa nneewwssóóww ww ddrrooddzzee


  Poniewa¿ newsy s± danymi tekstowymi, wiêc ich kompresja zdecydowanie
  skraca czas transmisji, dziêki czemu z pewno¶ci± zaoszczêdzimy trochê
  pieniêdzy kosztem naszego operatora telekomunikacyjnego (pieni±dze te
  mog± byæ wys³ane do autora powy¿szego tekstu, za ewentualne straty
  autor oczywi¶cie nie bierze ¿adnej odpowiedzialno¶ci ;-). Osobi¶cie
  wydaje mi siê, ¿e przedstawione tu rozwi±zanie jest najbardziej
  naturalne i elastyczne. Nie oznacza to oczywi¶cie, ¿e nie mo¿na tego
  zrobiæ lepiej. Podczas eksperymentów okaza³o siê tak¿e, ¿e zwyk³e
  tunelowanie komunikacji w skompresowanym kanale ssh nie daje
  oczekiwanych rezultatów, st±d wyniknê³a potrzeba wywo³ania suck'a na
  zdalnym komputerze (po prostu komunikacja pomiêdzy komputerami jest na
  tyle du¿a, ¿e po uwzglêdnieniu opó¼nieñ wystêpuj±cych w trakcie
  transferu, niemal ca³kowicie niweczony jest efekt zmniejszonej
  objêto¶ci danych).

  Opisuj±c poni¿sze rozwi±zanie zak³adam, ¿e masz ju¿ poprawnie
  zainstalowane i skonfigurowane pakiety inn+suck. Aby z niego korzystaæ
  niezbêdne nam tak¿e bêd±:

  1. na domowym komputerze musi byæ zainstalowny klient ssh,

  2. musimy mieæ dostêp do konta na zdalny komputerze z zainstalowanym
     systemem Unix'opodobnym, pod³±czony w miarê szybkim ³±czem sta³ym
     do internetu, z zainstalowanym suck'iem oraz uruchomionym demonem
     ssh.

  Ca³a przedstawiona poni¿ej idea opiera siê na mo¿liwo¶ci uruchomienia
  suck'a na zdalnym komputerze tak, aby wiadomo¶ci by³y wysy³ane w
  postaci strumienia danych, który jest przesy³any w skompresowanym
  kanale ssh (opcja -C). Dopiero pó¼niej, lokalnie, za pomoc± skryptu
  filter2rnews, strumieñ ten jest dzielony na poszczególne wiadomo¶ci,
  które 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ê s³u¿±c± do
     ¶ci±gania wiadomo¶ci, 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 -----




  Oczywi¶cie nale¿y pamiêtaæ o w³a¶ciwym 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/ (je¶li nie jest tam zainstalowany suck, a tamta maszyna
     ma tak± sam± architekturê jak nasza, to mo¿emy skopiowaæ tam tak¿e
     program /usr/bin/suck).

  3. Stworzyæ mo¿liwo¶æ logowania siê na zdalnym komputerze za pomoc±
     ssh bez u¿ycia has³a (tylko na podstawie znajomo¶ci klucza RSA):

     a. wygenerowaæ parê kluczy RSA komend± ssh-keygen (w pass phrase
        nie podawaæ has³a),

     b. nastêpnie skopiowaæ plik $HOME/.ssh/identity.pub na zdalny
        komputer do pliku $HOME/.ssh/authorized_keys.

     UWAGA!!! Nale¿y zdawaæ sobie sprawê z tego, ¿e mimo, i¿ takie
     rozwi±zanie jest o wiele bezpieczniejsze od logowania siê za pomoc±
     has³a, to krytyczn± rolê dla bezpieczeñstwa odgrywa tutaj nie ujaw­
     nianie zawarto¶ci pliku $HOME/.ssh/identity, czyli prywatnej po³owy
     klucza. Istnieje tak¿e rozwi±zanie umo¿liwiaj±ce wygenerowanie
     klucza z has³em 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 powy¿szych kroków mo¿emy 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 u¿ytkownika na komputerze serwer.name a
  news.task.gda.pl jest nazw± naszego serwera news. Wiadomo¶ci wysy³amy
  tak jak poprzednio, czyli za pomoc± skryptu
  /var/lib/suck/get.news.inn.

  6. Pomocnym bêdzie uaktualnienie bazy overview (rnews nie robi tego
     automatycznie):


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









  22..66..  CCNNFFSS




  22..66..11..  KKrróóttkkaa cchhrraakktteerryyssttyykkaa CCNNFFSS


  Domy¶lnie inn skonfigurowany jest w taki sposób, ¿e artyku³y
  przechowywane s± w postaci oddzielnych plików, w strukturze katalogów
  odpowiadaj±cej pozycji grupy w hierarchii. Podstawow± zalet± tego
  rozwi±zania jest prostota oraz wynikaj±ca z niej ³atwo¶æ tworzenia
  rozwi±zañ pomocniczych. Jednak taki sposób przechowywania ma co
  najmniej dwie powa¿ne wady. Pierwsz± jest to, ¿e artyku³y
  przechowywane s± z u¿yciem mechanizmów systemu operacyjnego, które to
  nie s± zoptymalizowane do obs³ugi wielu plików o ma³ym rozmiarze,
  konsekwencj± czego jest wolny dostêp i du¿a ilo¶æ zmarnowanego
  miejsca. Drug± wad± jest to, ¿e nigdy nie wiemy, jak du¿o miejsca bêd±
  nam zajmowa³y newsy, co grozi przepe³nieniem partycji.

  Wymienione powy¿ej niedogodno¶ci tradycyjnego przechowywania plików
  eliminuje CNFS (Cyclic News File System). Ten sposób przechowywania
  artyku³ów polega na tym, ¿e zapisywane s± one w pliku o specjalnym
  formacie. Gdy skoñczy siê miejsce, nowe artyku³y automatycznie
  nadpisuj± najstarsze.  Rozwi±zanie takie jest bardzo szybkie i nie
  grozi nam ju¿ przepe³nienie partycji. Jedyn± jego wad± jest to, ¿e
  teraz utrudniony jest "samodzielny" dostêp do pojedynczych artyku³ów.



  22..66..22..  IInnssttaallaaccjjaa ii kkoonnffiigguurraaccjjaa CCNNFFSS


  Aby zainstalowaæ CNFS nale¿y (wszystkie te czynno¶ci oczywi¶cie
  najlepiej wykonaæ jako u¿ytkownik 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 umie¶ciæ 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 artyku³y maj± byæ
     przechowywane w buforze. Poniewa¿ my mamy tylko jeden bufor, gdzie
     powinny znale¼æ siê wszystkie artyku³y, to u nas ten plik bêdzie
     wygl±da³ nastêpuj±co:








  ----- 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 tre¶ci artyku³ów 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 wywo³aniu rpost'a
        parametr -p nazwa_katalogu,

     b. Zamieniæ skrypt put.news na put.news.sm (powinien byæ w
        przyk³adach lub ¼ród³ach),

  7. I mo¿emy zaczynaæ ¶ci±gaæ news'y.



  22..66..33..  PPooddssttaawwoowwee rróó¿¿nniiccee


  Podstawow± ró¿nic± w stosunku do standardowego sposobu przechowywania
  artyku³ów jest to, ¿e nie ma potrzeby ich expirowania, teraz dzieje
  siê to automatycznie, bez naszej pomocy (czasem byæ mo¿e wbrew naszej
  woli ;-).

  Inn± konsekwencj± jest to, ¿e pewne czynno¶ci wykonuje siê w zupe³nie
  inny sposób. Np. do odtworzenia bazy overview nale¿y zamiast komendy
  expireover u¿ywaæ komendy expireindex (baza overview znajduje siê
  teraz w katalogu /var/spool/news/uniover/).  Poniewa¿ nie mamy teraz
  bezpo¶redniego dostêpu do artyku³ów, czasem jest potrzeba wspomo¿enia
  siê komend± makehistory (wiêcej informacji w manualach).







  22..77..  GGrruuppyy mmooddeerroowwaannee


  [ RCz: sekcja napisana w ca³o¶ci przez Marcina Kasperskiego ]

  W normalnej konfiguracji inn+suck grupy moderowane traktowane s± tak
  samo, jak wszystkie pozosta³e: wysy³ane na nie artyku³y trafiaj± od
  razu na lokalne grupy (bez akceptacji moderatora) i s± wysy³ane do
  serwera z którego pobieramy newsy. Dopiero ten serwer przesy³a posty
  do moderatora.

  Sprawia to nastêpuj±ce problemy:

  ·  nie wiemy, czy nasze posty naprawdê trafi³y na grupê, czy nie (tj.
     czy moderator je zaakceptowa³ czy odrzuci³ - i kiedy)

  ·  je¶li wymieniamy suck'iem posty z kilkoma serwerami, mo¿emy podpa¶æ
     moderatorom bo bêdziemy wysy³aæ po kilka razy ten sam list (ka¿dy z
     serwerów sforward'uje post do moderatora)

  ·  czê¶æ grup moderowanych jako¶ nie jest dobrze obs³ugiwana (nie
     uda³o mi siê przez tpnet wys³aæ listu na comp.lang.perl.moderated)

  ·  je¶li z naszego hosta korzysta grupa osób, widz± one grupê inaczej
     ni¿ pozostali, mog± wysy³aæ odpowiedzi zanim moderator zaakceptowa³
     pytanie itp.

  Problemy te mo¿emy rozwi±zaæ konfiguruj±c grupy jako moderowane na
  naszym w³asnym serwerze. Wówczas inn nie bêdzie automatycznie
  umieszcza³ na grupie wysy³anych postów a zamiast tego wy¶le je poczt±
  do moderatora. Zaakceptowane posty "sp³yn±" do nas kiedy¶ tam suck'iem
  - tak jak to siê dzieje normalnie.

  W celu takiej konfiguracji nale¿y (lokalizacje plików poni¿ej
  odpowiadaj± Debianowi):

  1. Tworzymy plik /etc/news/moderators z nastêpuj±c± tre¶ci±:


       # Uniwersalny adres moderatorów grup polskich
       pl.*:%s@usenet.pl
       # Uniwersalny adres moderatorów 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 maskaraduj±cy, nasz
     provider, my sami je¶li jeste¶my wbici).  Najlepiej, je¶li jeste¶my
     w stanie czytaæ pocztê dostawan± przez konto news na tym ho¶cie
     (listy które nie dosz³y) ale nie jest to zdaje siê absolutnie
     konieczne. Przy konfiguracji poczty smarthost najlepiej nadaje siê
     tu adres naszego serwera mailowego.

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

     Uwaga: straci³em dobry dzieñ zgaduj±c czemu moje posty nie dochodz±
     póki na to nie wpad³em - mia³em wcze¶niej jako fromhost pewien
     adres z sieci lokalnej i jaki¶ mailer po drodze wywala³ pocztê do
     kosza - nie przysy³aj±c ¿adnej informacji zwrotnej, bo nie mia³
     jak.

  3. Sprawdzamy dla pewno¶ci, czy jeste¶my w stanie wys³aæ pocztê z
     palca z konta news, przy pomocy sendmail'a na jakie¶ konto w
     internecie (np. na friko), ustawiaj±c jako From news@to-co-
     wpisali¶my-jako-fromhost.

  4. Charakteryzujemy grupy jako moderowane



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




  5. Próbujemy co¶ wys³aæ - najlepiej na grupê z której przychodz±
     powiadomienia o zakolejkowaniu.







  22..88..  UUwwaaggii ii kkrruucczzkkii





  22..88..11..  JJee¶¶llii ccoo¶¶ mmoo¿¿ee ppóójj¶¶ææ ¼¼llee,, ttoo zz ppeewwnnoo¶¶ccii±± ppóójjddzziiee



  1. Bardzo pomocnym programem jest inncheck, który sprawdza poprawno¶æ
     konfiguracji, atrybuty plików oraz wy¶wietla potencjalne ¼ród³a
     problemów. Je¶li co¶ nam nie dzia³a to diagnostykê powinni¶my
     zacz±æ w³a¶nie od uruchomienia tego programu.

  2. W razie problemów nale¿y tak¿e sprawdziæ w³a¶cicieli oraz prawa
     dostêpu do plików z pakietu inn'a (np. z plikiem
     ~/jaki¶_plik_z_atrybutami który czujnie zrobili¶my na pocz±tku
     instalacji).

  3. Je¶li podczas ¶ci±gania newsów pojawi siê komunikat GROUP command
     not recognized, try the -M option oczywi¶cie dodaj w pliku
     /var/lib/suck/get.news.inn opcjê -M do wywo³ania suck'a.

  4. Je¶li wysy³ane przez nas posty nie pojawiaj± siê w naszej kolejce
     wyj¶ciowej (tzn. pliki w katalogu /var/spool/news/outgoing/ s±
     puste), to mo¿e pomóc dodanie wpisu *, w pliku /etc/news/newsfeeds:


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




  5. Je¶li nasz serwer odsy³a z powrotem ¶ci±gniête posty do zdalnego
     serwera, to przyczyn± mo¿e 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æ nale¿y sprawdziæ jaka
     nazwa jest w tym polu (najbardziej z lewej) i zmodyfikowaæ plik
     /etc/news/newsfeeds w nastêpuj±cy sposób:

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




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




  22..88..22..  IInnnn nnaa ccoo ddzziieeññ,, cczzyyllii rrzzeecczzyy oo kkttóórryycchh wwaarrttoo wwiieeddzziieeææ



  1. Usuwanie grup odbywa siê przez ctlinnd rmgroup nazwa.grupy (je¶li
     wywo³ujemy suck'a lokalnie, to on sam usunie tak± grupê z pliku
     sucknewsrc, je¶li zdalnie (patrz kompresja) to musimy to zrobiæ
     rêcznie),
     UWAGA!!! Nie nale¿y usuwaæ grup control, control.cancel, junk, test
     ani to, inn bardzo ¼le to znosi.

  2. Opisy grup mo¿na 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 -----




  Mo¿emy je ¶ci±gn±æ np. komend±


       testhost news.task.gda.pl -d > jaki¶_plik




  (je¶li na serwerze z którego ¶ci±gamy opisy jest du¿o grup (mo¿e byæ
  ich nawet parêdziesi±t tysiêcy), to mo¿e to potrwaæ parê minut).

  3. Dane o przeterminowaniach (nie dotyczy CNFS) s± w pliku
     /etc/news/expire.ctl, usuwanie przeterminowanych postów mo¿na
     wymusiæ uruchamiaj±c skrypt /etc/cron.daily/inn-cron-expire
     (przecie¿ nie ka¿dy ma w³±czony komputer ca³± dobê).

  4. Aby usun±æ limit linii dla postów ¶ci±gniêtych przez inn'a (ju¿ po
     zaakceptowaniu przez suck'a) nale¿y dodaæ w pliku /etc/rc.d/rc.news
     do opcji FLAGS flagê -l0.

  5. Je¶li nie chcemy aby inn odrzuca³ stare posty, powinni¶my zwiêkszyæ
     warto¶æ parametru artcutoff w pliku /etc/news/inn.conf.

  6. Od czasu do czasu mo¿na wyczy¶ciæ skrytkê pocztow± u¿ytkownika news
     np. z konta root'a komend± su - news -c pine.
  7. W pliku /etc/news/inn.conf mo¿emy zmieniæ parametry organization
     (bo napis A poorly-installed InterNetNews site w postach wygl±da
     nieelegancko) oraz ustawiæ pathhost (u³atwia czytanie logów).

  8. Je¶li przy próbie po³±czenia z inn'em pojawia siê komunikat You
     have no permision to talk. Goodbye nale¿y zaktualizowaæ zawarto¶æ
     pliku /etc/news/nnrp.access, np. poni¿ej dodali¶my mo¿liwo¶æ
     dostêpu 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. Je¶li chcemy za³o¿yæ lokaln± (local) hierarchiê, to wystarczy
     za³o¿yæ 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 wêdrowa³y gdzie¶ po ¶wiecie.

  10.
     Je¶li ¶ci±gamy newsy z kilku serwerów, to wystarczy je¶li umie¶cimy
     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.
     Je¶li 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/). Je¶li zdarza
     nam siê u¿ywaæ kilku serwerów, to suck nie bêdzie ponownie ¶ci±ga³
     postów, które ju¿ s± w naszym serwerze.
  12.
     Sprawdzenie kolejki postów wychodz±cych mo¿na dokonaæ poni¿szym
     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.
     Je¶li chcemy aby by³o robione lokalne archiwum (np. grup z
     hierarchii pl.comp), to wystarczy je¶li 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 mo¿emy czytaæ u¿ywaj±c tin'a, np.:


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




  14.
     Je¶li mamy ju¿ wcze¶niej ¶ci±gniête pliki z postami, to mo¿emy
     spróbowaæ 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 ka¿dym katalogu (z postami).







  33..  IInnnnee ddookkuummeennttyy zzwwii±±zzaannee zz tteemmaatteemm



  ·  Dokumentacja dostarczana z pakietem (czê¶æ mo¿e byæ dostêpna tylko
     z pakietem ze ¼ród³ami),

  ·  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>
     za³atwiaj±cy modemowcom sprawê "inn+suck z kilku serwerów" tak, ¿e
     pro¶ciej nie mo¿na,

  ·  Pakiet <http://www.media-com.com.pl/~radecki> umo¿liwiaj±cy
     ¶ci±ganie skompresowanych paczek newsów przez WWW.







  44..  DDoo zzrroobbiieenniiaa



  ·  Transport newsów po UUCP.



  55..  PPrraawwaa aauuttoorrsskkiiee//lleeggaallnnoo¶¶ææ


  Prawa autorskie nale¿± do © Rafa³a Czeczótki
  <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 w³a¶cicieli. Nie ma ¿adnych gwarancji co
  do dok³adno¶ci czy przydatno¶ci informacji zawartych w tym dokumencie.