
			imput マニュアル

1. 概要

o メールやニュースのメッセージを SMTP/NNTP 経由で発信します。
  (To:, Cc: などのヘッダがあればメールとして SMTP 経由で発信し、
  Newsgroups: ヘッダがあればニュースとして発信します。)
o 複数の SMTP/NNTP サーバが指定でき、あるサーバに障害が発生しているような
  場合でも、指定したサーバのリストの中から利用可能なサーバを見つけます。
  また、サーバごとにサービスポートを変更することもできます。
o ヘッダ部の日本語を MIME (RFC2047) 形式に変換することができます。
o EUC/SJIS で書かれた日本語を JIS に変換することができます。
o 8bit コードを含むメッセージの本文を quoted-printable もしくは base64 に
  変換します(RFC2045)。
o 発信エラーが発生した場合は Delivery Status Notification 形式 (RFC1891,
  RFC1892, RFC1894) のエラーメールを生成します。
o MIME Message/rfc822 形式カプセル化 (RFC2045) による BCC (blind carbon copy)
  を発信します。
o DCC (distribution carbon copy) (BCC 的カプセル化をせず、ヘッダにアドレスを
  表示しない宛先指定方式) をサポートします。
o MH 形式の FCC (folder carbon copy) をサポートします。
o Message-Id:/Date: ヘッダを生成します。
  (したがって、FCC したメッセージにも、同一 Message-Id:/Date: が残ります。)
o "list:;" (RFC822) 形式のアドレスが利用できます。
o "group:u1, u2;" (RFC822) 形式のアドレスが利用できます。
  (メールは u1, u2 に送られ、ヘッダは group:; に書き換えられます。)
o "group:/file;" (非標準) 形式のアドレスが利用できます。
  (/file に記述されたメールアドレスを読み込み、それらのアドレスに向けて
  メールを発信します。ヘッダは group:; に書き換えられます。)
o サイズの大きなメッセージは MIME Message/partial 形式 (RFC2045) で分割
  させることができます。
o 個人レベルのメールアドレスのエイリアスをサポートします。
  (MH の alias 形式)
o 個人レベルのドメインパートのエイリアスをサポートします。
  (BIND の hostalias 形式)
o メッセージの発信履歴が記録されます。
o MH的 annotation がサポートされています(Forwarded: を除く)。
o ESMTP の SIZE, DSN (新しい Return-Receipt-To: の仕組み) をサポートして
  います。
o MH の send コマンドや UCBMAIL などから起動される sendmail の代りとしても
  利用することができます。


2. 利用方法

o Mew
	Mew のドキュメントを読んでください。

o シェルから直接起動
	imput [オプション] [宛先のリスト|メッセージファイルのパス]
	として起動します。

	[] は省略可能であることを示します。
	オプションについては、後述します。
	宛先のリスト|メッセージファイルのパス は、どちらかを指定する
	ことを示します。
	宛先リストは、メールアドレスを空白で区切ったものを指定します。
	宛先のリストを指定した場合で、メッセージファイルをオプションで
	指定しなかった場合は、標準入力からメッセージを読み込みます。
	メッセージファイルのパスは絶対パス表記で指定します。

o MH
	~/.mh_profile の sendproc に imput を指定して下さい。
	例:	sendproc: /home/motonori/cmd/imput

o mh-e (ver.4 or later)
	(setq mh-send-prog "imput") を実行して下さい。

o UCB Mail
	環境変数 sendmail を設定して下さい。
	例:	setenv sendmail /home/motonori/cmd/imput (csh 等の場合)
	.mailrc に記述することもできます。
	例:	set sendmail /home/motonori/cmd/imput

o sendmail を直接起動するメールクライアント
	/usr/lib/sendmail (あるいは /usr/sbin/sendmail。これは OS によって
	異なる) をこのスクリプトに置き換えて下さい。
	メールの受信等のためにオリジナルの sendmail も残しておく必要がある
	場合は、パスを変えるなど各自工夫して下さい。

