                إåν񤭴

------------------------------------------------------------
1	إåΤ
1.1	֥Ȥν񤭴
1.2	إåեɤͤ򥳥ԡ
1.3	إåեɤͤ򤢤ͤ˶Ūˤ
1.4	إåեɤä
1.5	إåեɤͤ򤽤Τޤ̤褦ˤ
1.6	ޥɤֻ᡼Υإåͤꤹ
1.7	إå̤(ǥե)
1.8	إå¤
1.9	RFC2369 (Ȥ list-post )

2	Ϣ
2.1	إåͤˤäƤ

3	㽸
3.1	Reply-To: äΤɤ줹Ǻ
3.2	fmlǤwelcome᡼subjectܸˤ
3.3	Ͽconfirmation᡼subject򤤤
3.4	Received: Ĥ
3.5	Date: Type ($DATE_TYPE)
3.6	ޥɤη̤桼ؤΥåΥإåΥޥ
3.7	ޥɥ᡼η̤Υ᡼ Reply-To: ѹ
3.8	Subject Tags; Subject:  (Elena 100) ʤɤΥĤ
3.9	Subject:  ([Elena:ID] եޥåȤȴ) [obsolete]
3.10	TAG [Elena:00001] θ޷οηѹ
3.11	TAG [Elena:00001]  0 ѥǥ󥰤ʤ
3.12	 Message-ID ˻Ȥ
3.13	ML ȼ Message-ID եޥå
3.14	 (TV꡼MLǻȤäƤޤ:-)
3.15	ĤΥ᡼󥰥ꥹȤʣѥɥ쥹
3.16	X-ML-Info: Ƥꤹ
3.17	To:  Rewriting 
3.18	NIFTYк򤹤뤫?(üԤNIFοͤ⤤, OBSOLETE?)
3.19	Errors-To:Ĥ
3.20	ReplyΥ᡼Υ֥Ȥ򿷤ݤ˥֥饱åȤ򳰤ʤ
3.21	Reply-To:  From: + $MAIL_LIST ꤹ   
3.22	Reply-To:  From: + $MAIL_LIST ꤹ(2)   
3.23	ݡѤΣͣ
3.24	 TAG ꥻåȤ(Mail ܤǤʬ褦)
3.25	Ƥ줿 Received:  X-Received: 

4	¤
4.1	إåեɤΥեޥå

5	إåΥޥ򤹤ؿ
5.1	إåեɤƤζ
5.2	إåեɤ򸵥᡼Τޤޤˤ
5.3	إåΥեɤ䤹 or 餹
5.4	ΥإåեɤΥԡ

Appendix A	
Appendix A.1	¤: Reply-To == MLɬפʻˤReply-Toꤹ륳ޥ
------------------------------------------------------------


1	إåΤ

fml ϣ̤ͣε䥳ޥɤη̤Τ餻᡼ʤɤΥإåΥե
ɤ¤ѤΥեɤκʤɤԤʤäƤޤFML 2.2 ʹ
ΥǥեȤϡReturn-Receipt-To  Received ̤٤ꤵ
Ƥޤإåΰڤäꡢդäˤconfig.ph &DEFINE_
ʤȤ ȤؿƤӤꤷƹԤʤޤ

1.1	֥Ȥν񤭴

	$SUBJECT_TAG_TYPE	[elena:00100] ߤʬ
See also: 3.8 

	$SUBJECT_TAG_FIGURE	       η

	MENU -> HEADER_CONFIG -> SUBJECT_TAG_TYPE
	MENU -> HEADER_CONFIG -> SUBJECT_TAG_FIGURE

1.2	إåեɤͤ򥳥ԡ
See also: 5.4 

	&COPY_FIELD(ԡ, ԡ);
  :

	&COPY_FIELD('Sender', 'X-Sender');

1.3	إåեɤͤ򤢤ͤ˶Ūˤ
See also: 5.1 

	&DEFINE_FIELD_FORCED(ե̾, );
  :

	&DEFINE_FIELD_FORCED("reply-to", "$From_address, $MAIL_LIST");

1.4	إåեɤä
See also: 5.3 

	&DELETE_FIELD(ե̾);
   :

	&DELETE_FIELD('X-Uja');

ǥեȤ $PASS_ALL_FIELDS_IN_HEADER ƤΤǸΤ
إå̤ꤷƤΥեɤä

1.5	إåեɤͤ򤽤Τޤ̤褦ˤ
See also: 5.2 

	&DEFINE_FIELD_ORIGINAL(ե̾);
   :

	&DEFINE_FIELD_ORIGINAL('reply-to');

1.6	ޥɤֻ᡼Υإåͤꤹ
See also: 3.7 

	&DEFINE_FIELD_OF_REPORT_MAIL(ե̾, );
   :

	&DEFINE_FIELD_OF_REPORT_MAIL('Reply-To', "Your Reply-To Address");

1.7	إå̤(ǥե)
See also: 4.1 

   $PASS_ALL_FIELDS_IN_HEADER = 1;

1.8	إå¤
See also: 4.1 

@HdrFieldsOrder Ȥ

1.9	RFC2369 (Ȥ list-post )

$USE_RFC2369 = 1;

