Chapter 19
Newsreader Configuration


D.M.Z CONTENT PRE NEXT

19.1 tin Configuration
19.2 trn Configuration
19.3 nn Configuration

newsreader는, 유저들이 아티클을 포스팅하고, 편안하게 뉴스그룹의 내용을 훑어보는 등, 뉴스 시스템의 기능에 쉽게 억세스하도록 하는 기능을 제공하기 위한 것이다. 이 인터페이스의 질적인 면은 끊임없는 논쟁거리이다.

몇가지 newsreader 들이 리눅스로 포팅되어있어 사용할 수 있다. 아래에서 우리는 가장 대중적인 세가지, 즉 tin, trn, nn의 기본적인 셋업에 대해 적고자 한다.

가장 효과적인 newsreader의 하나는

     $ find /var/spool/news -name '[0-9]*' -erxec cat {} \; | more

이것은 뉴스를 읽ㅡ는 UN*X die-hards(국수주의)적인 방법이다.

그러나 newsreader의 주종은 보다 훨씬 복잡하다. 그것들은 보통 풀 스크린의 인터페이스에, 유저가 subscribe한 모든 그룹을 표시하고, 한 그룹내의 모든 아티클을 개관하는데 별도의 레벨을 제공한다.

답장은 보통 오리지널 아티클의 주제앞에 "Re: "를 붙인다. 부차적으로, 그것이 follow-up되는 아티클의 메시지 id가 Reference: 헤더라인내에 주어진다. 이들 두 기준에의해 아티클을 정렬하게되면 threads라 불리는 작은 아티클의 클러스터(사실상, 트리이다)가 생성된다. newsreader를 쓰는데 있어 고려할 것 중 하나는 효율적인 threading 체계를 고안해 내는 것으로, 이것에 필요한 시간이 아티클 수에 비례하기 때문이다.

여기서 우리는 어떻게 유저 인터페이스를 만드는지에 대해 더 이상 파고들지 않을 것이다. 리눅스에서 현재 사용가능한 모든 newsreader들은 좋은 help(도움말) 기능을 갖고 있으므로, 당신은 그저 따라하기만 하면 된다.

다음에서 우리는 오직 관리적인 임무에 대해서만 다룰 것이다. 이들 대부분은 thread 데이터베이스의 생성과 계산(accounting)에 관한 것이다.


19.1 tin Configuration

threading에관해 가장 다재다능한 newsreader는 tin이다. 그것은 Iain Lea가 tass라는 이전 newsreader의 모델을 약간의 기초로하여 만든 것이다. 그것은 유저가 뉴스그룹에 들어갔을때 threading을 함으로써, NNTP로 이를 수행하지 않을경우에도 꽤 빠른 속도를 보인다.

486DX50에서, 그것은 디스크에서 직접읽을때 1000개의 아티클을 thread하는데 대략 30초를 소요한다. NNTP를 통해 뉴스서버를 로딩할 때, 이는 5분 이상이 될 것이다. 당신은 정기적으로 -u 옵션을 주어 index 파일을 업데이트 하거나, tin-U 옵션을 주어 실행시킴으로써 이를 향상시킬 수도 있다.

보통, tin은 그것의 데이터베이스를 유저의 홈 디렉토리내의 .tin/index 아래에 담아둔다. 그러나 이는 리소스의 관점에선 비효율적인 것이므로, 당신은 그것의 싱글카피를 중앙지역에 보존하고자 할 것이다. 이는 tinnews 또는 특권이 전혀 없는 어떤 계정으로 setuid함으로써 할 수 있다. 그러게되면, tin은 모든 thread 데이터베이스를 /var/spool/news/.index 아래에 둘 것이다. 어떠한 파일 억세스나 쉘 escape를 위해선, tin은 유효한 uid를 그것을 실행한 유저의 실제 uid로 리셋할 것이다.

보다 나은 해결책으로, 정기적으로 index 파일들을 업데이트해주는 tind indexing 데몬을 인스톨하는 방법이 있다. 그러나 이 데몬은 리눅스의 어떠한 릴리즈에도 포함되어있지 않으므로, 당신 스스로 컴파일해야 할 것이다. 만약 LAN 상에 중앙 뉴스서버를 운영하고 있다면, tind를 서버에 돌리고 모든 클라이언트들이 NNTP로 그 index파일을 얻어가게하는 것도 가능하다. 물론, 이는 NNTP의 확장을 필요로한다. 이러한 확장성을 수행하는 nntpd 패치들은 tin 소스에 들어있다.

