MH-plus project のぺーじ


MH の options 解説 〜 by MH-plus project


MH の make 時には、MH の挙動を色々と指定する MHconfig ファイル(conf/MH) が必要になります。MH-plus project による configure スクリプトを利用すれば、 MHconfig ファイルが自動作成出来ますが、システムに依って、また、サイトの好み などに応じて、options を色々と変更する必要があるかと思います。以下は MHconfig ファイルに指定出来る options について、簡単に説明を加えたものです。 MH-JP 自体の make & インストール方法の詳細に関しては、INSTALL.JP などを 参照して下さい。


注) このページは、MH-6.8.4 に MH-6.8.4-JP-3.02.patch を当てると 出来る、doc-JP/ 以下にある OPTIONS.JP に書かれていることを HTML 化した ものです。内容自体は(ほぼ)同一です。

options の解説



( )内が default 指定されるものです。
< >内が選択可能なオプションです。
[JP3] は、MH-plus project による拡張 option です。 詳細は、FEATURES.JP、CHANGES.JP を御覧下さい。
※ 尚、JP-3.x 拡張の options を全て指定しなかったとしても、 MH-6.8.4 オリジナルにはなりません(bug fix等も行っているからです:-))。

インストール関連(path他)

bin
(/usr/local)
bin program のインストール先を指定します。(man sec.1 参照)

etc
(/usr/local/lib/mh)
MH の各コマンドプログラムから起動されるプログラムなどのインストール 先を指定します。(man sec.8 参照)

mail
(/usr/spool/mail)
ユーザのメールスプールファイルの{ディレクトリ|ファイル}を指定します。 絶対パスで指定すると、ユーザのメールスプールファイルは $USER として 扱われます [default で /usr/spool/mail/$USER となります]。 絶対パスで指定していない場合は、各ユーザの home dir 以下になります。

mandir
(/usr/man)
マニュアルのインストール先(親ディレクトリ)を指定します。

jmandir
(NULL) [JP3]
日本語マニュアルのインストール先(親ディレクトリ)を指定します。

manuals
(standard) <local|new|old|standard|bsd44|gen|non>
mandir で指定されたディレクトリ以下へのマニュアルのインストール形式 を指定します。それぞれ、manl(local)・mann(new)・mano(old)・ man?(standard)・man?/page.0(BSD44)・マニュアルファイルを作成するが インストールしない(gen)・マニュアル作成もインストールもしない(non) となります。 さらに"/cat"をつけると nroff -man 形式のマニュアルを作成し、 cat?/ にインストールします。
[JP3] では、"/gzip"をつけると、マニュアルを圧縮して man?/ に インストールします。

chown
(/etc/chown)
chown(8) の場所。パスが通ってるなら、"chown" のみで OK です。 (SYS5 では多分「/bin/chown」でしょう)

cp
(cp)
インストール時、ファイルコピーのコマンドの指定です。 (たとえば cp -p とするとか)

ln
(ln)
ソースツリーでファイルをリンクするコマンドの指定です。 lndir の様にソースとコンパイルツリーを分けたい場合は、"ln -s" とか "cp" とかを指定します。

remove
(mv -f)
新規にインストールを行なう際に、既にインストールされている場合は、 それをどうするかの指定です。単純に削除するのなら "rm -f" を指定すれ ばよいでしょう。

Compiler と loader 関連

cc
(/bin/cc)
C コンパイラの指定です。

ccoptions
(-O)
C コンパイラへのオプション指定です。 default で "-O" が指定されていますが、指定された場合は指定内容のみ を C コンパイラへ渡しますので、"-O" 以外のオプションを指定して、 かつ、"-O" も与えたい場合は、ちゃんと "-O" をも一緒に指定する必要が あります。(例)「ccoptions -m486 -pipe -O」)
※ options: の -D オプションも参照して下さい。

curses
(-lcurses -ltermlib)
termcap(3) と curses(3) ライブラリをロードする、loader のオプション 指定です。SYS5 システムでは、"-lcurses" だけでいい筈ですが、 "-lcurses" と "-ltermlib" の両方が必要なものも報告されています。

ldoptions
(NULL)
ld(1) のオプションの指定です。 通常、"-s" にしておくとよいでしょう。

ldoptlibs
(NULL)
ld(1) でリンクするライブラリの指定に用います。 などを設定することが多いでしょう。
※ ライブラリの検索パスも含めて、"ldoptlibs -L/local/lib -lxxx…" という形で設定することもあるでしょう。

ldoptlibs_post
(NULL) [JP3]
options NORESPOST [JP3]
指定すると、uip/post のリンク時に ldoptlibs ではなく、 ldoptlibs_post の方を見るように変更しました。
ldoptlibs の方に -lresolv を加えている場合は、この オプションを指定し、 ldoptlibs_post に -lresolv を加えない ようにすると、post コマンドプログラムが resolver を引かない (引けない?)様になります。