XXX: fml 4.0 ǤϥǥեȤ on

2	Ϣ

2.1	إåͤˤäƤ

ϥإåν񤭴ǤϤʤե륿󥰥롼ĥ̿ᡣ
ܤϥե륿󥰤ξϤ򻲾ȤƤ
: subject ˤ路ʸ󤬤äƤ

   &DEFINE_FIELD_PAT_TO_REJECT('subject', '/FREE|SEX|ADULT|XXX/');

3	㽸

3.1	Reply-To: äΤɤ줹Ǻ

Q: ä᡼ Reply-To: äΥɥ쥹Τ
줿᡼뤬 Reply-To: ̤ͣˤʤޤ

A: ؾ˶Ū Reply-To: ̤ͣˤƤޤ٤ȤǲˤʤΤʤ

/var/spool/ml/elena/cf (PATHŬˤߤƤ)  
LOCAL_CONFIG ȤԤθ

   &DEFINE_FIELD_FORCED('reply-to', $MAIL_LIST);

Ƚ񤤤 config.ph ľƲľΤ㤨
   % cd /var/spool/ml/elena/cf
   % makefml update-config.ph elena

3.2	fmlǤwelcome᡼subjectܸˤ

fml-support: 07219

̤ͣHOMEˤcfȤեκǸ(LOCAL_CONFIGȤԤ)

$START_HOOK = q#

	&use('MIME');
	$WELCOME_STATEMENT  = "褦ءդ";
	$WELCOME_STATEMENT  = &STR2EUC($WELCOME_STATEMENT);
	$WELCOME_STATEMENT  = &mimeencode($WELCOME_STATEMENT);

#;

ȼʸ񤤤Ƥơξ

make config.ph

 config.ph Ĥʤ

3.3	Ͽconfirmation᡼subject򤤤

   "Subscribe confirmation request $ML_FN";

Τ褦 subject ͳ˥ޥΤϤäݤǤȤ
ΤϾ֤ˤäƤޤޤsubjectѤΤǡϺؿΤʤ
ޤƤޤäƤޤ

XXX  messages/$LANGUAGE/ ˲ФƳΥե뤫
XXX ѹǤ褦ˤˤ٤Ǥ礦͡¦餽ΤƤΥե졼
XXX 褦ˤȤϥ顼Ȥϰ̤꽪äƤ뤱ɤʳ...

: ǤϤ֤󤳤ʤ򤫤ʤȤʤ( not tested )

$CONFIRM_REPLAY_SUBJECT_FUNCTION = 'myGenConfirmReplySubject';

sub myGenConfirmReplySubject
{
    local(*e, *cf, $mode) = @_;
    local($s);

    if ($debug_confirm) {
	local(@c) = caller;
	&Log("GenConfirmReplySubject<$c[2]>: $mode") if $mode ne 'Default';
    }

    if ($mode eq 'Default') {
	$s = "Subscribe request result $ML_FN";
    }
    elsif ($mode eq 'Confirm::Confirmed') {
	$s = $CONFIRMATION_WELCOME_STATEMENT || $WELCOME_STATEMENT;
	# $s = "Newly added $From_address $ML_FN";
    }
    elsif ($mode eq 'Confirm::Error') {
	$s = "Subscribe with confirmation error $ML_FN";
    }
    elsif ($mode eq 'Confirm::GenPreamble') {
	$s = "$ML_FNϿγǧ";
	$s = &STR2EUC($s);
	# $s = "Subscribe confirmation request $ML_FN";
    }
    elsif ($mode eq 'IdCheck::syntax_error') {
	$s = "Subscribe confirmation errror $ML_FN";
    }
    elsif ($mode eq 'Confirm::expired') {
	$s = "Subscribe confirmation expired $ML_FN";
    }
    elsif ($mode eq 'BufferSyntax::Error') {
	$s = "Subscribe confirmation errror $ML_FN";
    }
    elsif ($mode eq 'BufferSyntax::InvalidAddr') {
	$s = "Subscribe confirmation errror $ML_FN";
    }
    else {
	&Log("GenConfirmReplySubject: unknown mode [$mode]") if $debug_confirm;
	"Subscribe request result $ML_FN";
    }
}

3.4	Received: Ĥ

FML 2.2 ʹߤǤ

    $SKIP_FIELDS  = 'Return-Receipt-To';

Ǥmakefml configΥ˥塼ˤޤ(ȤϤ)
2.1 ǤϻʸʤȤᤫ unshift(@HdrFieldsOrder, 'received');
ξԤ Received ǤϤʤ received ˤʤäƤޤäƤ
Ⱦ𤱤ʤΤޤ󤬡
RFC822 ȤƤʸʸϴطʤΤϤʤå;-)

Ūˡ֥ФǼȤޤǤOKʤ顢ԤǤäơ
桼ˤMLФ桼ޤǤʬ򸫤нʬ(;פʤ
ΤϸƤʤ)פȤۤ˴Ťǥե
Ǥ Received: ϤĤƤޤ󡣤ޤ too many hops ˤ륨顼
򤱤뤿ˤͭǤ

ǰΤ뤿ˤ

	&DEFINE_MODE("stdinlog");