몇몇 리눅스 배포판내에 포함된 tin의 버전은, NNTP지원이 컴파일되어 들어가 있지 않으나, 이제 대부분이 그것을 지원한다. rtin으로 실행하거나 -r옵션을 주면, tin/etc/nntpserver 내에 또는 NNTPSERVER 환경변수에 지정된 NNTP 서버로 접속을 시도한다. nntpserver파일은 단순히 서버의 이름이 들어간다.


19.2 trn Configuration

trn은 오래된 newsreader인 rn(read news를 의미한다)을 계승한 것으로, 그것의 이름에 있는 "t"는 "thread"를 의미한다. 이것은 Wayne Davison이 만든 것이다.

tin과는 달리 trn은 런타임에 그것의 threading 데이터베이스를 생성하는데 대한 대책이 없다. 대신 그것은 mthreads라는 프로그램을 정기적으로 cron에서 소환하여 index파일을 업데이트함으로써 미리 준비해 놓은 것을 사용한다.

mthreads를 실행하지 않는것이, 당신이 새 아티클에 억세스할 수 없다는 것을 의미하진 않는다. 단지 "Novell buys out Linux!!"라는 아티클의 thread가 당신의 선택메뉴의 이곳저곳에 흩어져 있을 것이라는 의미이다.

특정 newsgroup들에 대한 threading을 생성하기 위해선, 커맨드라인에서 mthreads 뒤에 newsgroup의 목록을 주어 실행하면된다. 그 목록은 sys 파일내에적는 것과 같은 형식으로 적는다.

     mthreads comp,rec,!rec.games.go

이것은 rec.games.go를 제외한 (바둑을 즐기는 사람은 장식적인 thread를 필요로하지 않는다) comprec의 모두에대해 threading을 켜둔다. 이후, 그것이 새로 도착하는 아티클을 thread하게 하기위해선 단순히 그것을 옵션없이 실행시키면 된다. 당신의 active파일내의 모든 그룹의 threading은 mthreadsall의 리스트를 줌으로써 켤 수 있다.

만약 단신이 밤 사이에 뉴스를 수신한다면, 습관적으로 아침에 mthreads를 돌릴 것이나, 필요하다면 그 보다 더 자주 돌릴 수도 있다. 매우 많은 전송량을 가진 사이트에선 mthreads를 데몬모드로 돌릴 것이다. 부팅시에 -d옵션을 사용하여 구동시키면 그것은 자신을 background데 집어넣고, 새로 도착한 아티클이 있는지 10분마다 체크한다. mthread를 데몬모드로 돌리려면 다음의 라인을 rc.news 스크립트에 집어넣자.

     /usr/local/bin/rn/mthreads -deav
	

-a 옵션은 mthreads가 새 그룹에대해 threading을 자동으로 수행하게 만든다. -vmthreads 로크파일에 장황한 로그 메시지를 남기게 한다. 그 로그파일, mt.log는 당신이 trn을 인스톨한 디렉토리내에 있다.

더 이상 유효하지 않은 오래된 아티클은 반드시 index 파일에서 제거되어야 한다. 디폴트로, 최저선 이하의 번호를 가진 아티클만이 제거된다. 이 번호 이상임에도 expire된 아티클들은 (왜냐하면 가장 오래된 아티클들은 Expire: 헤더필드에 긴 expiry 일자가 지정되어 있기 때문이다) mthreads-e 옵션을 주어 강제로 "enhanced" expiry run함으로써 제거될 수 있다. mthreads가 데몬으로 돌고 있을때, -e 옵션은 그러한 enhanced expiry run을 하루에 한번, 자정 이후에 짧게 하도록 만든다.


19.3 nn Configuration

Kim F. Storm이 만든 nn은 newsreader의 최종 목표가 뉴스를 읽는 것이 아니라고 주장한다. 그것의 이름은 "No News"의 약어이고, 모토는 "No news is good news, nn is better"이다.

이러한 야심찬 목표를 이루기 위해, nn엔 많은 종류의 관리용 툴이 딸려 있는데, 이들은 thread의 생성뿐 아니라, 이들 데이터 베이스의 일관성과 계산(accounting), 사용 통계의 수정, 그리고 억세스 제한에 대해 추가적인 체크를 하도록 한다. nnadmin이라는 관리 프로그램은, 이러한 작업을 인터랙티브하게 수행하게 한다. 그것은 매우 직관적이므로, 이러한 면에 대해서 파고들진 않고, 단지 index 파일의 생성에 대해서만 다룰 것이다.