※ 単にリンク時に -lresolv を 付けない様にしているだけなの で、library自体が resolver 見に行ってしまう OS (HP-UX等)では 意味がないのですが…(その方が多いかも…^^;;)

DNS的に localhost を認識しなくなったりした場合を考えると、 post で resolver を引かない方が安全です。resolverを入れ換え たりして、NIS や /etc/hosts も参照できるとかなら、大丈夫 でしょうけど:-)。 但し、mtstailor に変な server 名を書いてしまうと恐いです。 普通は localhost だから大丈夫でしょうけど:-)

lex
(lex -nt)
他の version の lex を使う時に指定します。 MH の 一部のソース(zotnet/tws/dtimep.lex など)は lex 形式で用意 されており、これを、options の設定に合わせ、変更して C ソースを 作成する、という様になっています。
※ 尚、OSによって lex はタコだったりします(汗)ので、.lex から 正しい .c が作成されないために、make 時にエラーを起こすことがあります。

oldload
(off) <on|off|なにも指定しない>
local symbols を消すために library object files をどの様に 処理しようとするかを制御します。

ranlib
(on)
ranlib(1) が有るか無いかの指定です。 SYS5 では、ranlib(1) がありませんので、"off" にします。 (MH は代わりに lorder と tsort を使います)
※ 尚、いくつかの SYS5 はこれだけでは不十分かもしれません。

Message Transport System 関連

メッセージを転送するシステム(MTS/MTA)の選択です。
mts
(sendmail) <mmdf|mmdf2|sendmail|zmailer|mh>
どの message transport system (MTA) を使用するかを指定します。 それぞれ、mmdf…MMDF・mmdf2…MMDF-II・sendmail…SendMail・ zmailer…ZMAILER・mh…MH(stand-alone)となります。

socket経由の TCP/IP ネットワーキングをサポートしている UNIX システムでは、さらに、"/smtp" という指定を付け加えることが出来ます。 これを指定すると、MH がメールの送信に際して、MMDF や sendmail など の MTS を直接起動するのでなく、SMTP (Simple Mail Transfer Protocol) を用いて、local SMTP server 経由でメールを投函する様になります。 こうすることで、interface がしばしば改善されます。
※ "/smtp" をつける場合は、<mh-etc-dir>/mtstailor ファイルの "servers:" (mh-tailor(8) に記載されてます)を正しく設定しているかを 確認して下さい。

mf
(off)
MTS に UUCP を使用していないシステムでのメールフィルタリングの サポートです。このオプションは、MTS を "mmdf" に設定している場合か、 もしくは "mh" (stand-alone)としている場合に限られます。

sendmail
(/usr/lib/sendmail) [JP3]
sendmail(8) の場所。

UCI BBoards 機能関連

BBoards (Bulletin Boards) とは、UCI 学内などで使用されている(いた?) 簡易電子掲示板システム(簡易 BBS みたいなもの)のことです。 詳細は… papers/bboards/ 以下をよく読んで下さい:-)。
bboards
(off) <off|on|nntp|pop>
"on" ならば、UCI BBoards 機能をサポートします。 BBoards は、どんな MTS 下でも可能です。

bbdelivery
(off) <off|on> リモートな BBoards を読むためには、bbc が POP3 もしくは NNTP server とやりとり出来るように設定しておかねばなりません。 しかし、別のホストから bbhome のディレクトリ自体を NFS で マウントして読む、という場合は、"off" でよいでしょう。

bbhome
(/usr/spool/bboards)
BBoards ユーザのホームディレクトリの指定です。

options NNTP
[JP3]
指定すると、bbc というコマンドプログラムがインストールされ、 NNTP を喋るサーバーに接続し、NetNews を読む事が出来るようになります。

オリジナルでは、MHconfig ファイルで、"bboards: pop" という 形で BPOP が、"bboards: nntp" という形で BPOP と NNTP が、 options 指定される様になっていました。 それを "bboards: nntp" と指定しなくとも、"options NNTP" と 指定出来るようにしました。 (パスワードや crypt 関係からも独立させてあります:-))


Post Office Protocol 機能関連

RFC1939 で規定された、server となるマシンにあるユーザの maildrop (メールスプール)を、他のマシン(client)からでも利用可能にする手法です。 USER コマンド(USER name)と PASS コマンド(PASS passwd)を対にして用いて ユーザ認証を行ないます。 "APOP" や "MPOP" については、「The Internet Message」(Marshall T.Rose著、 ISBN 0-13-092941-7)や support/pop/pop-more.txt も参照して下さい。

