[Profile] [Emacs] [Software] [Webware] [Home]
[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9. メール・ニュースリーダ

GNU Emacs は単なるエディタ機能だけではなく優秀なメールリーダ、ニュースリー ダ機能をも持っている。Meadow でももちろん UNIX と同様にメールリーダ、ニュー スリーダとして使うことができる。

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.1 GNUS, Gnus, Semi-gnus, ... etc.

GNUS は梅田 政信さんによって作られたニュースリーダである。 Mule2.3/Emacs19.28 には GNUS4.1 が同封されていて、日本語を扱うことのできる Emacs は Mule2.3 であるという時期が長かったので GNUS ユーザは今でも多いようで、 GNUS と言えばこの 梅田GNUS のことであった。

一方、Lars さんによって一から書き直されたものが Gnus で、様々な拡張が行なわれ、 メールリーダの機能も追加された。

したがって GNUS と Gnus は全く別の物であるが、GNUS の持つ先進的なユーザインタ フェースは踏襲されているので見掛け上は似たものとなっている。

Gnusは始めコードネームが付けられ「コードネームversion 0.1」で呼ばれ、ある 程度開発が終わると、Gnus5.x(xは偶数) というバージョン番号が振られる。それ がその後にGNU Emacsに同封される時は、Gnus5.y(yは奇数)というバージョン番号 が振られるようである。

コードネームはアルファベットの逆順になっていて、“梅田GNUS”の“u”から始 まり、現在は Pterodactyl Gnus と呼ばれていて、 次は“o”で始まる予定である。

コードネーム バージョン 最初に収録されたEmacsバージョンとその時のGnusバージョン
u 梅田 GNUS GNUS 3.1 GNUS4.1 Emacs19.7
t ding Gnus Gnus 5.0 Gnus5.1 Emacs19.30
s September Gnus Gnus 5.2 Gnus5.3 Emacs19.32
r Red Gnus Gnus 5.4 Gnus5.5 Emacs20.1
q Quassia Gnus Gnus 5.6 Gnus5.7 Emacs20.4
p Pterodactyl Gnus Gnus 5.8

一方、Semi-gnusプロジェクトは守岡さん の呼びかけにより始まったもので、「GnusでMIME(Multipurpose Internet Mail Extensions)を扱えるように拡張すること」や「Gnusをもっと便利に使うためのさ まざまな拡張」を行なっている。

開発は OpenCVS を使い、コードネームで呼ばれる枝(Semi-gnus, Nana-gnus, Chaos, T-gnus等)ごとにそれぞれ違ったアプローチが行なわれている。これらは anonymous CVSで入手可能で多数の参加メンバーによって動作検証、バグフィック ス、新たな実装提案が行なわれていて、意見交換は主に semi-gnus-ja メーリング リストで行なわれている。semi-gnus-ja メーリングリストは本特集の最後で紹介 しているので興味のある方は参加してほしい。

本特集ではその中の、鈴木 圭一さんがオーナで ある Nana-gnus を取りあげる。 Semi-gnus6.10.12/Gnus 5.6.45 をベースにして 「送信相手によって文字コードを適切に選択する試み」などの拡張が行なわれている。 詳細は Nana-gnus に同封されている Nana-TIPS.ja を参照のこと。

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.2 Nana-gnusのインストール

Nana-gnus はメールやニュースの MIME メッセージの読み書きをするのに以下の APEL、FLIM、SEMI と呼ばれる Emacs lisp モジュールを利用している。

原稿執筆時点の最新のものは以下のURLから入手可能である。 今月の LibCD Vol.xx に収録している。

ftp://ftp.etl.go.jp/pub/mule/semi/apel-9.19.tar.gz
ftp://ftp.etl.go.jp/pub/mule/semi/semi-1.13-for-flim-1.12/flim-1.12.7.tar.gz
ftp://ftp.etl.go.jp/pub/mule/semi/semi-1.13-for-flim-1.12/semi-1.13.4.tar.gz
ftp://ftp.jaist.ac.jp/pub/GNU/elisp/chamonix/gnus/nana-gnus-6_12_18.tar.gz

APEL, FLIM. SEMI, Nana-gnus の順にインストールを行なう。バイトコンパイルす る順番があるのでそれぞれのモジュールのバージョンアップの際にはこの順番で再 インストールする必要がある。そうすればインストールの際の無用のトラブルを避 けることができる。

Meadow1.00 にはあらかじめ APEL, FLIM, SEMI, Semi-gnus が同封されているが、 バージョンが古いので以下のように全て消して再インストールしよう。

del c:\Meadow\1.00\lisp\apel\*
rmdir c:\Meadow\1.00\lisp\apel
del c:\Meadow\site-lisp\mel\*
rmdir c:\Meadow\site-lisp\mel
del c:\Meadow\site-lisp\semi\*
del c:\Meadow\site-lisp\Semi-gnus\*

インストールは、それぞれのモジュールを展開し、通常は make (part 2で解説す る Cygwin に含まれている。)を使って行なうのだが、ここでは make を使わない 方法を解説する。

まず始めにAPELをインストールする。`apel-9.19.tar.gz' を任意の場所で展 開し、展開したディレクトリ apel-9.19 上で以下のコマンドを実行する。

c:/Meadow/1.00/bin/Meadow95.exe -batch -q -no-site-file -l APEL-MK -f compile-apel
c:/Meadow/1.00/bin/Meadow95.exe -batch -q -no-site-file -l APEL-MK -f install-apel c:/Meadow c:/Meadow/site-lisp

次にFLIMも同様にflim-1.12.7.tar.gzを展開し、ディレクトリflim-1.12.7上で以 下のコマンドを実行する。

c:/Meadow/1.00/bin/Meadow95.exe -batch -q -no-site-file -l FLIM-MK -f compile-flim
c:/Meadow/1.00/bin/Meadow95.exe -batch -q -no-site-file -l FLIM-MK -f install-flim c:/Meadow c:/Meadow/site-lisp

SEMIも同様にsemi-1.13.4.tar.gzを展開し、ディレクトリsemi-1.13.4上で、以下 のコマンドを実行する。

c:/Meadow/1.00/bin/Meadow95.exe -batch -q -no-site-file -l SEMI-MK -f compile-semi
c:/Meadow/1.00/bin/Meadow95.exe -batch -q -no-site-file -l SEMI-MK -f install-semi c:/Meadow NONE c:/Meadow/site-lisp

Nana-gnus は nana-gnus-6_12_18.tar.gz を展開し、展開したディレクトリ nana-gnus-6_12_18 の下の lisp ディレクトリで以下のコマンドを実行する。

c:/Meadow/1.00/bin/Meadow95.exe -batch -q -no-site-file -l ./dgnushack.el -f dgnushack-compile

できあがった.elcという拡張子のファイルを c:\Meadow\site-lisp\semi-gnus にコ ピーすればインストールは終了で、それぞれ

c:\Meadow\1.00\site-lisp
c:\Meadow\site-lisp\apel
c:\Meadow\site-lisp\flim
c:\Meadow\site-lisp\semi
c:\Meadow\site-lisp\semi-gnus

にインストールされる。

次に Meadow/site-lisp/subdirs.el を編集する。このファイルは site-lisp にあ るサブディレクトリを load-path ( Emacs Lips をロードするための path の設定 値 ) に追加するための設定ファイルである。

(normal-top-level-add-to-load-path 
 '("apel" "flim" "semi" "semi-gnus"))

以上でインストールはできたので動作は可能であるがドキュメントの整備が不十分 なので、Info のインストールもきちんと行なおう。

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.3 Nana-gnusの日本語infoは必ず読もう。

前述の info の変換方法を参照し、flim-1.12.7/mime-ja.texi 、 semi-1.13.4/mime-ui-ja.texi、nana-gnus-6_12_18/texi/gnus-ja.texi および nana-gnus-6_12_18/texi/message-ja.texi を前述の方法( M-x texinfo-format-buffer)でそれぞれ .info という拡張子の付いたファイルに変換 し、/usr/local/info へ置く。

次に /usr/local/info/dir を編集し、以下のエントリを追加すれば C-h i で Info を読むことができるようになる。「もう既に使っているからわかっている」 と思う人も新たな発見が必ずあるので再読することを勧める。

Message User Agent
* Gnus-ja: (gnus-ja).       The news reader gnus (日本語版).
* Message-ja: (message-ja). Mail and news composition mode that goes with Gnus.
* FLIM-ja: (mime-ja.info).    Internet Message 処理のための基礎 library
* SEMI-ja: (mime-ui-ja.info). MIME user interface を提供する package

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.4 メール取得プログラム(movemail)

メールを POP サーバから取得するプトグラムである movemail は Meadow に同封 (Meadow/1.00/bin/movemail.exe)されているが、いくつかのバグフィックスと APOP 対応がなされている以下の物に差し替えよう。今月のLibCD Vol.xxに収録。

ftp://ftp.nf-system.co.jp/pub/movemail/movemail-19981216.tar.gz

大場さんによる「メール取得状況ダイアログ表示機能」と、 後藤さんによる「APOP対応」の拡張が なされている。

movemail の主なコマンドラインオプションを示す。

-p 進行状況表示、
-u 未読メールのみ転送
-a 全てのメールを転送
-k メールをサーバに残す
-A APOPを使用

★「図10 メール取得ダイアルグ表示」

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.5 Nana-gnusの設定

それでは Nana-gnus を使うための設定を行なっていこう。初期設定ファイルである .emacs に以下のように設定を行なう。

user-full-name にはフルネームの設定、user-mail-address は E-mail のアドレ ス、MAILHOST には POPサーバ名 を、SMTPSERVER には SMTP サーバ名を以下のよ うに設定する。

(setq user-full-name "your full name")
(setq user-mail-address "foo@your domman name")
(setenv "MAILHOST"   "pop server name")
(setenv "SMTPSERVER" "smtp server name")

Gnusでメールを送受信するための設定を行なう。message-send-mail-functionには smtpで送信するための関数を、nnmail-spool-fileはPOPでメールを取得する設定を 行う。fooの部分をPOPアカウント名を設定する。nnmail-movemail-programには movemailを使うことそ指定、nnmail-pop-password-requiredは、POPでメールを取 得する時にパスワード入力を行なう設定である。

(setq message-send-mail-function 'message-send-mail-with-smtp)
(setq nnmail-spool-file            "po:foo"
      nnmail-movemail-program      "movemail"
      nnmail-pop-password-required t)

MOVEMAIL には前述の movemail に与える引数を指定する。

(setenv "MOVEMAIL" "-p")

最後に MIME を扱うモジュールである SEMI のセットアップ設定である。

(load "mime-setup")

以上が、.emacsに設定するものであるが、Gnus では Gnus 用の設定は .gnus に書 くことになっていて、以下のような設定を行なう。

まず、ニュースサーバ(nntpサーバ)の設定を行なう。サーバ名、ドメイン名、組織 名をそれぞれ、gnus-nntp-server、gnus-local-domain、gnus-local-organization に設定する。gnus-select-methodにもサーバ名を設定する。

;;; News
(setq gnus-nntp-server         "nntp server name"
      gnus-local-domain        "your doman name"
      gnus-local-organization  "your Organization name"
      )
(setq gnus-select-method '(nntp "nntp server name"))

次にメールの設定を行なう。メールは“nnml”と呼ばれるバックエンドを使う。 Gnusを起動した時に現われるニュースグループとメールグループを一覧表示するバッ ファをグループバッファと呼んでいて、メールグループは“nnml:”というプレフィ クス付きで表示されて区別される。

;;; nnmlの設定
(setq gnus-secondary-select-methods '((nnml "")))

ニュースとメールで From 行を変えたい場合や、付加的なヘッダを増やしたい場合 には以下のように、メールはmessage-default-mail-headersに、ニュースには message-default-news-headersに設定する。ここでFrom行を設定しなかった場合に は前述のuser-full-nameとuser-mail-addressが使われる。

;;; ヘッダの付加情報
;; mail
(setq message-default-mail-headers
      "From: あなたの なまえ (your full name) \nX-Uri: http://www.foo.ne.jp/~bar/")
;; news
(setq message-default-news-headers
      "From: your full name \nX-Uri: http://www.foo.ne.jp/~bar/")

その他の設定として起動時にトピックモードにするのと、メールや記事に色付けを する設定もしてしまおう。トピックモードは、ニュースやメールグループをトピッ ク(話題)ごとに、好みの種類ごとに分類して表示するモードである。便利な機能な ので是非使おう。

;;; トピックモードにする
(add-hook 'gnus-group-mode-hook 'gnus-topic-mode)

;;; 記事に色づけ (add-hook 'gnus-article-display-hook 'gnus-article-highlight)

メールの自動振り分けは以下のように設定する。 論理和、論理積のリストとして記述する。

;;; mail振り分け (setq nnmail-split-methods 'nnmail-split-fancy nnmail-split-fancy '(| (& ("reply-to" "mule-win32" "Archives/mule-win32") ("reply-to" "mule-win32" "mule-win32") )

;; メーリングリスト ("x-ml-name" "elips" "elips") ("x-ml-name" "GNU-Win32 Mailing List" "gw32-j") ("x-ml-name" "meadow-develop" "meadow-develop") ("reply-to" "meadow-users-jp" "meadow-users-jp") ("x-ml-name" "mew-dist" "mew-dist") ("x-ml-name" "mew-win32" "mew-win32") ("x-ml-name" "tm(ja) / tm ML" "tm-ja")

(any "foo@bar\\.ne\\.jp" "direct")

;; 該当しないもの "misc"))

nnmail-split-fancyには(& ...) の中に列挙したものは複数の該当するフォルダに 格納さて、(| ...)の中は上から最初に該当したフォルダのみに格納するという記 述方式である。

それぞれは、

(ヘッダのフィールド名   該当文字列   フォルダ名)

のように記述する。大文字、小文字は無視される。一番下に misc があるが、これ は何にも該当しなかったものを格納するものであり、グループバッファ上で “nnml:misc”と表示されるグループとなる。ここにはメール振り分けで何のも分 類されなかったメールが格納される。

もしニュースは使わない、メールだけ使うのであればニュースサーバ(nntpサーバ) 関連の設定の必要はなく以下のものだけで良いだろう。

;; nnmlだけ使う。
(setq gnus-select-method '(nnml ""))
(setq gnus-secondary-select-methods nil)

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.6 Nana-gnusの基本操作

M-x gnus で起動する。

始めて起動すると Newsgroup はまだ 講読(subscribe)していないので何も表示さ れず図9のようになっている。モードラインにGroupと表示されていて、これをグルー プバッファと呼ぶ。

★「図11 始めて起動したNana-gnusのグループバッファ」

Newsgroup の subscribe は グループバッファで AA を押下し、しばらく待つと (nntp server にどれぐらいの Newsgroup が存在するかにもよるが、3〜5分程度)、 Newsgroup一覧が表示される。subscribeしたい Newsgroup の上にカーソルを移動 して u で subscribe することができる。図10ではfj.editor.emacs, fj.editor.misc, fj.editor.mule, fj.editor.xemacsをsubscribeした例である。

★「図12 Newsgroupのsubscribe」

g でグループバッファに戻るとそこには講読したい Newsgroup だけが表示 されている。これ以降のアクセスでは講読するNewsgroup のみのアクセスになるの で、最初に待たされた時間を毎回待つ必要はなくなります。ただし subscribeする Newsgroupを増やす場合は例外です。

ニュース記事、メールの読みかたはいたって簡単で、グループバッファで読みたい グループの上にカーソルを置き、スペースキーを押下する。すると Summary バッ ファと呼ぶ From と Subject を一覧表示した画面となる。あとはスペースキーを 連打することにより次々にニュース記事、メールを読みことができる。

★「図13 メールを読む」

MIME 形式のメール、ニュースの読み方(添付画像ファイルの再生方法等)や、作り 方については part2 で解説する。

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.7 ダイアルアップ環境で使うgnus-agent

gnus-agnetはダイアルアップ環境などで、ダイアルアップしてオンライン状態の時 にメール、ニュース記事の取得や送信、オフライン状態でメール、記事を書くとい うことができるものである。

を行うものです。Quassia Gnusからの実装です。

以下に gnus-agnet の状態遷移図を示す。

                  nndraft:queue に記事(news/mailがたまる)
                       ↑ C-cC-c でnews/mail投稿

M-x gnus -------> Unplugged = ~/News/agent/nntp/nntp-server-name local spoolの記事をRead Jj ↓ ↑ Jj Plugged = nntp server上の記事をRead

↓ C-cC-c でnews/mail投稿 nntp/smtp serverに投稿/送信

↓g ↓Js ↓JS mailを取得 news記事取り寄せ nndraft:queue掃き出し 未読記事チェック

図 gnus-agnet の状態遷移図

(これじゃぁ何が書いてあるのかわかりませんね。ちゃんと図を書かねば....)

.gnus の後に以下を追加してください。これでグループバッファで Jb を押 下すると Plugged 状態にし、Mailを取得し、nndraft:queue に溜っている mail, news を送信し、Newsの未読記事を取得し、再び Unplugged 状態にするという一連 の動作を行います。

;;; Gnus-agentバッチ処理
(add-hook 'gnus-group-mode-hook
   (lambda ()
     (define-key gnus-agent-group-mode-map "Jb" 'my-gnus-get-new-message)))
;;
(defun my-gnus-get-new-message ()
  (interactive)
  (gnus-agent-toggle-plugged t)
  (gnus-group-get-new-news);; check news, get mail
  (gnus-group-send-drafts);; send mail/news
  (gnus-agent-fetch-session);; fetch news
  (gnus-agent-toggle-plugged nil)
  (message "gnus-agent: main/news send/fetch Finished. "))

;; 一番最初に nntp serverとつなぐ時に Pluggedじゃないとエラーになる ;; 以下は .gnus の最後に書く (gnus-agentize) (gnus-agent-toggle-plugged nil)

[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]


# # This document was generated on March, 5 2004 using texi2html 1.61.1


URL: http://www.NetLaputa.ne.jp/~kose/
PGP Fingerprint: 59 8E 1E 4D 41 7F DD 80 12 13 47 A3 FB 62 97 44
Copyright (C) 1999, 2000 kose@yk.NetLaputa.ne.jp All Rights Reserved.
XXXXX