Ȥ⡼ɻ꤬ޤϤ˥ե(var/logβ)
˻ĤƤޤ(ίʤΤդƤ)

ʤ Posted: (user Ф) Date: (Ф) ΰ㤤
򸫤ȥФˤɤ夯ޤǤλֺ(Network ŪˤɤΤ餤󤤤?)
狼ޤ
See also: 3.5 
See also: 3.5 

FYI: fml-support's ML Count: 01816, 01821 for the discussion

3.5	Date: Type ($DATE_TYPE)

fml 2.2  $DATE_TYPE Υǥեͤ original-date 
fml 2.1  received-date Ǥ

	̤ʤ餽Τޤ(ߴΤ) received-date Ʊˤʤ

	original-date
		Date:	
		Posted: ʤ

	received-date
	received-date+posted
		Date:	FML᡼Ȥä
		Posted:	Υ᡼뤽ΤޤޤDate:

	received-date+x-posted
		Date:	FML᡼Ȥä
		X-Posted:	Υ᡼뤽ΤޤޤDate:

	received-date+x-original-date
		Date:	FML᡼Ȥä
		X-Original-Date: Υ᡼뤽ΤޤޤDate:

	distribute-date
	distribute-date+posted
		Date:	FML᡼Ϥ᤿
		Posted:	Υ᡼뤽ΤޤޤDate:

	distribute-date+x-posted
		Date:	FML᡼Ϥ᤿
		X-Posted:	Υ᡼뤽ΤޤޤDate:

	distribute-date+x-original-date
		Date:	FML᡼Ϥ᤿
		X-Original-Date:	Υ᡼뤽ΤޤޤDate:

distribute-date  Date:  X-Mail-Count: Ʊ֤ˤʤ뤿ΤΤ
MUAǥȤȤ⤬ޤ

3.6	ޥɤη̤桼ؤΥåΥإåΥޥ
See also: internals 7 

ޥɤη̤桼ؤΥåΥ᡼إå

	$Envelope{'GH:field:'} 

ѹǤޤGH ȤɤʤΤ SMTP Library  
GenerateHeader() ȤؿǻȤ뤿Ǥإåեɤ
ӽ @HdrFieldsOrder ν֤Ǥ

Example:

ޥɤη̤Υ᡼ From: Υɥ쥹( signatureĤ)
Ѥ硣ʤ̾ From:  $MAINTAINER Ǥ

	$Envelope{'GH:From:'} = "uja@aoi.chan.panic (AOICHAN PANIC)";

From: $MAINTAINER ˸¤äƤ $MAINTAINER_SIGNATURE  signature Ĥ
뤳ȤϤǤޤޤ򵤤ˤʤ颬ˡľ
褤Ǥ礦Dynamic ɬפ 
$REPORT_HEADER_CONFIG_HOOKȤ褤
See also: hooks 3.11 

3.7	ޥɥ᡼η̤Υ᡼ Reply-To: ѹ

	&DEFINE_FIELD_OF_REPORT_MAIL('Reply-To', "Your Reply-To Address");

ϼƱǤ@HdrFieldsOrder Ƥեɤ
Ǥޤ

	$Envelope{'GH:Reply-To:'} = "Your Reply-To Address";

where the field is one of fields defined in @HdrFieldsOrder.
Backward compatibility ǻĤäƤѿ

	$FORCE_COMMAND_REPLY_TO = "address-you-want-to-use";

Ǥºݤˤ $Envelope{'GH:Reply-To:'} ؤƱǤ

3.8	Subject Tags; Subject:  (Elena 100) ʤɤΥĤ

FMLΥǥեȤΥǥݥꥷϡSubject: Ϥʤ᡼
륽եȤʷ˥եޥåȤΤ򥵡¦ǥեޥåȤ
٤ǤϤʤסͭ˻Ȥ⤷ʤΤ Subject:Τξ򸺤
ϤĤ٤ǤϤʤפȤΤǤ
աϥ᡼륤󥿡եץब
ݤȤ˴Ը٤ΤǤ

Subject: ˥Ĥ$SUBJECT_TAG_TYPE Ȥѿ˥פ
ޤʤߤ makefml config Ǥޤ

  $SUBJECT_TAG_TYPE		Subject: Ǥη

	TYPE    Subject Example

		Subject: 	 	(DEFAULT, FML recommends this)
	(:)	Subject: (Elena:100)
	[:]	Subject: [Elena:100]	(hml 1.6 compatibility)
	( )	Subject: (Elena 100)
	[ ]	Subject: [Elena 100]
	(,)	Subject: (Elena,100)
	[,]	Subject: [Elena,100]
	()	Subject: (Elena)
	[]	Subject: [Elena]
	(ID)	Subject: (100)
	[ID]	Subject: [100]

[]
ꤹ config.ph ǤϼΤ褦ʷꤵƤޤ

	$SUBJECT_FREE_FORM = 1;
	$BEGIN_BRACKET     = '(';
	$BRACKET           = 'Elena';
	$BRACKET_SEPARATOR = ' ';
	$END_BRACKET       = ')';
	$SUBJECT_FREE_FORM_REGEXP = "\\($BRACKET \\d+\\)";

 (Elena 100) ηˤʤꡢReply Υ᡼ (Elena 99) 
 (Elena 100) Ĥ褦ˤʤޤ