pop
(off) <off|on> [Original]
(off) <off|on|client> [JP3]
POP サービスをサポートします。 (詳細な説明は support/pop/pop.txt を参照して下さい)

MH のコマンドプログラムで実際に pop を使用する場合には、
例) % inc …そのマシンのローカル maildrop からメールを取り込む

% inc -norpop -user hayashi -host popserver.hogehoge.jp
popserver.hogehoge.jp に pop を飛ばし、hayashi と いう user で、rpop を使わずに user 認証モードに入り、 inc を行なう
…などと、オプションスイッチを与えて実行する必要がありますので、 POP を使う/使わないに関わらず、このオプションを指定してコンパイル しても問題は…(あまり)ないと思います。
[JP3] での client 指定は、クライアント部分だけ POP に対応して コンパイルし、POP サーバー部分はインストールしないという オプションです。

popdir
(/usr/etc)
POP daemon (popd) をインストールするディレクトリの指定です。 ~MH/support/pop に popd のソースが用意されています。

尚、この popd でも問題なく使用できますが、qpop などのさらに改良 された popd のパッケージも色々ありますので、それらを別途用意し、 server として利用しても構いません。

options
C コンパイラへの "-D" オプションの指定です。「options XXX=YYY」と 与えると、C コンパイラへ「-DXXX=YYY」と渡されます。

POP 関連で指定出来るものには以下のものがあります。

APOP
(='"/etc/pop.auth"')
このオプションを指定すると、POP daemon が APOP コマンドを サポートします。引数のファイル名は、APOP 認証データベースの 名前となります。 APOP コマンドは MD5 メッセージダイジェストアルゴリズムを 使用して、challenge-based 認証システムを規定します。

これを指定すると、管理者が APOP 認証データベースを操作する popauth プログラムもインストールします。 詳細は、support/pop/pop-more.txt などを参照して下さい。 尚、"APOP" オプションを使用しても、ノーマルな POP の USER/PASS 認証も可能となります。

DPOP
POP を利用するユーザは passwd(5) ファイルにわざわざエントリ されるのでなく、passwd ファイルとは別個の独自のデータベース に登録され、これを利用する認証方法です。

KPOP
KERBEROS + POP をサポートします。
READ-ME ファイルには「テスト中」と書かれていますが、 6.8.3 時点で "MH now works with Kerberos as well." (by Bill Wohler. FAQ)とされていますですので、ちゃんと 動くようになっているのでしょう :-)

Kerberos は MIT のアテナプロジェクト(Project Athena)により 開発されている、オープンネットワークシステムのための認証 システムです。ただ、暗号プロトコルに対称鍵方式の DES (Data Encryption Standard) を用いていますが、DES が米国 政府により、米国とカナダ以外の国への持ち出しが制限されて いますので、現在、それ以外の国で使用できるのは、KerberosIV から DES を除いた "Bones" と呼ばれるコードだけです。 (実際に我々が使えるのは、これに DES に代わる暗号化コードを 加えた "eBones" と呼ばれるものです) 参照: http://www.ov.com/misc/krb-faq.html 等

…ですので mh-plus としても、この機能に関しては一切テスト してません(出来ません…^^;;)。

MPOP
指定すると、POP daemon が非標準の拡張コマンド、XTND SCAN コマンドをサポートします。 また、インタラクティブな POP クライアントプログラムである popi をコンパイルしてインストールします。(man も) 詳細は、support/pop/pop-more.txt などを参照して下さい。 (※ このオプションは "bboards: pop" の指定も必要とします)

XTND SCAN は、POP で使用できるコマンドを、非標準で拡張した もので、「XTND SCAN width [format]」として使用します。 これにより、

    S: XTND SCAN 80 "%4(msg)%<(cur)+%| %>%<{replied}-%|...
    C: +OK SCAN
    S: LIST 1
    C: +OK 1 369 #   1  04/14 13:49JST To:mh-plus         now status<<
などと、POP しつつ、メールの scan をも出来るようになります。

POP2
MH で使用される POP は POP3 プロトコルですが、旧 POP で ある POP2 プロトコルをも使用できるようにするオプションです。 POP daemon は、自動的に client が使用している POP プロトコル を判別しますので、POP を利用するなら、このオプションも設定 しておいた方がよいでしょう。POPSERVICE オプションも参照して 下さい。

POPSERVICE
(='"pop"') <pop|pop3>
MH の POP が使用する port 名の指定です。 歴史的経緯によって、default で "pop" としています。

