Mail & NetNews for SunOS or FreeBSD

00、<< イントロダクション >>
	もうすでに頭部細胞から忘れてしまいそうなので、急いで覚えてる箇所から
	書いていこうと思います。( こればっかり。。。)


00.1、< 題して 「ダイヤルアップユーザーのための
             至上最強のタッグ mnews(with mh) + gnspool + fetchmail 」>

	うんうん、我ながらいい題だ。

	実際、このタッグは至上最強です。(きっぱり)
	いえ、最強だと思います。
	たぶん、最強です。
	最強じゃあないかなーなんて、思ってる。。。かも。。
	だって、Mew とかUPDATEが早過ぎるんだもん。

	で、これは offline 環境の味方。。っていうか。貧乏人の味方。救いの神。
	っていう、今、僕が FreeBSD2.2.7 、Solaris2.6、SunOS4 などのプラットフォーム
	で使ってる環境の build の NOTE です。

	ニュースとメールは密接な関係ですよね。例えばニュースを見て返信を
	メールで出したい時とか。そんな時 mnews ならとても便利です。



	そして mnews + gnspool でのありがたさは、作業毎に確認ができて
	確認中いつでも修正が利くことですね。
	1) 新規メール、リプライメール、ニュース記事を書く時にエディタに
	   すべてのヘッダと共に内容が確認、修正ができます。
	2) 送信を選択すると確認画面が出て、修正もできます。
           ここを送信で抜けてもまだメール内容(ニュース記事)はローカルにある。
	3) その後、gnspool を起動すると送信メール(投稿記事)があれば
           確認画面が出てここでも修正ができます。





01、<< 用意 >>

     今回、頂いてくるもの ( なるべく最新版を使いましょう。)
	●gn-1.40.tar.gz        ( gnspool はこの中に入ってる )
	●mnews121PL5.tar.gz
	●MH-6.8.3-JP.2c.tar.gz
	●MH-6.8.3+-JP.2c+-jp2c.patch.gz
	●fetchmail-4.7.7.tar.gz


	◎いつも利用させて頂いている入手先の一覧はこちらです。


    すでに導入済みと仮定するもの
	○日本語エディタ emacs or mule など。。
	( mnews の中で使用。なんでもOKですが、ここでは emacs or mule で )
	( SunのOpenWindowのtextedit もここで無理矢理使った事がありますが
	   むちゃくちゃ使いづらかったんで、ここはやはり標準的に。。。)


	○localhost で動いている sendmail (できれば 8.8.8 以降)
	○sendmail.cf を作るための CF ( sendmail が 8.8.8 の時は CF-3.6W )
	                              ( sendmail が 8.9.x なら   CF-3.7W )


	○ページャー less とか jless など

	○GNU のお約束tool ( GNUtar、gzip 、GNUpatch など )




    参考資料

	◎毎度、利用させて頂いているのは 日刊いんすとーらー 。。。。なんていいネーミングだろう。




02、<< CFでダイヤルアップ用 sendmail.cf を作る >>

	◎すでにダイヤルアップでsendmailを使えている方は飛ばして下さい。

	◎CF の導入と sendmail.def から sendmail.cf を作る方法は
	 ここ の01、cfの作り方で書いてますんで参考にして下さい。





	0)ここでは以下 sendmail.def の説明


-------------------- ここから --------------------


### type of sendmail.cf
CF_TYPE=R8V7                  <--- sendmail8.9.x の時は CF_TYPE=R8V8 

# OS Type
OS_TYPE=bsd4.4                <--- OS に合わせて、これは FreeBSD の例です。


# mail.domain.ne.jp としてアクセスできるように
# DNS または /etc/hosts の設定も確認
MY_NAME='mail'

# 自ドメイン宛にきたメールを受け取るように
ACCEPT_ADDRS='$m'       # can be used with R8 sendmail

# localhostで Message-ID を付けないように
SMTP_MAILER_FLAG_SUB='M'
SMTP2_MAILER_FLAG_SUB='M'

# from: 行 強制書き換えの from アドレス
ANOTHER_ADDRESS='domain.ne.jp'               <--- ' '内は例ですからね。

# 自ドメイン from:行の強制書き換え指定
REWRITE_MYNAME_TO_ANOTHER_ADDRESS=yes
REWRITE_ACCEPT_ADDRS_TO_ANOTHER_ADDRESS=yes

# 直接配送するドメイン名.先頭のドットを忘れずに.
DIRECT_DELIVER_DOMAINS='.xxxxxxx.ne.jp'      <--- ' '内は例ですからね。

# 自ドメイン宛以外のメールの配送先
DEFAULT_RELAY='smtp2:mail.domain.ne.jp'      <--- ' '内は例ですからね。

# 変更不可
BITNET=mx
REJECT_JUNET=yes