Another example: Subject: [Elena 100]

	$SUBJECT_FREE_FORM = 1;
	$BEGIN_BRACKET     = '[';
	$BRACKET           = 'Elena';
	$BRACKET_SEPARATOR = ' ';
	$END_BRACKET       = ']';
	$SUBJECT_FREE_FORM_REGEXP = "\\[$BRACKET \\d+\\]";

[ª]
$CFVersion 3 ˤä $SUBJECT_HML_FORM  config.ph  CFVersion
3 ΤΤȽꤵ줿$SUBJECT_TAG_TYPE = "[:]"; 
ޤߤǤϤǤ̵ѿǤ

3.9	Subject:  ([Elena:ID] եޥåȤȴ) [obsolete]

[backward compatible, obsolete]
Ụ̄ʤΤǸŤconfig.phȤäƤʤȤ⤫
˻ȤȤϤʤϤǤ(Ȥʤ褦)

	$STRIP_BRACKETS = 1;

Ȥ Subject [ML:fukachan] ߤʬ򥫥åȤ롣 
Subject: [Elena:ID] η뤿Ǥ

3.10	TAG [Elena:00001] θ޷οηѹ

	$SUBJECT_FORM_LONG_ID (5; the number > 1)

Subject:TAGοʬη롣5()ǥեȤ 
$SUBJECT_FORM_LONG_ID ˤ롣$SUBJECT_FREE_FORM ѻͭѿ
2 ʾ

:
Ĥ

	夬ǥեȤ $HML_FORM_LONG_ID ˤ롣
	$SUBJECT_HML_FORM = 1; λˤΤͭ

Ȥ⤢ޤߤǤ $SUBJECT_FORM_LONG_ID Ȥ٤
$CFVersion 3 ˤä $HML_FORM_LONG_ID  config.ph  CFVersion
3 ΤΤȽꤵ줿 $SUBJECT_FREE_FORM_LONG_ID; 
ѴޤߤǤϤǤ̵ѿǤ

3.11	TAG [Elena:00001]  0 ѥǥ󥰤ʤ

	$SUBJECT_FORM_LONG_ID = -1;

[] Τ
	$HML_FORM_LONG_ID = -1;
ͭǤϤޤ

3.12	 Message-ID ˻Ȥ

	$USE_ORIGINAL_MESSAGE_ID = 1; (default)

Ȥȸ᡼ˤä Message-ID ¸ƥإåˤĤޤ
줬ǥեȤεưǤ

References: fml-support ML's Count: 02687 򻲾

    References: fml-support: 02687
    
    original ̯ pattern  Message-ID ȤƤơ detect 
    ʤȤȷ͡ȤϤ⤨ʤΤ
    
    Ȥǽ⤢ ФäƤperlȤ͡
    
    fml ΤĤ硢åơ֥ͭ礭ȾʬˤʤäƤ
    ޤդȤΤΤǡȤͭ礭롣
    롼פȯˤɤΤ餤̤ޤ򤿤ɤФΤ
    ʤΤŪʵϤǤʤ
    
    ʬʬȤΤʤ֤ǥ롼פˤϤΤǤޤְ㤤
    ФϤȤ礬¿Ȥ꤬ʤɤΤǤ
    纹ϤʤϤ
    
    Ȥˤʤ褦ʵ롣

true ?

3.13	ML ȼ Message-ID եޥå
See also: hooks 3.2 


	&DEFINE_FIELD_FORCED('Message-Id', "ŬID");
ǲǤHOOKȤ񤤤Ƥޤ

Message-ID: uja@aoi.chan.panic ϼΤ褦 config.ph ˤǤ񤱤 
$body Ƥ @HdrFieldsOrder  : body: ŸޤΤ
HOOKȤʤ @HdrFieldsOrder  : body: ڤäƤϤޤ

&DEFINE_FIELD_FORCED('Message-Id', "uja$$\@aoi.chan.panic");

ϼƱ

$HEADER_ADD_HOOK = q#
   $body .= "Message-ID: uja@aoi.chan.panic\n";
#;

Another Example:
Message-ID: <19950518.01905.Elena.Lolobrigita@Baycity.jp>

$HEADER_ADD_HOOK = q#
   $body .= "Message-ID: ".
	sprintf("<%4d%02d%02d.%05d.%s>\n", 1900 + $year, $mon + 1, $mday, $ID, 
	"Elena.Lolobrigita@Baycity.jp");
#;

3.14	 (TV꡼MLǻȤäƤޤ:-)

config.ph  $APPEND_STARDATE = 1; Ȥȱ򤬤Ĥޤ:-)

	Date: Fri, 19 May 95 22:31:09  JST
	From: "No.6 Fukachan" <fukachan@phys.titech.ac.jp>
	Subject: Re: Nantonaku Leonard Nimoy 
	To: enterprise@phys.titech.ac.jp (Foreign TV Series ML)
	X-ML-Name: Prisoner

	body

ߤˤʤޤȥåFAQ  C program ΤäƤޤ
libstardate.pl Ϥ perl ǤǤ