1987年、MH POP プロトコル(POP version 3)は RFC1081 で発表 され、そのポートを 110番と定義されました。これはそれまでの POP (version 1 と 2)が 109番であることと異なります。
MH POP が 110番を使うためには、POPSERVICE='"pop3"' と指定 して、かつ server/client のマシンのポート番号指定一覧である、 /etc/services ファイルに "110/tcp" の行があるかどうかを 確認しておいて下さい。

RPOP
POP の一種である RPOP をサポートします。(詳細は上述)

SHADOW
POP server (popd) が、/etc/passwd ファイルでなく、 /etc/shadow ファイルを参照するようにするオプションです。 パスワード文字列が /etc/passwd でなく、/etc/shadow に 記述されているシステム(シャドーパスワード)では、 これを設定して下さい。

共有ライブラリ関連

sharedlib
(off) <sun4|sys5|secure|off> [Original]
(off) <sun4|sys5|secure|fbsd|gnuelf|off> [JP3]
MH 関連のライブラリファイル libmh.a を shared library として作ります。 [JP3]ではさらに拡張オプションとして、 が指定可能となります。

slflags
(-pic)
MH を PIC (position independent code) で作成します。

slibdir
(/usr/local/lib)
MH の共有ライブラリのインストール先ディレクトリ指定です。

○ ライブラリのパスについて

いくつかの MH コマンドプログラムは set-user-id されますが、それらは 基本的に "trusted" な場所に置かれているライブラリやファイルなどを探したり アクセスしたりするため「だけ」です。従って基本的に、/usr/lib や /usr/local/lib 以外にライブラリをおくのはあまりお勧め出来ません。
しかし、どうしても上記以外にライブラリを置くのであれば、slibdir で 指定する path を、コンパイラにもライブラリ検索パス指定で与えて下さい (例: "ldoptions: -L/usr/mh/lib")。

また、新しい shared object をシステムにインストールした時には、手動で ldconfig(8) を行なう必要があるかも知れません。


システム依存のオプション

使用している OS に合った指定をするオプションです。

mailgroup
(off)
グループ名の指定です。指定すると、inc はこのグループ名に set-group-id されます。SYS5 では、これを "mail" に指定する必要が あるかも知れません。/usr/spool/mail や /usr/mail などのメールの spool ディレクトリが world-writeable でないなら、これを指定して下さい。

※ slocal はこういうシステムではうまく動かないでしょう。 set-group-id することは security hole を開けることになりかねません。 もし、"mailgroup" を使用するなら、slocal (とその man page) を 削除してしまう方が望ましい("READ-ME" ファイルによる)。

※ [JP3] "mailgroup mail" を指定すると、inc のグループを mail にして、chmod g+s にするだけです。 slocal でメールを配送する際に、$MH/dir/maildelivery か $HOME/.maildelivery の配送設定ファイルを読み損なった等が起こると、 デフォルトとしてその user の mail spool ファイルに、届いたメール を配送します。この際、mail spool ファイルが存在していないと、 "user id/user's group id" で新規ファイルを作成してしまいます。 一部の sysV では、mail spool ファイルは group=mail である必要が あるので、user の group id でファイルが作成されてしまうと、 それ以後、rmail などでの通常の local 配送が出来なくなったりします。 そこで、JP-3.x では "option SETMG" を指定すると、 slocal の gid を修正する様にしています。
※ security hole となるかも知れないことを御承知おき下さい。

signal
(int) <int|void>
signal(2) の型指定です (int or void)。 (例えば SYS5 V3.0 以降や SunOS4.0 以降では "signal void")

sprintf
(char *) <char *|int>
sprintf の型指定です (char * or int)。 (古い SYS5 などでは int)

options
C コンパイラへの "-D" オプションの指定です。「options XXX=YYY」と 与えると、C コンパイラへ「-DXXX=YYY」と渡されます。 システム依存関連で指定出来るものには、以下のものがあります。
ALTOS
XENIX/v7 システムの場合に使用します。"options V7" も必要です。

ATTVIBUG
MH から呼び出すエディタを vi としている時に、非0 status 状態で終了した場合に、"What now?" というプロンプトを返す ようにする指定です。
これは、一部の vi エディタなどでは、終了時にエディット中 に起こった"エラー"数を status として返して終了するものが あり、そういうシステムで用います。 但し、エディターの終了 status をテストするプログラムや、 status が非0 では abort してしまうようなプログラム (MH のコマンドプログラムや /usr/etc/vipw なども含まれます) では、問題が起きてしまいます。

AT&T version の vi とかは、こういう 非0 status で終るらしい ですが、オリジナルの vi を broken_vi などと rename し、

#! /bin/sh
/usr/ucb/broken_vi "$@"
exit 0
というスクリプトを用意すれば、問題を回避できるらしいです。
(MH FAQ.Subject: 06.01 What to do with "Problems with edit - draft removed". by John Romine (jromine@ics.uci.edu))