o inews を起動するニュースクライアント
	inews をこのスクリプトに置き換えて下さい。
	ただし -h 以外のオプションはサポートしていません。


3. オプション

   コマンドラインあるいは環境設定ファイルにて指定できるオプションを以下に
   示します。現在の設定は、imput --help で表示されます。
   なお、オプション名の指定において大文字小文字の区別はありません。

   オプションが引数を伴う場合の、引数の形式は以下の記号で示されます。

        <sw>     on か off を指定する(省略可能)
        <num>    数字を指定する
        <str>    文字列を指定する
        <str,>   文字列を指定する(複数指定する場合は、空白を入れず ',' で
                 区切る)

   以下に示すオプションは、コマンドラインで指定する形式になっていますが、
   すべてのオプション --Option=value は、環境設定ファイルにおいて
   Option=value と記述することができます。


[設定に関するオプション]

  --Help=<sw>		ヘルプメッセージを表示する。
  --Config=<str,>	ユーザレベル環境設定ファイル中の参照すべき定義ブロック
			名(case WORD という行から始まるブロックを参照させたい
			場合は <str> に WORD)を指定する。
			',' で区切って複数指定した場合は、複数のブロックが順に
			評価される。
			メッセージのヘッダから宛先情報等を抽出するように
			指定した場合(--ObeyHeader を指定した場合、あるいは
			--Message 等でメッセージファイルを指示した場合)は、
			メッセージ内の Config: ヘッダに定義ブロック名を指定
			することもできる。なお、指定した Config: ヘッダは、
			メッセージの配信時に削除される。
			環境設定ファイルの詳細については改めて説明する。
  --Require=<str>	初期化処理時に読み込ませる perl スクリプトファイルを
			を指定する。
  --Debug=<sw>		デバッグモードで動作することを指定する。
			全てのデバッグ情報が出力される。
  --DebugFlag=<str,>	デバッグ情報を出力させたい機能を指定する。
			ソースコード中の &debug("xxx") を true にしたい場合は
			xxx を指定する。
			複数指定する場合は、空白を入れずに ',' で区切って
			列挙する。
  --Verbose		verbose モードでの動作を指定する。