3.15	ĤΥ᡼󥰥ꥹȤʣѥɥ쥹

ΰ̣ΤʹʤǤ()
:
Elena@phys.titech.ac.jp ȤML

	Elena@phys.titech.ac.jp
	Anna@phys.titech.ac.jp

ξƲǽˤ롣ꤷɥ쥹 config.ph  
@MAIL_LIST_ALIASES Ȥˤ餺񤤤Ʋ

  @MAIL_LIST_ALIASES = ('Elena@phys.titech.ac.jp', 
			'Anna@phys.titech.ac.jp'
		    );

ʤHOOKϤ⤦ɬפޤ&FixHeaders ǽ񤭴ϹԤʤ
ޤ

ʣΥɥ쥹(롼ץå˻Ȥ) @MAIL_LIST_ALIASES 
ɬפǤƬ $MAIL_LIST Ǥ

 Elena ˤʤƤ Anna ꤲƤƱ̤ͣȸʤ

	$MAIL_LIST 

򤽤ꤲΥɥ쥹ꤷޤѤȤ

	To:  Reply-To:

Υɥ쥹ˤʤޤ

ա @PLAY_TO, $Playing_to Τѿ̾Ǥѿ 
compatibility ΤἫưŪ @MAIL_LIST_ALIASES ޤ
 libcompat.pl Backward compatibility ΤΥɤޤ

3.16	X-ML-Info: Ƥꤹ

	&DEFINE_FIELD_FORCED('x-ml-info', "񤭤");

ǶŪ˻ꤹɤǤ礦ѿ

	$X_ML_INFO_MESSAGE

ǻꤷƤͥ褷 X-ML-Info: ˤĤǤ褦ˤʤäƤ
ޤǤʤϥ⡼ɤˤäŬ˺줿 user friendly 
Ƥդäޤ

3.17	To:  Rewriting 

2.1A (config.ph CFVersion: 3.2) To: Cc: ϸΥ᡼򤽤Τ
̤Ƥޤ2.2 ΥǥեȤ̤Ǥ

ΤᡢTo: եɤ $MAIL_LIST Ÿ졢ˣ̤ͣΥɥ
Ф褦ˤ뤳ȤǤޤmakefml config ML ѹǤޤ

Ͻ񤯿ͤĤ٤ΤǤäƣ̥ͣФˤ٤Τ
ϤʤǤ礦Ǥ櫓ʬͤ¿Τǡapparent-to: ˤʤ
ƤƸɤȤΤɤƤΣ̤ͣ褿᡼ʤΡȤ褯狼
᡼Τ˾ To: $MAIL_LIST Ĥ뤳ȤΤˤ褤
Ȥ⤤ޤ

ߤ $REWRITE_TO 
		ư
	0 	̤ (FML 2.2 default)

	1 	To:  $MAIL_LIST ޤޤƤOK
		To: ˤ $MAIL_LIST ޤޤƤʤ
			To: $MAIL_LIST,
			     To: 

		ˤ (FML 2.1 default)

	2 	To: $MAIL_LIST ˶롣
		To: θƤϼ롣

To: Cc: ȤΤϿʹ֤᡼񤯻ñʤصΤΤǡ
 SMTP ȤƤϤʤ̤ϤƤޤ󡣤Ǥ顢To: 
ϲΤ $MAIL_LIST ȤƤޤ

[­] ʤTo: Cc: ˽ʣƸ륢ɥ쥹ˤ̤
ˤޤȤưʬΤߤޤʣäƤⵤˤʤǤ

աʤ$NOT_REWRITE_CC  obsolete ˤޤ

3.18	NIFTYк򤹤뤫?(üԤNIFοͤ⤤, OBSOLETE?)

: ⤦ɬפʤ餷

	$USE_ERRORS_TO = 1;

Ȥ Errors-To: Ĥޤ$AGAINST_NIFTY Ʊ̣Ǥ 
$CFVersion 3 ǤϤʤʤޤ

NIFTY Ｑˤ⡢Errors-to Ȥ太ʬߤƤʤΤ;_;
config.ph 

	$AGAINST_NIFTY = 1

Ȥȥ᡼ʸ

	Errors-To: $MAINTAINER

Ĥޤ NIFTY Υ顼᡼뤬 $MAINTAINER ֤褦
ʤäƤޤʲˡǤ;_;
ʤΤϡߤʤʸ򤤤äľ뤳ȤǤ
Ǥ⡢ͤϥȤäƤʤ;_;ȤäƤͤǯ
餤ĤŤʤȤʤʤʤϤ

ʤ$ERRORS_TO  Errors-To: ʬ $MAINTAINER ѹǤޤ

3.19	Errors-To:Ĥ

RFC1123 ˵դä Erros-To: Ĥʤ $USE_ERRORS_TO = 1; 
$USE_ERRORS_TO = 1; if you append Errors-To:.

3.20	ReplyΥ᡼Υ֥Ȥ򿷤ݤ˥֥饱åȤ򳰤ʤ

: (Elena 100) Re:(Elena 99) xxxxxx ΤޤޤˤƤޤ