AUX
AUX システムで使用する場合に指定します。

BIND
TCP/IP sockets での UNIX システムの BIND code を 走らせている場合に指定します。 レゾルバが利用できる(named を走らせている、もしくは resolv.conf をちゃんと設定している)環境なら、設定して おけばよい筈です。

BSD41A
4.1a Berkeley UNIX システムで使用する場合に指定します。

BSD42
Berkeley UNIX システムもしくは 4.2BSD 以降で使用する 場合に指定します。

BSD43
4.3 Berkeley UNIX システムで使用する場合に指定します。 尚、"options BSD42" も指定する必要があります。
openlog(3) ("man 3 syslog" 参照) の引数が 2でなく 3で、かつ、 write(1) コマンドが tty に set-group-id されているなら、 このオプションを指定して下さい。(どちらかが違う場合は、 指定する必要はないです)

BSD44
Berkeley UNIX システムもしくは 4.4BSD 以降で使用する 場合に指定します。
"options BSD43" と "options BSD42" も指定する必要があります。

DBMPWD
passwd ファイルを読み込む際のパフォーマンスの改善です。

/etc/passwd ファイルを逐次読むのでなくて、getpwent(3) 関数 で NIS などの dbm データベースを読んでいる場合に指定します。 指定しない場合、passwd ファイル全体をメモリに読み込みます。 しかし、NIS などで大きな passwd ファイルの場合、読み込む こと自体に時間がかかってしまい、dbm データベースを用いると かえって遅くなることがあります。そこでそういうシステムでは、 DBMPWD を指定して下さい。

GCOS_HACK
sendmail でメールを出す場合の From: 行などで、ユーザの フルネームを必要とする際、passwd ファイルのいわゆる GCOS フィールドを、他に設定がない場合の最終的な"切札"として 利用するようにします。詳細は mh-profile(5) を参照して下さい。
尚、gcos フィールドの "&" 文字がログイン名として解釈される ようなシステム(passwd(5) マニュアル参照)でも、利用可能です。

FCNTL
カーネルレベルでのファイル locking に、fcntl() 関数を使用 します。SYS5 システムなら、これを指定する必要があるでしょう。
("options FLOCK" と "options LOCKF" を参照して下さい)

FILBUF_ADJ [JP3]
_filbuf() が FILE 構造体内部のバッファーのポインターを 初期化しないような OS で指定します。

FLOCK
カーネルレベルでのファイル locking に、flock() 関数を使用 します。BSD42 システムで使用、かつ、maildrop が NFS されて いないなら、このオプションを指定して下さい。
("options FCNTL" と "options LOCKF" を参照して下さい)

HESIOD
HESIOD name server をサポートします。
※ MIT の Project Athena が行なった、BIND 上での Sun の NIS に似た拡張(らしいです^^;;)。
(bind-4.9.6-REL.tar.gz の doc/bog/files.lst より)
参照) ftp://athena-dist.mit.edu/pub/ATHENA/hesiod.tar.Z

JAPAN [JP3]
様々なコマンドプログラムが日本語化対応になります。

LOCKF
カーネルレベルでのファイル locking に、lockf() 関数を使用 します。maildrops が NFS されているなら、指定して下さい。
("options FLOCK" と "options FCNTL" を参照して下さい)

locname
MH を使うホストのローカル名を強制的に指定します。 例えば locname='"KOMADORI"'などとします。 MH がシステムにこの情報を聞きにいったり、または mtstailor ファイルに予め書き込んでおく…という手法よりも、 多分 "better" でしょう。

MORE
(='"/usr/ucb/more"')
more(1) プログラムをフルパスで指定します。

NDIR
このオプションを指定すると <ndir.h> を include します。
(非 BSD 系の UNIX システム用)

NFS
NFS C ライブラリの問題を hack します。
コンパイルの際に、"ruserpass" が undefined symbol だという エラーが出たら、このオプションを指定して下さい。 逆に、指定していて、"__ruserpass" が undefined symbol だと 言われたら、このオプションを削除して下さい。
("options NORUSERPASS" も参照して下さい)

NOIOCTLH
<sys/ioctl.h> ファイルがないシステムでは指定して下さい。

NORUSERPASS
ruserpass(3) 関数がないシステムでは指定して下さい。 代わりに、MH 自身で用意している(sbr/ruserpass.c)ルーチンを 使用します。

NTOHLSWAP
TCP/IP ネットワークに接続されているシステムで、 msh に、ntohl() を使うようにする指定です。 ホームディレクトリを異なるアーキテクチャのマシン間で 共有してる場合などでは、maildrop 形式の map ファイルの データがおかしくなる可能性がある(エンディアンの違いによる) ので、それをネットワークバイトオーダーに統一するための オプションです。