-------------------- ここまで --------------------


	A)以上の要領で書いた def からsendmail.cf を作る。

	B)できた sendmail.cf の
		HReceived: $?sfrom $s $.$?_($?s___ 途中略___u for $u$.; $b
		H?M?Message-Id: <$t.$i@$j>
	  の行をコメントアウトします。
	  これは ローカルで勝手に付けたドメイン名での Message-ID: で
	  メールが送られないためです。

	C)sendmailを再起動します。( 動いていれば )

	  % ps aux|grep sendmail    でpid を調べ
	  # kill -HUP (pid)         を root で実行


	D)sendmailが動いてない時は普通に
	  # /usr/sbin/sendmail -bd -q1h   とかして動かします。( パスは環境によって違いますんで、ご自分の環境に合わせて下さいませ。
	    判らない時は /etc/rc.local でも見て下さい。 )




02、<< mh のbuild >> mnews だけで十分 Mail が読み書きできるんですが rmail 形式や mbox 形式だと受け取ったメールが1つのファイルになって いて溜まるとどんどん大きくなっていきます。 削除が面倒なので、mnews からmhを使って mh 形式でメールを管理します。 なお mnews のアーカイブのおいてサイトには mh のかわりをする mmh とか mnews のmh モードで IM を使う方法もあったりしますが、 ここでは本物の mh を使います。 % cd /usr/local/src に用意したarchiveをおいて % gtar -zxvf MH-6.8.3-JP.2c.tar.gz gtar は GNUtar(お約束tool) % cd mh-6.8.3 % gzip -dc ../mh-6.8.3+-jp2c+-1.02.patch.gz | patch -p1 ( patch コマンドも GNUpatch の方がいいかも ) % vi conf/MH で options JAPAN を追加 % cd conf % ./mhconfig MH % cd ../ % make clean % make % su # make install ( logをとる時は |& tee install.log を付ける。) ユーザーのパスに /usr/local/bin/mh を追加する
03、<< gn , gnspool のbuild >> % cd /usr/local/src に用意したarchiveをおいて % gtar -zxvf gn-1.40.tar.gz gtar は GNUtar(お約束tool) % cd gn-1.40 % cd src % vi mkgn で CC="cc" を CC="gcc" に変更 % ./mkgn で いくつかの質問に答える NEWSSPOOL , NEWSLIB は後述する mnews と同じにする 必要があるので注意 defalutでよければそれぞれ /usr/spool/mews , /usr/lib/news と その場合は /usr/spool/news や /usr/lib/news を書込権を与えて 作成しておきます。 % su # make install ( logをとる時は |& tee install.log を付ける。) ~/.gnrc を作り購読したいニュースグループを指定します。 ARTICLE_LIMIT OFF SUBSCRIBE fj.comp,fj.sys,fj.unix とすると 3つのgroup の記事を購読します。 逆に ARTICLE_LIMIT OFF UNSUBSCRIBE fj.comp,fj.sys,fj.unix とするとこの3つ以外全部購読になります。( 恐ろしいことになるかも。 ) ~/.gnrc のSUBSCRIBE UNSUBSCRIBE の指定では正規表現的に書けますから たとえば、 UNSUBSCRIBE fj,!fj.comp,!fj.sys,!fj.unix と書くと fj.comp,fj.sys,fj.unix 以外のfj が全部購読しない事に なります。 以下、~/gnrc の例です。 ----------------- ここから ----------------- DOMAINNAME domain.ne.jp # 自分のドメインに ORGANIZATION domain.ne.jp # 自分のドメインに GENERICFROM 1 NNTPSERVER news.domain.ne.jp # 自分のニュースサーバーに POSTPROC /usr/local/bin/gninews # ニュースポスト PROG NEWSLIB /usr/lib/news # mnews と合わせる事 NEWSSPOOL /usr/spool/news # mnews と合わせる事 SMTPSERVER mail.domain.ne.jp # 自分のメールサーバーに HOST myhost # 自分のホスト名に PAGER /usr/local/bin/less # EDITOR /usr/local/bin/newedit # mule 、emacs などに UNSUBSCRIBE junk,control,fj,!fj.os,!fj.fleamarket,!fj.news,!fj.sys,!fj.test,japan,!japan.test,tnn USER username # User Name NAME Your Name # 氏名 ##SIGNATURE .signature # signatureをmnews側で付ける場合はここは無し ARTICLE_LIMIT OFF REMOVE_CANCELED 1 ------------- ここまで --------------- 気を付けなくてはいけないのは、SUBSCRIBE で見たいニュースグループだけ 指定してしまうと、新しいニュースグループができた時に知る事ができない。
04、<< mnews with gnspool のbuild >> % cd /usr/local/src に用意したarchiveをおいて % gtar -zxvf mnews121PL5.tar.gz gtar は GNUtar(お約束tool) % cd mnews-1.21PL5/build % ./config.jsh としていくつかの質問に答える メール送信コマンドを /usr/local/bin/gnmail ニュースポストを /usr/local/bin/gninews NNTP/SMTP/POP などを 「使わない」にすると offline 用のmnews ができるが、mnews の設定ファイル( .mnews_setup ) でも後で反映できるのでここでは「使う」でも いいかも知れない。 その他、適切に答えると make する mh へのコマンドのパスを間違えて、mhコマンドを呼び出せない と記事の削除や移動などができないので、注意。 site_dep.h をちゃんと確認。 ( mnews ML でご指摘頂いた。感謝。) % su # make install ( logをとる時は |& tee install.log を付ける。) % vi ~/.mnews_setup を作る( あ、いえ何も vi じゃなくて mule でも) ------------- ここから --------------- # 1. 必ず編集しなければならない行 # 2行とも、本名と正しい自分のメールアドレスに直しましょう。 # mail_field: From: Shintaro MATSUOKA <shin@shin.nu> news_field: From: Shintaro MATSUOKA <shin@shin.nu> # # 2. 編集した方がいい行 # # 今まで RMAIL を使っていた人は次の3行の # を消しましょう。 # rmail_mode: on # mh_mode: off # mh_alias_mode: off # # 今まで mh-e を使っていた人は次の3行の # を消しましょう。 rmail_mode: off mh_mode: on mh_alias_mode: on # # 3. 付けておいた方がいい行 # 使ってみて特に支障がなければ、以下の行は変えなくても構いません。 ucbmail_mode: off msgchk_rule: 1 auto_inc_mode: on auto_sig_mode: on rmail_mbox: ~/RMAIL jnames_file: ~/.jnames indicator: | add_cc_mode: on from_mode: on gif_command: xv mail_thread_mode: on sort_rule: 1 edit_code: EUC mail_fcc_field: ~/Mail/sent news_fcc_field: ~/News/post ------------- ここまで ---------------
05、<< fetchmail の build >> % cd /usr/local/src に用意したarchiveをおいて % gtar -zxvf fetchmail4.7.7.tar.gz gtar は GNUtar(お約束tool) % cd fetchmail4.7.7 △% setenv CFLAGS="-O2 -mv8" <-- SunOS4 の時 △% ./configure <-- ; △% make LOADLIBS= <-- ; ●% setenv CFLAGS=-O2 <-- Solaris の時 ●% ./configure <-- ; ●% make LOADLIBS="-lresolv -lsocket -lnsl" <-- ; ◇% setenv CFLAGS '-O2 -m486' <-- FreeBSD の時 ◇% ./configure <-- ; ◇% make <-- ; % su # make install ( logをとる時は |& tee install.log を付ける。) % vi ~/.fetchmailrc を作る ------------- ここから --------------- defaults no mimedecode no rewrite mda "/usr/local/lib/mh/slocal" poll mail.shin.nu protocol pop3 # メールサーバー名とpopの方式 username shin # ユーザー名 password xxxxxxxx # pop 認証のパスワード ------------- ここまで --------------- で、password が生なので .fetchmailrc を chmod 600 に しないとfetchmail が動きません。(たぶん)
06、<< 最強タッグを使う >> a) news 記事をとってくる時( この時は online ) % gnspool b) mail を採ってくる時( この時は online ) % fetchmail ( サーバーに残す時は fetchmail -k ) c) mnews で書いた mail 出す時や news 記事を投稿する時 ( この時は online ) % gnspool 以上、3つの時だけ online なら良いわけです。 後は保存が利きますので、offline でゆっくり、読んだり書いたりしましょう 07、<< その後、自動で仕分けしたいでしょ。 >> んで使ってるうちに、人間は欲がでてきますね。 特に僕はものぐさの面倒くさがり屋なので、特定のメールを各フォルダに 自動で仕分けしてくれるととても助かります。 ものぐさができるのなら、どんな苦労もいとわないんです。(変?) そこで先に fetchmail を起動した時に mh のコマンド slocal を使ってる のが 味噌 です。 slocal は ~/.maildelivery ファイルの指定によってフォルダ分けをしてくれます。 ~/.maildelivery ファイルに以下の記述をする事で実現します。 複数行書かれている場合は全ての動作を行います。 Subject test | A "/usr/local/lib/mh/rcvstore +test" この1行は header,pattern,action,result,strings からなっています。 つまり header の中の Subject 行 が pattern 'test' とマッチすれば /usr/local/lib/mh/rcvstore を起動して test フォルダへ投げるという事です。 ここでの A というのはこの動作後のresultで、以下のものがあります。 A マッチ作業を行い、動作後はそのメールを配送済みにする R 上の A と同じだが、動作後、配送済みにしない。 ? メールが配送済みでない時だけ動作する。 N メールが配送済みでなくて、かつ前の動作が成功したときのみ 動作する。動作後は配送済みにする。 通常、~/.mh_profile で Path: Mail の指定があるでしょうから ここでの test フォルダとは ~/Mail/test になります。 .maildelivery ファイルでの必要な最低限の1行は default - | ? "/usr/local/lib/mh/rcvstore +inbox" です。これはどれにもマッチしないメールを標準のメールフォルダ(inbox)へ 投げることです。これを忘れるとマッチしないメールはどこかへ行ってしまいます。 またもし、fetchmail の時に slocal を起動してない場合は .forward から slocal を作動させることもできるらしいですが、試してません。 ( だって必要ないんだもん :-p ) だいぶ、ご機嫌なメール&ニュース環境になったでしょ。 でわ、お試しを。。 それでは ふろ〜む しんたろ@茨城県境町の空のしたより ∩ ∩ ( ̄。 ̄)..zzZ E-mail 〜(_ x _) URL http://www.shin.nu/