$SUBJECT_TAG_TYPE Ȥ鷺ʤ $SUBJECT_FREE_FORM_REGEXP = $NULL;

	$SUBJECT_TAG_TYPE = "";
        $SUBJECT_FREE_FORM = 1;
        $BEGIN_BRACKET     = '(';
        $BRACKET           = 'Elena';
        $BRACKET_SEPARATOR = ' ';
        $END_BRACKET       = ')';
	$SUBJECT_FREE_FORM_REGEXP = $NULL;

ƤȳưǤϤʤʤ롣
Τˤ(Elena 100)˥ޥåʤʤʤΤǡäȰ㤦

⤷㤦ɽˤƥޥåʤ褦ˤƤƤƱͤǤ

դȤƤ $SUBJECT_TAG_TYPE ʻѤƺʬ񤤤ƤϤޤ
$SUBJECT_TAG_TYPEȤfml ư config.ph ư
Ū˾򤷤ƤΤ config.ph Ǥñ˾񤭤Ǥޤ

3.21	Reply-To:  From: + $MAIL_LIST ꤹ   

$START_HOOK = q#
      &DEFINE_FIELD_FORCED("reply-to", "$From_address, $MAIL_LIST");
#;

You need to use a hook since From: address is dynamic variable, so
cannot define static setting in config.ph.

3.22	Reply-To:  From: + $MAIL_LIST ꤹ(2)   

fml-support: 06240

 ꤿ

   if Сʳ
	Reply-To: From:Υɥ쥹, ᡼󥰥ꥹ
   else
	Reply-To: ᡼󥰥ꥹ	

 config.phν񤭴ǤޤΤǤ礦

ѿon/offȤ̣ʤ no Ǥ
HOOK񤤤Ƥʤ yes Ǥ

config.ph ñʤperlΥץǤfmlΤˤ hook Ϥ
餻뤳ȤǤޤʣѿˤƤȤ꤬ʤΤ
ٰʾHOOKǤʤȤǡեfmlΤȤʬ
餹ȤȤǥˤʤäƤޤ
Emacs ߤʤȤäƤOK

$START_HOOK =q%
   if (&MailListMemberP($From_address)) {
	&DEFINE_FIELD_FORCED("reply-to", $MAIL_LIST);
   }
   else {
	&DEFINE_FIELD_FORCED("reply-to", "$From_address, $MAIL_LIST");
   }
%;

3.23	ݡѤΣͣ

Q:

Σ̤ͣǡ䤤碌ؤֻܥåմ֤ϢǷ
Ƥޤ

(1) ïǤƤǤ(Ƥ)
(2) ۿ줿᡼Фơ
   (A)֣̲ͣԤؤֿפ
   (B)䤤碌͡ܣ̲ͣԤؤֿ
  ñ˻Ȥʬ褦ˤޤ

 Reply-To Ĥޤ CC: ˸᡼ From: 򤤤Ƥ
(̾Τϥ᡼륽եȤˤ뤬)֤դĤֿפ (A)
ֿפ (B) ¸Ǥ롣

:

$SMTP_OPEN_HOOK = q#
    if ($Envelope{'h:Cc:'}) {
        &DEFINE_FIELD_FORCED('Cc', 
		$Envelope{'h:Cc:'}. ", ". $From_address );
    } else {
        &DEFINE_FIELD_FORCED('Cc', $From_address);
    }
#;

: ξΥݥȤ HOOK ȤȤǤȤ鷺˽񤯤 
      config.ph ɾ $From_address ͤޤʤΤǤ

3.24	 TAG ꥻåȤ(Mail ܤǤʬ褦)

㤨0:00򶭤
   Subject: [elena 00100] ֹưŪ 
   Subject: [elena 00000] ˤ

/var/spool/ml/elena ʲ seq, summary, log, spool ʤɤ
ƤޤʤǤ

: Υץ(shell script)12ˤޤ魯

   #!/bin/sh

   ml=elena
   date=`date -u +%C%y%m%d`

   /usr/local/fml/makefml lock $ml 60 &

   cd /var/spool/ml/$ml || exit 1

   for file in seq spool summary log
   do
       if [ -f $file ];then
          # mv $file $file.$date
          cp  $file $file.$data
         cp /dev/null $file
       fi
   done

3.25	Ƥ줿 Received:  X-Received: 

Q: 	Ƥ줿 Received:  X-Received: 
	ƥԡƤθ Received: Ͼä

A:

	&COPY_FIELD('Received', 'X-Received');
	$SKIP_FIELDS = 'Received|Return-Receipt-To';