READLINE [JP3]
msh がヒストリやフォルダー名補完などを出来るようになります。 但し、libreadline.a が必要です。

RENAME
rename() 関数があるシステムでは指定して下さい。

SENDMAILBUG
SMTP の reply code 451 (failure) を code 250 (OK) と(無理 矢理:-))見倣す指定です。failure を示すつもりでないのに、 code 451 を返してしまうことがある様な sendmail を使用して いることが"確実である時のみ"、使用して下さい。 でないと、問題を起こしてしまうかも知れません。
※ 現状の sendmail.8.x なら指定しなくて大丈夫だと思いますが…。

options SETMG [JP3]
SYS5 システムでの slocal の不具合の修正を行ないます。 実際にはファイルを open する際に gid を立ててますので、 セキュリティホールになる危険性がありますから、詳しくは "mailgroup" を参照して下さい。

SOCKETS
4.2, 4.3BSD UNIX とコンパチな TCP/IP ネットワークの socket interface が利用できることを指定します。 BSD42 を指定しているのなら、わざわざ指定する必要はありません。 SYS5 や HPUX の場合には有用でしょう。

SUN40
SunOS 4.0 (以降?) のシステムで使用する場合に指定します。 "options BSD42", "options BSD43" と "signal void" の指定も 必要になるでしょう。
もし、Domain Name Service が NIS 経由でしか使えないという、 Sun 特有の"頭の痛い"状況下で使用するなら、"options BIND" と "ldoptions -lresolv" をも指定して下さい。

SYS5
AT&T の SYSTEM 5 Release 3 (とそれ以降?)の UNIX システムで 使用する場合に指定します。
("mailgroup" も参照して下さい)

SYS5DIR
"struct direct" でなくて、"struct dirent" を使うシステムで 使用する場合に指定します。
<direct.h> と mkdir, rmdir と getcwd を使用します。

SVR4
AT&T の SYSTEM 5 Release 4 (とそれ以降?)の UNIX システムで 使用する場合に指定します。"options SYS5" と "options SYS5DIR" も指定して下さい。
("mailgroup" も参照して下さい)

TERMINFO
terminfo があるシステムで使用する場合に指定します。
※ terminfo があるのは SYS5 ですが、"SYS5" という オプションとは独立して "TERMINFO" というオプションが 存在しています。SYS5 ではほとんど、両方を指定することに なるでしょうが。

TZNAME
tzname 変数(tzset() 関数で定義します)で time zone 名を 決定する場合に指定します。 SYS5 システムで、かつ alpha-timezone を使う("options ATZ" を参照して下さい)場合に効きます。
("options ZONEINFO" も参照して下さい)

UNISTD
<unistd.h> ファイルがあるシステムで使用する場合に指定します。 指定されない場合、LOCKF オプションを指定すると <sys/fcntl.h> ファイルを include します。

V7
V7 UNIX システムで使用する場合に指定します。 V7 では void という型定義が存在しないので、さらに、 "options void=int" も指定しておく必要があります。

VSPRINTF
vsprintf(3) 関数があるシステムで使用する場合に指定します。 指定しない場合、_doprnt(3) が使われます。

WAITINT
BSD42 ベースのシステムでは、wait(2) 関数を union wait 型 pointer と定義していますが、"options BSD42" を指定している ものの、wait(2) 関数を int 型の ponter としているシステムで 使用する場合に指定して下さい。

ZONEINFO
time zone information (/etc/zoneinfo ファイル)もしくは /usr/lib/zoneinfo ファイル (SunOS) があるか、 localtime(3) で返される struct tm に tm_gmtoff がある (/usr/include/time.h 参照) BSD43 ベースのシステムで 使用する場合に指定します。
これを指定することにより、発送されるメッセージの日付(時刻) は、TZ 環境変数に指定されている timezone に修正されます。
("options TZNAME" も参照して下さい)

サイトの好みによる設定オプション

これらのオプションは、MH の default 挙動を変更したり、さらに拡張機能を 使用可能にします。MH を使用するシステムの設定や、そのサイトの好みに合った オプションを追加して下さい。
editor
(prompter)
MH の default エディタの指定です。

options
C コンパイラへの "-D" オプションの指定です。 「options XXX=YYY」と与えると、C コンパイラへ「-DXXX=YYY」と渡され、 引数を取る物は「options XXX=YYY」で、「-DXXX=YYY」と渡されます。

Site Preferences 関連で指定出来るものには、以下のものがあります。

ATZ
可能である限り、alpha-timezones を使用するようにします。 alpha-timezone とは、timezone を "+0000" などでななく、 代わりに "GMT" などと表記する方法です。

