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/