[]

 Received: by hikari.fml.org (8.9.3/3.4W6+Hikari-2.1) with ESMTP id XAA17996 for <fukachan@sapporo.iij.ad.jp>; Wed, 6 Oct 1999 23:29:52 +0900 (JST)
 Received: from beth.fml.org (localhost.sapporo.iij.ad.jp [127.0.0.1])
 	by beth.fml.org (Postfix) with ESMTP id 1CE0EA6837
 	for <fukachan@fml.org>; Wed,  6 Oct 1999 23:29:52 +0900 (JST)
 X-Received: by hikari.fml.org (8.9.3/3.4W6+Hikari-2.1) with ESMTP id XAA17981 for <fukachan@sapporo.iij.ad.jp>; Wed, 6 Oct 1999 23:29:30 +0900 (JST)
 X-Received: by beth.fml.org (Postfix)
 	id 465B4A6838; Wed,  6 Oct 1999 23:29:30 +0900 (JST)
 X-Received: by beth.fml.org (Postfix, from userid 1106)
 	id 0DB1EA6837; Wed,  6 Oct 1999 23:29:29 +0900 (JST)
 Date: Wed,  6 Oct 1999 23:29:29 +0900 (JST)
 From: fukachan@fml.org (Ken'ichi Fukamachi)
 Reply-To: elena@fml.org
 To: fukachan@fml.org
 Message-Id: <19991006142929.0DB1EA6837@beth.fml.org>
 X-ML-Name: elena
 X-Mail-Count: 00207
 X-MLServer: fml 2.2; post only (only members can post)
 X-ML-Info: If you have a question, send e-mail with the body
 	"help" (without quotes) to the address elena-ctl@fml.org;
 	help=<mailto:elena-ctl@fml.org?body=help>
 Precedence: bulk
 Lines: 2

 test

 -- fukachan

4	¤

4.1	إåեɤΥեޥå
See also: internals 7 

fml ᡼뤪ӥޥɤη̤Τ餻᡼ʤɤΥإåΥե
ɤԤޤޤ餫ꤵ줿եɤΤߤ̤褦
Ǥޤ㤨Сեɤ¤ӽ @HdrFieldsOrder Ȥ
˽@HdrFieldsOrder ˽ФƤեɤΤߤ̲ᤵޤ
X-Faces Τ褦ʤäեɤ̤ʤ ʤɤΤ褦ˤǤ

$PASS_ALL_FIELDS_IN_HEADER Ȥѿꤹ @HdrFieldsOrder ˤ
եɤ̲ᤵޤ@HdrFieldsOrder ˤʤեɤϤν
֤ǥإå˸ޤ2.2ʹߤΥǥեȤǤϣǤ(̤)

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

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

: $SUPERFLUOUS_HEADERS Τ̾Ǥ
ʤ $PASS_ALL_FIELDS_IN_HEADER Ǥ $SUPERFLUOUS_HEADERS Ǥɤä
ȤäƤOKǤޤ makefml ϼưŪѴޤ($CFVersion 3.2)

 Received:  Return-Receipt-To: Ȥޤ($SKIP_FIELDS 
ѿƤեɤ̤ʤ)ΣĤΥեɤ
̤ˤŪ@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: ե)

Τ褦üŪ˻Ȥޤϸߴμ񤬶㳰Ǥ

5	إåΥޥ򤹤ؿ

5.1	إåեɤƤζ

SYNOPSIS:
	&DEFINE_FIELD_FORCED('field', "field-contents");

@HdrFieldsOrder ƤեɤФեɤƤ
ޤʤ

	$Envelope{'fh:field:'} = "field-contents";

ƱǤ
obsolete Ǥޥɥ饤 --fh:field="field-contents" Ʊ

: X-Ml-Info: Ƥ"񤭤"ꤹ롣
	&DEFINE_FIELD_FORCED('x-ml-info', "񤭤");
	&DEFINE_FIELD_FORCED('x-ml-info', "ML Information");

5.2	إåեɤ򸵥᡼Τޤޤˤ

SYNOPSIS:
	&DEFINE_FIELD_ORIGINAL('field');

@HdrFieldsOrder ƤեɤФ(MLФ
äƤΥإå)ˤƤեɤꤷޤ

	$Envelope{'oh:field:'};

ƱǤ
obsoleteǤ --oh:field  (ޥɥ饤)Ʊ

: To:, Cc:, Reply-To: 򸵤ƤΤޤޤˤ롣

	&DEFINE_FIELD_ORIGINAL('to');
	&DEFINE_FIELD_ORIGINAL('cc');
	&DEFINE_FIELD_ORIGINAL('reply-to');

To: Cc: եɤ򸵡ͤΤޤ롣

5.3	إåΥեɤ䤹 or 餹

&ADD_FIELD, &DELETE_FIELD ȤؿѰդƤޤ
: X-Uja դä롣

	&ADD_FIELD('X-Uja');

Cc: եɤȤĤʤɤʤ

	&DELETE_FIELD('Cc');

: 96/11/2 $NOT_USE_CC ޤ@HdrFieldsOrder ľܤ
 &DELETE_FIELD('Cc') ȤäƲ

إå˸֤פʾ @HdrFieldsOrder Ȥľܤ
뤷ޤ

: Ƭ X-Some-Thing Ĥ

	unshift(@HdrFieldsOrder, 'X-Some-Thing');

5.4	ΥإåեɤΥԡ

@HdrFieldsOrder ƤեɤФ

where the field is one of fields defined in @HdrFieldsOrder.

		&COPY_FIELD(field, new-field);
	Example:
		&COPY_FIELD('Sender', 'X-Sender');

Appendix A	

Appendix A.1	¤: Reply-To == MLɬפʻˤReply-Toꤹ륳ޥ