さらに options の "JAPAN" を指定(詳細は下記)すると、 timezone "JST" を正しく認識し、また mh-format の tzone 関数や pretty 関数が "JST" を返すようになります。

※ ATZ は非常に"曖昧"です。例えば "EST" は (American) Eastern Standard Time, (Australian) Eastern Standard Time, (Australian) Eastern Summer Time …など いろいろと解釈できてしまいます。なので、RFC1123 では、

There is a strong trend towards the use of numeric timezone indicators, and implementations SHOULD use numeric timezones instead of timezone names. However, all implementations MUST accept either notation. If timezone names are used, they MUST be exactly as defined in RFC-822.
("RFC-1123", R.Braden(ed), 1989/10)
です。つまり "JST" という ATZ 表記は、RFC-1123 に反する ことになってしまいます。 このオプションを使用することに関しては、くれぐれも *at your own risk* で行って下さい。

尚、backward compatibility のために "options ATZ" の 指定の有無に関わらず、"JST" を "+0900" の意味である… などと認識出来るようにはしてあります。

ATHENA
repl コマンドプログラムの default を、"-cc all"から、 "-nocc all" にします。
※ 名称の「ATHENA」は、Project Athena でこういう設定が 使われていた…とかなんでしょうかねぇ…? :-)

BANG
@ アドレス表記(822-style addressing)よりも ! アドレス表記 (UUCP-style addressing) を優先するようにする指定です。

BERK
指定すると、822-style アドレス解析ルーチンのほとんどを使用 しなくなります。これにより、822-style アドレス表記形式以外 の形式も受け付けることが可能になります。

元々はそういうつもりで作成されたオプションではなく、指定時 に、メールを送信すると、sendmail に引き渡す spost を使う ことを前提としていたためです。 (で、アドレス解析は sendmail 側でやってもらう、と)
尚、指定すると、アドレス解析が出来ませんので、 mh-format の mbox() や friendly() などの関数が、うまく 働かなくなります。
単に、822-style アドレス表記形式以外の形式も受け付けたいだけ なら、"options DUMB" を指定するほうがよいでしょう。

※ "options BERK" と "options DUMB" の差については、 sbr/addrsbr.c の冒頭コメント部に解説があります。

COMPAT
MH.4 よりも古い MH との互換性を保つためのオプションです。 通常は指定することはないでしょう。

CONTENT_LENGTH [JP3]
SVR4 などのローカルメーラーで使われている Content-Length: ヘッダーでメールの切れ目を表わす形式に対応します。

DUMB
"official" form に address を書き直ししない設定をします。

FOLDPROT
(='"0711"')
フォルダーの default での permission を指定(変更)します。
例)「FOLDPROT='"0700"'」など。

ISI
"repl -cc me" とした際、自分宛にもメールが送られますが、 Alternate-Mailboxes (man mh-profile(5) 参照)に自分の アドレスを複数登録している場合、その最初のアドレスだけに "Cc: "されて、その他のアドレスには送らないようにする指定です。

LINK
(='"@"')
dist コマンドプログラムと repl コマンドプログラムでは、 ドラフトを編集中に、再配布/返信する元のメールが、 あるファイル名で一時的にリンクされます。 default では 「@」 です(編集中に "@" で参照出来ます)。 このファイル名を変更したい時に指定します。
例) LINK='"\\043"' …「#」になります。

MHE
Brien Reid 氏の MHE interface (mh-e.el) を使う場合に指定します。 尚、MH-6.8.3 のアーカイブ中の miscellany/mh-e/mh-e.el は version 3.8 で、少し古いですのでご注意を。 mh-2.3 標準添付の MH-e は 4.1 で、 ftp.ics.uci.edu/pub/mh/mh-e の MH-e は 5.0.2 です。

MHRC
CShell の "~"(=home dir) 表記を MH に認識させる様にします。 …らしいです。

MH_PLUS [JP3]
オリジナルの MH.6.8.4 に対する、様々な機能拡張が利用できる ようになります。
  • pgped/pgpshow コマンドプログラムを PGP/MIME 対応に
  • ~/.mh_profile に「Trash-Folder: +trash」などと書いて おくと rmm はメールをゴミ箱フォルダに移動
  • message/rf822 を mhn -list すると、Subject: も見る様に
  • mhn に -junet オプションと、-8bit オプションを追加
…などです。

MIME
RFC1341 (MH.6.8.3 当時)に規定されているマルチメディアな メッセージ(Multipurpose Internet Mail Extensions; MIME)を、 いくつかの MH コマンドプログラムがサポートする様になる 指定です。詳細は、miscellany/multi-media/READ-ME などを 参照して下さい。