nn thread 데이터베이스 매니저는 nnmaster라 불리는 것으로, 보통 rc.newsrc.inet2 스크립트에서 구동되어 데몬으로 실행된다. 다음처름 실행하라.

     /usr/local/lib/nn/nnmaster -l -r -C

이것은 당신의 active 파일내에 있는 모든 뉴스 그룹에대해 threading을 사용가능케 한다.

마찬가지로, cron에서 동작을 수행할 그룹의 리스트를 주어, 주기적으로 nnmaster를 실행할 수도 있다. 이는 sys 파일내의 subscription 리스트와 아주 유사하나, 쉼표대신 괄호를 사용한다는 점이 다르다. 모든 그룹을 지정하기위해서 실제 그룹 네임이 아닌 all을 쓰는 대신 ""의 빈 인자를 쓴다. 사용례는,

     # /usr/local/lib/nn/nnmaster !rec.games.go rec comp

주의할 것은 여기에 순서가 인식된다는 것이다. 가장 왼쪽의 그룹지정이 언제나 일치됨에 있어 우선권을 가진다. 다시말해, 당신이 !rec.games.gorec 뒤에 집어넣었다면, !rec.games.go는 무시되고 그룹내의 모든 아티클이 thread된다.

nn은 expire된 아티클을 그것의 데이터베이스에서 제거하는데 몇가지 방법을 제공한다. 첫번째는 뉴스 그룹 디렉토리들을 스캐닝하여 데이터베이스를 업데이트하고 더이상 유효하지 않은 아티클에 상응하는 엔트리를 파기하는 것이다. 이것은 nnmaster-E옵션을 주고 실행하면 디폴트로 수행하는 작업이다. 그것은 NNTP로 이를 실행하지 않을 경우에도 꽤 빠르다.

두번째 방법은 mthreads의 디폴트 expiry run과 같이 단지 active파일내의 최저선 아래의 번호를 가진 아티클을 가리키는 엔트리들만을 제거한다. 그것은 -e 옵션으로 켤 수 있다.

마지막으로, 세번째는 전체 데이터베이스를 파기하고 다시 모든 아티클들을 재수집하는 것이다. 이는 nnmaster-E3를 주어 켤 수 있다.

expire되는 그룹의 리스트는 위와 같은 모습으로 -F 옵션에 의해 주어진다. 그러나 nnmaster를 데몬모드로 돌렸다면, expiry가 일어나기 전에 반드시 (-k를 써서) 그것을 죽여(kill)주고, 이 후 원래 옵션으로 재 구동해 주어야 한다. 첫번째 방법을 사용하여 모든 그룹에 expire를 돌리는 커맨드는:

     # nnmaster -kF ""
     # nnmaster -lrC

nn의 동작을 조절하는데 사용될 수 있는 플래그는 보다 많이 있다. 만약 당신이 부적당한 아티클을 제거하거나, 아티클 다이제스트들을 다이제스트화(digestfy)하는 것을 고려한다면, nnmaster 매뉴얼 페이지를 읽어보기 바란다.

nnmaster/usr/local/lib/nn내에 위치한 GROUPS이라는 파일에 의존한다. 만약 그것이 초기에 존재하지 않을 경우엔 새로 생성된다. 각 뉴스 그룹에 대해, 그것은 그룹의 이름으로 시작하고, 뒤에 선택적으로 time stamp와 플래그가 붙는 하나의 라인을 가진다. 문제의 그룹에 대한 특정 동작을 실행하게 하기 위해 이들 플래그를 수정할 수는 있으나, 그룹이 나열된 순서는 변형하지 말기 바란다. 허용된 플래그와 그것들의 역할은 nnmaster 매뉴얼 페이지 내에 역시나 나열되어 있다.

Other Chapters

1. Introduction to Networking
2. Issues of TCP/IP Networking
3. Configuring the Networking Hardware
4. Setting up the Serial Hardware
5. Configuring TCP/IP Networking
6. Nake Service and Resolver Configuration
7. Serial Line IP
8. The Point-to-Point Protocol
9. Various Network Applications
10. The Network Information System
11. The Network File System
12. Managing Taylor UUCP
13. Electronic Mail
14. Getting smail Up and Running
15. Sendmail+IDA
16. Netnews
17. C News
18. A Description of NNTP
19. Newsreader Configuration

Appendix

A. A Null Printer Cable for PLIP
B. Sample smail Configuration Files
C. The GNU General Public License