[サーバに関するオプション]

  --SMTPservers=<str,>	SMTP サーバおよびポートを指定する。
			形式は、「サーバ名[/リモートポート][%ローカルポート」で
			/リモートポート番号を省略した場合はSMTP(25)を使用する。
			複数のサーバを指定する場合は、空白を入れずに ',' で
			区切って列挙する。ローカルポートを指定すると、SSH
			のポート転送機能を利用する。
  --TryNextOnFatal=<sw>	恒久エラーが発生した場合であっても、-SMTPservers で
			指定されているサーバでまだ試行されていないものがあれば
			すぐにエラーにせずにそちら試行する。
  --NNTPservers=<str,>	NNTP サーバおよびポートを指定する。
			形式は、「サーバ名[/リモートポート][%ローカルポート」で
			/リモートポート番号を省略した場合はNNTP(119)を使用する。
			複数のサーバを指定する場合は、空白を入れずに ',' で
			区切って列挙する。ローカルポートを指定すると、SSH
			のポート転送機能を利用する。
  --EmgSMTPsvrs=<str,>	配送エラーが発生した場合で、かつ、SMTPservers に指定
			した全てのサーバにメールを送れなかった場合に試行すべき
			メールサーバを指定する。
  --Clientname=<str>	SMTP の際に HELO で名乗るホスト名を指定する。
  --ESMTP=<sw>		on:  SMTP サーバが ESMTP による通信が可能である旨を
			     提示しなかった場合でも、まず ESMTP を試みること
			     を指定する。
			off: 相手が ESMTP 受理可能であることがわかった場合のみ
			     ESMTP を利用する。
  --NewsPost=<sw>	on:  ニュースのポストを許可する。
			     (必要に応じてポストされる。)
			off: ニュースのポストを禁止する。
  --SSHServer=<str>    指定されたホストを SSH 中継サーバとして利用する。


[ヘッダの生成に関するオプション]

  --User=<str>		発信者のローカルパート(ユーザ名)を指定する。
			デフォルトではログイン名が利用される。
  --Name=<str>		発信者のフルネームを指定する。
			Full Name <User@FromDomain> の Full Name に利用される。
			デフォルトでは、パスワードファイルの GCOS フィールドの
			内容が利用される。
  --NameInComment=<sw>	off: From: Full Name <User@FromDomain> が生成される。
			on:  From: User@FromDomain (Full Name) が生成される。
  --Org=<str>		Organization: ヘッダにつける情報を定義する。
  --FromDomain=<str>	発信者のメールアドレスのドメインパートを指定する。
  --ToDomain=str>	受信者のデフォルトのドメインパートを指定する。
			受信者のアドレスに '@' 以下が指定されていなかった
			ばあいは、このドメインパートが補われる。
  --ObeyMTAdomain=<sw>	on: アドレスの '@' 以下が指定されていなかった場合に、
			    default domain を補う処理を imput で行わず
			    sendmail 等のMTA にさせることを指定する。
  --MsgIdDomain=<str>	Message-Id: を生成する場合に使用するドメインパートを
			指定する。
			指定しなかった場合は --FromDomain で指定されたものが
			使用される。
  --MsgId=<sw>		on:  Message-Id: ヘッダを自動生成することを指定する。
			off: Message-Id: ヘッダを自動生成しないことを指定する
			     (MTA により補われることになる)。
  --PidMsgId=<sw>	on:  プロセス番号もメッセージID文字列に含めることを
			     指示する。
			     1秒間に複数のメールを発信することがある場合に
			     指定することが望ましい。
  --UidMsgId=<sw>	on:  ユーザのログイン名の変わりに uid を使用する。
  --NoMsgIdForNews	on:  NNTP の際だけ Message-Id: ヘッダがサーバによって
			     生成されるようにする。
  --Date=<sw>		on:  Date: ヘッダを自動生成する。
			     Date: ヘッダを自動生成しない
			     (MTA により補われることになる)。
  --NewsGMTdate=<sw>	on:  GMT による日付を生成することを指定する。
			     ニュースでは GMT が推奨されているらしい(RFC1036)。
  --NScmpl=<sw>		on:  ネームサーバを利用してメールアドレスの
			     ドメインパートを補完することを指定する。
			     /etc/resolv.conf に定義された domain, search の
			     内容がリゾルバによって利用されることになる。
			off: ネームサーバを利用してメールアドレスの
			     ドメインパートを補完しないことを指定する。
  --AliasesFile=<str,>	メールアドレスを補完するためのエイリアスファイルの
			パスを指定する。
			',' で区切って複数のファイルを指定することも可能。
			例:
				alias1: u1
				alias2: u2@domain
				alias3: User-Three <u3@domain>
				alias4: 43, u5
				alias5: group:u6, u7;
				alias6: group:/address/list/file;
				 :
  --HostAliases=<str,>	ドメインパートを補完するためのエイリアスファイルの
			パスを指定する。
			',' で区切って複数のファイルを指定することも可能。
			例:
				alias1	realname1.domain
				alias2	realname2.domain
				 :
  --ShowRcpts=<sw>	on:  Apparently-To: ヘッダが MTA により付加されること
			     を許し、To: undisclosed-recipients:; ヘッダを
			     付加しない。
			off: To: undisclosed-recipients:; ヘッダを付加する
			     ことにより、MTA が Apparently-To: ヘッダを付け
			     ることを抑制する。
  --Subj=<str> (-s)	Subject: ヘッダに記載する文字列を指定する。
			すでに Subject: ヘッダが存在する場合は無視される。
  --ObeyHeader=<sw> (-t)on:  メッセージの受信者をヘッダから抽出することを
			     指定する。--Message 等の、送信したいメッセージ
			     ファイルを指示するオプションを指定した場合は、
			     自動的に on となる。
			     ニュースへの投稿も Newsgroups: によって起動され
			     る。
			     コマンドラインで受信者が指定されていても無視
			     される。
			off: ヘッダの To:, Cc:, Newsgroups: 等に書かれている
			     アドレスを実際の宛先アドレスとして解釈しないことを
			     指定する。
			     宛先等はコマンドラインで指定されなければならない。
  --AddHeader=<str,>	任意のヘッダを追加する。
			例: --AddHeader='X-Header: value'

[メッセージの配送動作に関するオプション]

  --MeToo=<sw> (-om)	on:  発信者にも (Dcc 的に) メールを送ることを指定する。
  --Dcc=<str,>		指定したアドレスに対して Dcc 的にメールを送る
  --Receipt=<sw>	on:  配送完了通知の返送を指定する(RFC1891 による)。
  --MIMEbcc=<sw>	on:  MIME  Message/rfc822 形式カプセル化 (RFC2045)
			     による BCC を発信することを指定する。
			off: カプセル化せずに BCC を発信することを指定する。
  --NewsCheck=<sw>	on:  To:, Cc: ヘッダが存在した場合はニュースには
			     ポストしないことを指定する。
			off: Newsgroups: ヘッダがあればニュースにポストする
			     ことを指定する。
  --Group=<str,>	ポストすべきニュースグループを指定する。
			ヘッダから情報を抽出させない場合に使用する。
  --Dist=<sw>		on:  redistribution モードにする。
			     Resent-*: という形式のヘッダが利用される。
  --DistMsg=<str>	redistribute するメッセージのパスを指定する。
			宛先はコマンドラインで指定するか、あるいは
			-Message で指定されたメッセージのヘッダで指定する。
  --SMTP=<sw> (-bs)	on:  SMTP 形式によるメッセージを受け付ける
			     (sendmail -bs 的動作でメールを受理)。

[メッセージファイルに関するオプション]

  --MailFolders=<str>	メールフォルダの置かれているディレクトリを指定する。
			ディレクトリの自動作成は行われない。
  --MsgMode=<num>	FCC 等によって生成されるファイルのモードを8進数で
			指定する。
			キューにファイルを生成する場合にも利用される。
  --FolderMode=<num>	FCC フォルダ(ディレクトリ)を作成する必要がある場合の
			モードを8進数で指定する。
			キュー用ディレクトリを作成する場合にも利用される。
  --Folder=<str>	メッセージの発信時に参照されるドラフトフォルダを
			指定する。
  --TrashMark=<str>	発信されたドラフトメッセージをリネームするときに
			ファイル名の前に付加すべき文字を指定する。
  --Message=<str>	送信するメッセージのパスを指定する。
			相対パス指定の場合は、-Folder で指定されたドラフト
			フォルダからの指定となる。
			絶対パス指定の場合は、-Folder で指定されたドラフト
			フォルダは無視される。
  --Fcc=<str>		発信メールを保存すべきフォルダ名を指定する。
  --FccPartial=<sw>	on:  FCC で保存する際に multipart/partial で分割
			     された形式のまま保存することを指定する。
# --FccDir=<sw>		FCC の保存形式を MH (ディレクトリ)形式にする。
#			保存しようとするディレクトリが存在しなかった場合は、
#			自動的に作成される。
# -FccFile		FCC の保存形式を mbox (単一ファイル)形式にする。

[日本語に関するオプション]

  --JPheader=<sw>	on:  ヘッダの JIS を MIME (RFC2047) 形式で符号化する。
			off: ヘッダの JIS を MIME (RFC2047) 形式で符号化
			     しない。
  --HdrQEncoding=<sw>	on:  ヘッダの符号化をQ符号化方式で行う。
			off: ヘッダの符号化をB符号化方式で行う。
  --NoHdrFolding=<sw>	on:  72文字/行程度の改行挿入を行わないことを指示する。
  --JPconv=<sw>		on:  EUC/SJIS -> JIS 変換を行なう。
			off: EUC/SJIS -> JIS 変換を行なわない。
  --DefCode=<str>	EUC/SJIS の自動判別ができないときのデフォルトコードを
			指定する(EUC/SJIS/8BIT)。
  --8to7=<sw>		on:  8bit コードの含まれるメッセージボディを 7bit に
			     符号化する。
			     8bit コードの割合により base64 と quoted-printable
			     のどちらかが自動的に選択される。
			off: 8bit コードの含まれるメッセージボディを 7bit に
			     符号化しない。
  --8BitLabel=<str>	まだ Mime-Version: ヘッダの存在しない 8bit コードを
			含むメッセージを発信する場合に、付加する MIME ヘッダ
			の CT に付けるラベルを指定する。

[本文の処理に関するオプション]

  --IgnoreDot=<sw> (-oi)on:  '.' のみの行をメッセージの終端と解釈しないことを
			     指定する。
			off: '.' のみの行をメッセージの終端であると解釈する
			     ことを指定する。
  --MultipartAdd=<str>	マルチパートのメッセージに追加する文書を指定する
			このオプションを複数回指定すれば、指定した順序で
			別々のパートとして追加されていく。
			元のメッセージがマルチパートでなければ自動的に
			マルチパートとなる。
			元のメッセージがマルチパートであれば、新たなパートが
			追加される。

[メッセージ分割に関するオプション]

  --Lines=<num>		サイズの大きなメールを分割する行数を指定する。
			分割は MIME Message/partial 形式 (RFC2045) によって
			行われる。
			0 を指定すると、分割は行われない。
  --Sleep=<num>		メッセージを分割する場合に、複数に分割された個々の
			メッセージの送信の間隔(秒)を指定する。

[キュー処理に関するオプション]

  --QueueDir=<str>	キューとして利用するディレクトリのパスを指定する。
			ディレクトリが存在していなかった場合は、自動的に
			作成される。
  --JustQueuing=<sw> (-odq)
			on:  メッセージを直ちにキューに保存する。
  --Queuing=<sw>	on:  サーバにメッセージを渡せなかった場合に
			     キューに保存する。
  --ProcessQueue=<sw> (-q)
			on:  キューに溜まっているメッセージを発信する。
  --QueueStatus=<sw> (-bp)
			on:  キューに溜まっているメッセージの状況を表示する。

[エラー処理に関するオプション]

  --Report=<sw>		on:  送信エラーが発生した場合にメールでエラーを通知
			     することを指定する。
			off: 送信エラーを端末に表示することを指定する。
  --Dead=<str>		エラーメールさえ発信できなかった場合に
                        メッセージを保存するファイルのパスを指定する
			(mbox 形式)。

[メッセージ発信履歴に関するオプション]

  --Annotate=<sw>	on:  References: あるいは In-Reply-To: ヘッダで参照
			されているメッセージに Replied: あるいは Resnet:
			ヘッダによる応答履歴を付加する(Forwarded: は未対応)。
  --Log=<str>		発信履歴を保存するファイルのパスを指定する。
			パスを省略した場合は履歴は保存されない。
			デフォルトは putlog で、~/.im/ に保存される。
  --Syslog=<sw>		on:  発信履歴を syslog に MAIL/INFO で送る。

  この他、MH の send コマンドや inews とコンパチブルないくつかのオプションが
  存在します。


4. 解釈される環境変数

  HOSTALIASES		--HostAliases の指定と同等
  SMTPSERVERS		--SMTPservers の指定と同等
  NNTPSERVERS		--NNTPservers の指定と同等
  ORGANIZATION		--Org の指定と同等
  MSGIDDOMAIN		--Msgid の指定と同等
  FROMDOMAIN		--FromDomain の指定と同等
  TODOMAIN		--ToDomain の指定と同等
  NAME			From: のコメントパートに利用される
  SIGNATURE		From: のコメントパートに利用される
			(NAME を上書きする)


5. ヘッダの取り扱い

5.1 メールの宛先

  ヘッダから宛先情報を抽出することを指定した場合、
	To:, Cc:, Dcc:, Bcc:
  から宛先情報が抽出されます。Bcc: に指定したアドレス宛のメッセージについては
  MIME message/rfc822 でカプセル化されます。これらのヘッダには、値として
  @MYSELF@ または @ME@ を指定することができます。これらの値を指定した場合、
  メッセージの発信者のアドレス (From: ヘッダに自動的に付与されるアドレス)
  に置き換えられます。

5.2 エイリアスの展開とアドレスの補完

  以下のヘッダのアドレスは、--HostAliases, --AliasesFile で指定されたファイル中
  の定義により書き換えが行なわれます。また、ドメイン部(@以下)が存在しない
  場合は --ToDomain に指定したドメイン部が補われます(-ObeyMTAdomain オプション
  を指定していない場合)。
	To:, Cc:, Bcc:, Dcc:, Resent-To:, Resent-Cc:, Resent-Bcc:, Resent-Dcc:

  以下のヘッダのアドレスは、--HostAliases, --AliasesFile で指定されたファイル中
  の定義により書き換えが行なわれます。また、ドメイン部(@以下)が存在しない
  場合は --FromDomain に指定したドメイン部が補われます(-ObeyMTAdomain オプショ
  ンを指定していない場合)。
	From:, Resent-From:, Reply-To, Resent-Reply-To, Errors-To,
	Return-Receipt-To:

5.3: Fcc:

  メッセージの発信時に Fcc: (あるいは --Fcc オプション) を指定すると、メッセー
  ジ発信が完了した後、指定されたフォルダにコピーが保存されます。フォルダの
  形式としては、ディレクトリの中に連番のメッセージ単位のファイルを作成する
  MH 形式と、一つのファイルに複数のメッセージを追加保存する mbox 形式が選択
  利用できます。

5.4 Date: と Message-Id:

  いくつかの UA (User Agent; メール送受信用ユーザアプリケーション)では、
  Date: や Message-Id: ヘッダの生成をそれ自身で行なわずに MTA(Mail Transfer
  Agent) に任せてしまっているものがありますが、その場合 Fcc: 等て手元に保存
  されるメッセージに Date: や Message-Id: ヘッダが付加されておらず、あとで
  メッセージの特定が困難になってしまう場合があります。imput では、デフォルト
  で発信時に生成するようになっています。

5.5 Sender: と Originator:

  送ろうとするメッセージにすでに From: ヘッダが存在し、値が自動的に付加される
  ものと異なっている場合は、Sender: ヘッダが生成され、設定されている発信者
  アドレスが付与されます。ただし、メッセージがニュースとして送出される場合は、
  Sender: でなく Originator: ヘッダが用いられます。

5.6 redistribute と Resent-*: ヘッダ

  redistribute モードで発信されるメッセージについて、その配送に関するアドレス
  等は、To:, Cc:, Dcc:, Bcc:, From:, Reply-To:, Sender:, Date:, Message-Id: の
  代わりに、Resent-To:, Resent-Cc:, Resent-Dcc:, Resent-Bcc:, Resent-From:,
  Resent-Reply-To:, Resent-Sender:, Resent-Date:, Resent-Message-Id: が利用
  されます。すでに、Resent-*: ヘッダが存在している場合は、それらのヘッダは
  Prev-Resent-*: に置き換えられてから、今回の配送に関するアドレス等が
  Resent-*: を用いて付与されます。

5.7 Return-Receipt-To: ヘッダ

  従来、着信通知を要求するには Retur-Receipt-To: ヘッダを付加することになって
  いました。この場合、ヘッダ情報に配送情報が混ざり込むためエンベロープとヘッダ
  の役割が完全に分離できていないことになります。RFC1891 では、着信通知もエンベ
  ロープの中で扱うことを定義しています。imput では、メッセージに
  Return-Receipt-To: ヘッダが存在した場合、エンベロープで着信通知を要求し、
  ヘッダ部から Return-Receipt-To: を削除します。ただし、受信者のメールサーバ
  までの経路上の MTA が全て RFC1891 をサポートしていなければ機能しないかも
  しれません。

5.8 ニュースへの投稿時のヘッダ処理

  Newsgroups: ヘッダが存在した場合、あるいは -Group オプションで投稿先ニュース
  グループが指定された場合は、メッセージのニュースへの投稿が行なわれます。

  ニュースの投稿の際には以下のヘッダが必須とされていますから、これらのヘッダの
  うちの一つでも存在しなければ、投稿処理は失敗します。
	From:, Subject:, Newsgroups:
  また、本文が空であってはなりません。

  ニュースに投稿する場合に、以下のヘッダがすでに存在しているとメッセージの
  受け付けが拒否されます(例えば INN 1.4 の場合など)。従って、imput では、
  ニュースへの投稿の際にはこれらのヘッダは自動的に削除します。
	Path:, Received:, Return-Path:, NNTP-Posting-Host:, Xref:,
  また、ニュースとメールの同時発信を制限する -NewsCheck オプションが指定
  されている場合、To:, Cc:, Apparently-To: ヘッダが存在した場合は、
  Newsgroups: ヘッダが存在してもニュースへの投稿は行なわれません。

  ニュースの投稿と同時にメールとしても送出する場合は、メールとして送出
  されるメッセージの Newsgroups: ヘッダは X-Newsgroups: ヘッダに置き換え
  られます。また、X-Newsgroups: が付かないようにして、メールの受信者に
  ニュースにも投稿されていることを伝えたくない場合には、BNewsgroups:
  ヘッダに、ニュースグループ名を指定します。

5.9 Config:

  ヘッダからアドレス等を抽出する場合、Config: ヘッダによって指定された
  設定ブロックが参照されます。

5.10 その他

  本文の行数をカウントしその値を示す Lines: ヘッダが生成されます。
  imput のバージョン情報が、X-Dispatcher: ヘッダで示されます。


6. エラー処理

  メッセージを SMTP サーバや NNTP サーバに渡そうとした際にエラーが返された
  場合は、エラー処理が行なわれます。一時エラーの場合で --Queuing オプションが
  指定されている場合は、メッセージはキューに保存されます。
  恒久的エラーの場合、あるいは一時エラーであっても --Queuing オプションが
  指定されていなかった場合は、エラーが発生したことがレポートされます。
  --Report=yes オプションが指定されている場合は、発信者のアドレスにメールに
  よってエラーが通知されます。ドラフトメッセージが --Message (同等のオプション
  を含む) によって指定されていた場合は、トラッシュ処理 (メッセージのファイル
  名の前に --TrashMark で指定した文字を追加する) が行なわれます。
  --Report=no オプションが指定されていた場合は、メールによるレポートは行なわれ
  ず、エラーメッセージをエラー出力に書き出すとともに、メッセージは dead.letter
  ファイルに保存されます。ただし、ドラフトメッセージが --Message (同等のオプ
  ションを含む) によって指定されていた場合は、トラッシュ処理は行なわれず、
  ファイルがそのまま残されます。また、dead.letter にも保存されません。
  どの場合でも、エラーは発信履歴ファイルに記録されます(発信履歴ファイルへの
  記録を抑制した場合を除く)。


7. 環境設定ファイル

個人の環境設定ファイルは、~/.im/Config です。
設定方法は、im コマンド群全てで共通です。
ただし、imput など config 選択設定ができるコマンドでは、case 行で設定
ブロックを区切ります。case 行はそこから設定ブロックが始まることを示し、
ブロックの名前は case に続けて記述します。ファイルの先頭から最初の
case 行までの間は default の設定として扱われます。
ファイルの後ろに default の設定を書きたい場合は case default とします。
複数のブロック名で共有できる定義は、config: bn1,bn2 のようにブロック名を
複数記述することでつくることができます。

設定ファイルのサンプルを以下に示します。

Lines=3000
#Name=中村 素典

SMTPservers=mail.econ.kyoto-u.ac.jp
NNTPservers=news.kuis.kyoto-u.ac.jp
EmgSMTPsvrs=localhost
FromDomain=econ.kyoto-u.ac.jp
ToDomain=econ.kyoto-u.ac.jp
Org=Faculty of Economics, Kyoto University, Japan

case mew
FromDomain=mew.org
ToDomain=mew.org
Org=Internet Message Group


8. キューの形式

--Queuing オプションが指定されていてメッセージの発信が失敗(一時的エラー)
した場合、または、--JustQueuing が指定されている場合は、メッセージがキュー
に蓄積されます。
メッセージは、--QueueDir に指定されたディレクトリに、連番で 1 から順に
メッセージ単位でファイルに保存されます。ファイルの内容は、

	内部状態保存用データ
	<空行>
	RFC822ヘッダ
	<空行>
	RFC822本文

という形式になっています。imput を --QueueStatus オプションを指定して
起動すると、キューに蓄積されているメッセージに関する情報が表示されます。
imput を --ProcessQueue オプションを指定して起動すると、小さい番号の
ファイルから順に配送を試みていきます。配送が失敗したメッセージは、
恒久的エラーでない限り、そのままキューに残されます。


9. 発信履歴(ログ)ファイルの形式

発信履歴ファイルには、1アクション1行で発信履歴が記録されます。
形式は、

	日付 時間 proto=[p] server=[s] id=[m] from=[f] to=[t] stat=[r]

で、[p], [s], [m], [t], [r] は以下の通りです。

[p]:	smtp	SMTP で接続
	esmtp	ESMTP で接続
	nntp	NNTP で接続
	fcc	FCC要求によるファイルへの書き込み
	queue	キューに関する処理
	dead-letter	配送の失敗により dead.letter への書き込み
	draft	ドラフトメッセージに関する処理

[s]:	接続したサーバ/ポート
	デフォルトのポートが利用された場合は、/ポート 情報は省略される
	エラーの場合は、最後に接続したサーバに関する情報が記録される

[m]:	Message-Id: ヘッダの値

[f]:	発信者アドレス
	Config: あるいは --config でデフォルト以外の設定が指定された場合は、
	() で設定名が付記される

[t]:	受信者アドレス または 書き込みフォルダ/ファイル
	複数ある場合は ',' で区切られる
	Bcc: に記述されたアドレス以外は、<> で囲まれる

[r]:	sent	配送の成功を示す
		サーバの返した受信プロセスIDなどの情報が () で付記される
	skipped	サーバへの配送が成功せず、次のサーバに処理を移したことを示す
	failed	配送の失敗(エラー)を示す
		失敗の理由が () で付記される
	queued	キューへの保存を示す
	preserved (ドラフトメッセージが)そのまま残されたことを示す


10. フック

個人的に特殊な処理を、imput の中で行わせるようにしたい場合のために、
imput スクリプト中ではフックとして以下のものが用意されています。

	$Hook_PreHeaderconv		ISO-2022-JP ヘッダ変換処理の直前
	$Hook_PreFinalHeaderProc	ヘッダの最終調整処理の直前
	$Hook_PreDispatching		配送処理の直前

それぞれの変数には呼び出すべき関数名を定義しておきます。
定義は、--Require で読み込ませる perl スクリプトの中で行います。


11. Known Bugs

  SGI の IRIX の一部では、メッセージの発信がうまくできないという問題が
  あるかもしれません。その場合は TcpTransaction.pm の中の以下の部分を探して、
  中央の行のコメント行を示す # を削除し、print $CHAN " "; を活かすように
  してみてください。

	## if you have mysterious TCP/IP bug on IRIX/SGI
	#		print $CHAN " ";
	## endif


[end of document]