[JP3] JP-3.x ではさらに MIME [RFC2045〜2049] まわりの fix/拡張を加えており、また、MIME ヘッダの language拡張 [RFC2231] にも対応しています。詳しくは doc-JP/{CHANGES, FAQ,FEATURES}.JP などを参照して下さい。
("options MH_PLUS" と "options MIME_HEADERS" も参照して 下さい)

MIME_HEADERS [JP3]
mh-format の拡張を行ないます。
  • RFC2047 header のエンコード関数 hencode()、 デコード関数 hdecode() を利用できるようになる。
    (いわゆる "MIMEエンコード"文字列の取り扱いが可能に)
などの拡張を行ないます。

MSGID
slocal で、何らかの理由により同じメッセージを重複して受取 ることが起きた場合、メッセージの Message-ID を基に NDBM を 用いてチェックする指定です。 <ndbm.h> ライブラリを使用します。

また、元の MH-6.8.4 では、ファイル locking に flock(2) 関数 を使用しているので、"options BSD42" が必要です。 (つまり、NFS 越しにはうまく働きません)

※ [JP3] 尚、JP-3.x では lockf() や fcntl() でも使えるように 変更しました…が、実行テストはしてません(^^;;)。

MSGPROT
(='"0644"')
メッセージファイルの default での permission を指定(変更) します。
例)「MSGPROT='"0600"'」

NOMHSEQ
private sequences を default とします。 これを定義しなければ、default で、sequence ファイル名は、 ".mh_sequences" となります。

OVERHEAD
MH コマンドプログラムが profile や context を読む際に、 ファイル記述子を経由で読むようにする指定です。 詳細は mh-profile(5) を参照して下さい。
尚、これを指定しておくと、MH コマンドプログラムから、他の MH コマンドプログラムを child process として呼び出す際にも、 ファイル記述子は close されずそのままなので処理速度が向上 する…らしいです:-)。

RPATHS
inc した際に、メッセージの UNIX "From " 行を Return-Path: に書き換える様にします。
※ 「UNIX From」自体、色々議論のあるところ…ですが。 また、通常、sendmail.cf では「H?P?Return-Path: <$g>」で あることが多いので、mailer の P オプションにも依存します。。

SBACKUP
(='","')
バックアップファイル名の prefix 文字列を変更します。
例) 「SBACKUP='"\\043"'」

TMA
TTI trusted mail agent (TMA と呼ばれるメールエージェント)を サポートします。TMA に関する詳細は、papers/trusted/ 以下を 参照して下さい。尚、TTI TMA 自体はパブリックドメインではない ですが、TTI TMA をサポートする MH はパブリックドメインです。

TTYD
TTYD (Terminal access daemon)をサポートする指定です。 これはもはやあまり使われてないので、お勧めしません(とのこと)。

UCI
UCI 内での統一設定であった様です。
  1. "_" と "#" を抹消されたファイルの接頭詞として認識する
  2. UCI group-leadership mechanism のサポートをする
  3. $HOME/.signature の1行目を "From:" ヘッダ のフルネーム 部分として使用します
    (但し、News システムでのこのファイルの 利用方法と異なるので何か問題が起きるかも)
※ UCI に所属してない場合は、指定する必要はないはずです。:-)

UK
scan コマンドプログラムでの日付の表示形式を default で 「UK-style date」とします。
UK-style date とは、例えば「7月24日」なら通常は「07/24」と 表記されるものを、UK では「24/07」と表記することです。

WHATNOW
refile, send, show, whom 各コマンドプログラムを起動する際、 引数でドラフト名を与えなくとも、whatnow コマンドプログラム が、現在編集中のドラフト名を環境変数 mhdraft から取得します。

YEARMOD
mh-format の %(year) 関数が、常に100以下の数値を返す様に する指定です。4桁の年数を扱えない様な mh-format(5) ファイル を使用している場合に指定して下さい。しかし、4桁を使える ものに変更するか、%(modulo 100) 関数を利用して 2桁の年数を 得るように書き換えたようがよいでしょう。

テスト・デバッグ用オプション

debug
(off)
MH の debug mode をサポートします。

retgest
(off) <off|on>
異なるコンパイルの MH での復帰(regression) テストをするとか、 MH コマンドプログラム中のホスト名やコンパイルデータを必要と しないとかなら、"on" にして下さい。
/* MH-plus project (mh-plus あっとまーく material.chem.eng.himeji-tech.ac.jp) */

→ Internet関連業績(笑)
→ MH-plus のぺーじ
→ MH のどうでもいいような趣味の講座


はやし はるひさ hayashi あっとまーく laic.u-hyogo.学術.日本
New


このページの最終更新日: 1999年 2月28日 日ようび 晴れ