inn+suck - instalacja.

Rafał Czeczótka, michu@amg.gda.pl

v1.00, 20 Września 1998


Wszelkie sugestie i poprawki są mile widziane i należy je wysyłać pod adres michu@amg.gda.pl. Oryginał tego dokumentu możesz znaleźć pod adresem www.amg.gda.pl/~michu/uploads/. Dokument ten został napisany w standardzie ISO-8859-2.

1. Wstęp.

1.1 Przedmowa.

Całą treść tego dokumentu stanowi opis mojej instalacji duetu suck+inn w systemie RedHat5.1, w oparciu o konkretne pakiety (inn-1.7.2-13 i suck-3.9.4-2). Impulsem do napisania tego opisu były moje początkowo nieudane próby instalacji oraz nikły odzew jaki wywołały moje posty na grupie pl.comp.os.linux (pewnie jak zwykle moje zapytania zaginęły gdzieś w potoku informacji i zapytań jaki dociera tu codziennie). "Kreśląc" te parę słow mam nadzieję, że moje marne doświadczenia z tymi pakietami będą dla kogoś pomocne. 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 minimalnej, działającej konfiguracji będzie dla kogoś przydatny.

W tym dokumencie w paru miejscach porównuję inn'a do leafnode'a, którego wcześniej używałem.

1.2 Podziękowania.

Za pomoc w powstaniu tego teksu dziękuję:

2. Słowo o programach, instalacja i konfiguracja.

2.1 Co to jest inn i suck.

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ąć).

2.2 Kiedy instalować inn+suck.

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 jest "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ą, ...),

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.5a-1),
  2. inn (np. inn-1.7.2-13, UWAGA: oryginalny pakiet z dystrybucji RH5.1 jest niepoprawny),
  3. perl-MD5 (np. perl-MD5-1.7-2),
  4. suck (np. suck-3.9.4-2).

Ja skorzystałem z adresów jak poniżej:

2.3 Wady i zalety tego rozwiązania.

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. Instalując ten serwer jesteś "wśród najlepszych" (większość dużych serwerów news działa właśnie na inn'ie),
  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ę).

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ść:

2.4 Instalacja i konfiguracja.

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),
  2. W pliku "/etc/news/innfeed.conf" usunąć sekcję peers,
  3. W pliku "/etc/news/newsfeeds" dodać własną sekcję z feeds, np.:
    ----- ciach -----
    ...
    news.task.gda.pl\
            :!junk,!test,!to\
            :Tf,Wnm:
    ...
    ----- ciach -----
    
    gdzie news.task.gda.pl to nazwa mojego serwera news, oraz do definicji dystrybucji akceptowanych przez nasz serwer dodać polską:
    ----- ciach -----
    ...
    ME\
        :*,@alt.binaries.warez.*,!junk,!control*,!local*,!foo.*\
        /pl,world,usa,na,gnu,bionet,pubnet,u3b,eunet,vmsnet,inet,ddn,k12\
        ::
    ##   ^^ - to jest to pl
    ...
    ----- ciach -----
    
  4. W pliku "/usr/lib/suck/get.news.innxmit" wstawić nazwę serwera news (REMOTE_HOST=news.task.gda.pl) oraz "sajtu" (tego samego co w punkcie 3., tj. SITE=news.task.gda.pl),
  5. W suck'u w pliku "/usr/lib/suck/sucknewsrc" zapisać wszystkie interesujące nas grupy i numery postów, od których ma się zacząć "ściąganie", np.:
    ----- ciach -----
    ...
    pl.comp.ogonki 1
    pl.comp.os.linux 1
    ...
    ----- ciach -----
    
    UWAGA!!! Zaczynając od pierwszego postu jesteśmy narażeni na ściąganie dużej ilości danych a co się z tym wiąże znaczne koszty (a i tak w końcu zapewne okaże się, że większość postów jest za starych i zostanie odrzucona przez inn'a). Lepiej więc nie zaczynać od początku ale od kilku(set) postów wstecz (u mnie 57 grup (w całości) z dostępem online (ethernet "wpięty do" TASKu, transfer osiągał 160KB/sec (ale to było bardziej ograniczenie zdalnego serwera niż łącza)) ściągało się godzinę),
  6. Usunąć pliki "/etc/cron.daily/inn-cron-rnews" oraz "/etc/cron.hourly/inn-cron-nntpsend" (to dla nas robi suck).
  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<@@formula>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, ktore podales w pliku
    # /usr/lib/suck/sucknewsrc - konfiguracyjnym dla suck-a.
    # UWAGA !!!
    # Wymagany format tego pliku to:
    ############################
    # nazwa.grupy numer.artykulu
    ############################
    #
    # Mozesz podac inna lokalizacje
    SUCK_FILE=/usr/lib/suck/sucknewsrc
    #
    # Podaj sciezke do programu ctlinnd. Skrypt sprobuje sam zgadnac, ale
    # lepiej podaj jak wiesz.
    CTLINND=`which ctlinnd`
    
    cat ${SUCK_FILE} | while read ln; do
            set -e $ln >/dev/null
            ${CTLINND} newgroup $1
            if [ $? -eq 1 ]; then
                    echo Blad podczas zakladania grupy $1 !!!
                    exit
            fi
    done
    ----- ciach -----
    
  9. Jeśli nie chcemy ściągać grup "control", "junk", "test" ani "to", musimy stworzyć plik "/usr/lib/suck/active-ignore":
    ----- ciach -----
    control
    junk
    test
    to
    ----- ciach -----
    
    Oczywiście wówczas grupy te trzeba wyrzucić z "/usr/lib/suck/sucknewsrc".
  10. Wymianę newsów ze zdalnym serwerem robimy skryptem "/usr/lib/suck/get.news.innxmit".

2.5 Uwagi i kruczki.

  1. Usuwanie grup odbywa się przez "ctlinnd rmgroup nazwa.grupy" (suck już sam usunie taką grupę z pliku sucknewsrc), UWAGA!!! Nie usuwać grup "control", "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 -----
    
  3. Dane o przeterminowaniach 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. Wyłączenie odrzucania artykułów przez innd (już to przecież robi suck) dokonuje się komendą "ctlinnd perl n".
  5. 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".
  6. Jeśli podczas ściągania newsów pojawi się komunikat "GROUP command not recognized, try the -M option" oczywiście dodaj w pliku "/usr/lib/suck/get.news.innxmit" opcję "-M" do wywołania suck'a.

3. Prawa autorskie/legalność.

Prawa autorskie należą do (C) Rafała Czeczótki michu@amg.gda.pl. Dokument ten jest rozpowszechniany na podstawie GPL (Gnu Public License).

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.