[PREVIOUS CHAPTER] [NEXT CHAPTER]
4 内部構造

4.1	ヘッダ・フィールドのフォーマット
../internals 7.0

fml は配送メールおよびコマンドの結果を知らせるメールなどのヘッダのフィー
ルドの成形を行います。またあらかじめ設定されたフィールドのみを通すよう
に設定できます。例えば、フィールドの並び順は @HdrFieldsOrder という変
数配列に従い、@HdrFieldsOrder に出てくるフィールドのみを通過させます。
X-Faces のようなうざったいフィールドは通さない などのようにです。

$PASS_ALL_FIELDS_IN_HEADER という変数を指定すると @HdrFieldsOrder にな
いフィールドも通過させます。@HdrFieldsOrder にないフィールドは入力の順
番でヘッダに現れます。2.2以降のデフォールトでは1です(素通し)。

	$PASS_ALL_FIELDS_IN_HEADER = 1; (path through, 1 is default)

* fml 2.1 is "0", fml 2.2 is "1".


ただし Received: と Return-Receipt-To: は切落とします($SKIP_FIELDS と
いう変数で定義されているフィールドは通さない)。この2つのフィールドを
通すには明示的に@HdrFieldsOrder に定義する必要があります。
Return-Recipient-To は当然として Received: は MAX HOP を越える場合に備
えてです。

フィールドの種類と順番に凝る場合:-)は @HdrFieldsOrder を config.ph 等
で定義しなおしてください。

@HdrFieldsOrder のデフォールトは (1998/08/10, 2.2BETA#1)

    @HdrFieldsOrder =	# rfc822; fields = ...; Resent-* are ignored;
	('Return-Path', 'Received',
	 'Date', 'Posted', 'X-Posted', 'X-Original-Date',
	 'From', 'Reply-To', 'Subject', 'Sender', 
	 'To', 'Cc', 'Errors-To', 'Message-Id', 'In-Reply-To', 
	 'References', 'Keywords', 'Comments', 'Encrypted',
	 ':XMLNAME:', ':XMLCOUNT:', 'X-MLServer', 
	 'XRef', 'X-Stardate', 'X-ML-Info', 
	 'X-Mailer',
	 ':body:', ':any:', 
	 'X-Authentication-Warning',
	 'Mime-Version', 'Content-Type', 'Content-Transfer-Encoding',
	 'Content-ID', 'Content-Description', # RFC2045
	 'Precedence', 'Lines');

のように定義されています。X-Authentication-Warning は PICKY_HELO_CHECK
(sendmail) 等で Security の Warning がつくので通すようにしました。

また @HdrFieldsOrder 中では

	:body:
	:any:
	:XMLNAME:
	:XMLCOUNT:

の特殊な変数が使われています。それぞれ

	:body:		$body を展開する場所
			$SMTP_OPEN_HOOK や $HEAD_ADD_HOOK 等で独自ヘッダを
			$body で定義した場合等に使われる(Backward Compatible)

	:any:		$PASS_ALL_FIELDS_IN_HEADER の時 @HdrFieldsOrder
			に明示的に現れないフィールドを展開する場所

	:XMLNAME:	$XMLNAME を展開する (X-ML-Name: フィールド)

	:XMLCOUNT:	$XMLCOUNT を展開する (X-Mail-Count: フィールド)

のような特殊な目的に使われます。これらは互換性の趣が強い例外処理です。


[PREVIOUS CHAPTER] [NEXT CHAPTER]