fml 2.x ǤϤΤޤޤǤϤޤ󡣻ͤޤǤ˼ϿƤޤ

    From:    Yuao Tanigawa <yuao@infonia.or.jp>
    X-ML-Name: fml-support
    X-Mail-Count: 01249
    
    ᡼ʸκǽˡ
    	# replyto myaddr@mydomain 
    
    Ƚ񤤤ơιԤ̾ʸϤ񤤤ƤС
    Reply-To ˤΥɥ쥹򥻥åȤƵޤ
    
      MLǤϡޤǡReply-ToΥɥ쥹ŪˤML
    ɥ쥹˽񤭴ʤ褦ˤƤΤǤǶᡢĤ
    Reply-To˼ʬΥɥ쥹񤤤ƤͤȤơReply-To
    ˤϥɥ쥹񤫤ʤ褦ˤȸȡ᡼륽եȤλȤ
    Ȥ褯ΤʤơReply-ToΥɥ쥹ˡȤΤ
    ʤͤȤꤷơʳعȤǤοͤȤΤʤ
    ˡɤ褦ʤʤäΤǡReply-ToˤϡŪ
    MLΥɥ쥹񤯤褦ˤޤ
      Ǥ⡢ɬפʤȤˤReply-To˥ɥ쥹Ǥ
    ʤΤǡʲΤ褦ˤơ# replyto ޥɤȤ褦
    Ƥߤޤ
    
      config.phǡ$SMTP_OPEN_HOOK ˤϡ
    
        $Envelope{'h:reply-to:'} = $Reply_to
                = $Envelope{'command:reply-to:'} || $MAIL_LIST;
    
    Ȥơ$COMMAND_HOOK ˤϡ
    
        if(/replyto/io) {
            &Log("Set Reply-To: $Fld[2]");
            $e{'command:reply-to:'} = $Fld[2];
            $e{'Body'} =~ s/#\s*replyto\s+\S+\n//io;
            &Distribute;
            last GivenCommands;
        }
    
    Ȥޤξ硢$COMMAND_HOOK ΥȤˡ
    `#'椬ȤʤǤ
    
Ǥ⥳ޥɤǼʤƤ⤨󤫡᡼ʸƬ
Reply-To: address ä餽ꤹ롣

$START_HOOK = q!
    local($pat) = '.*\s*reply-to:\s*';
    local($s);
    if ($Envelope{'Body'} =~ /^$pat(\S+)/i) {
	&DEFINE_FIELD_FORCED('reply-to', $s=$1);
        &Log("reply-to: <$s>");
	$Envelope{'Body'} =~ s/^$pat\S+\n//io;
    }
!;


		INDEX

[Elena:ID]0ѥǥ󥰤򤷤ʤ            ...   3.11 
[Elena:ID]ȴ                           ...   3.9 
$APPEND_STARDATE                           ...   3.14 
$DATE_TYPE                                 ...   3.5 
&DEFINE_FIELD_FORCED('x-ml-info', "񤭤");   ...   3.16 
Errors-To:                                 ...   3.18 
--fh:field                                 ...   5.1 
$FORCE_COMMAND_REPLY_TO                    ...   3.7 
GenerateHeader()                           ...   3.6 
&GenerateHeader()                          ...   3.6 
'GH:field:'                                ...   3.6 
'GH:Reply-To:'                             ...   3.7 
@HdrFieldsOrder                            ...   4.1 
$HML_FORM_LONG_ID                          ...   3.10 3.11 
libstardate.pl                             ...   3.14 
@MAIL_LIST_ALIASES                         ...   3.15 
$MAINTAINER                                ...   3.6 
$MAINTAINER_SIGNATURE                      ...   3.6 
Message-ID                                 ...   3.12 
Message-ID ȼեޥå              ...   3.13 
$NOT_USE_CC                                ...   5.3 
--oh:field                                 ...   5.2 
$PASS_ALL_FIELDS_IN_HEADER                 ...   4.1 
@PLAY_TO                                   ...   3.15 
$Playing_to                                ...   3.15 
Posted:(user Ф)Date:(Ф)κ   ...   3.4 
Received: Ĥ                           ...   3.4 
replyto ޥ                           ...   Appendix A.1 
StarDate                                   ...   3.14 
STAR TREK                                  ...   3.14 
$STRIP_BRACKETS                            ...   3.9 
$SUBJECT_FORM_LONG_ID                      ...   3.11 
$SUBJECT_FORM_LONG_ID                      ...   3.10 
$SUBJECT_FREE_FORM                         ...   3.8 
$SUBJECT_TAG_TYPE                          ...   3.8 
Subject[Elena:ID]ȴ                ...   3.9 
$SUPERFLUOUS_HEADERS                       ...   4.1 
$USE_ERRORS_TO                             ...   3.18 
$USE_ORIGINAL_MESSAGE_ID                   ...   3.12 
$X_ML_INFO_MESSAGE                         ...   3.16 
XMLCOUNT                                   ...   4.1 
$XMLNAME                                   ...   4.1 
ޥɤREPLY᡼Υإå              ...   3.6 
إåեɤΥեޥå           ...   4.1 
إåΥեɤ䤹 or 餹       ...   5.3 
ʣѥɥ쥹                       ...   3.15 
