INN+SUCK pl


inn+suck - instalacja. RafaÅ‚ Czeczótka 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() { 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; $_ = ; 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 , · Newsy w Polsce , · Newsy na Å›wiecie , · Pakiet zaÅ‚atwiajÄ…cy modemowcom sprawÄ™ "inn+suck z kilku serwerów" tak, że proÅ›ciej nie można, · Pakiet 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 . 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.

Wyszukiwarka

Podobne podstrony:
INN SUCK pl (3)
inn suck pl 1
inn suck pl 3
inn suck pl 5
INN SUCK pl (2)
inn suck pl
inn suck pl 3
inn suck pl 2
inn suck pl 2
INN SUCK pl 2
inn suck pl 1
TI 99 08 19 B M pl(1)
bootdisk howto pl 8
BORODO STRESZCZENIE antastic pl
notatek pl sily wewnetrzne i odksztalcenia w stanie granicznym
WSM 10 52 pl(1)

więcej podobnych podstron