
	manipulate mail addresses

------------------------------------------------------------
1	Overview
1.1	addresses for ML
1.2	how severely fml checks the mail address 
1.3	authentication
1.4	recipients
1.5	not recipient but not postable address.
1.6	add a recipient not postable address
1.7	when "bye"

2	Email Address Check Rules and Security
2.1	Level of address check severity

Appendix A	Crosspost
Appendix A.1	Introduction
Appendix A.2	Crosspost Judgment Algorithm
Appendix A.3	Config.ph Configurations
Appendix A.4	Configuration file: @CROSSPOST_CF
------------------------------------------------------------


	../how_to_subscribe/

1	Overview

1.1	addresses for ML

In elena ML case,

	elena		for post			$MAIL_LIST 
	elena-ctl	for command			$CONTROL_ADDRESS
	elena-admin	MAINTAINER			$MAINTAINER

elena-ctl is called "control address".

1.2	how severely fml checks the mail address 

	$ADDR_CHECK_MAX

1.3	authentication

whether the address exists in $MEMBER_LIST (For example:
/var/spool/ml/elena/members).

1.4	recipients

addresses in $ACTIVE_LIST.

1.5	not recipient but not postable address.

add the address to $MEMBER_LIST not $ACTIVE_LIST. 
makefml helps you.

	% makefml add2members elena ADDRESS 
	% makefml addmembers elena ADDRESS

Contrarily each user subscribe the ML and sends "skip" to control
address.

1.6	add a recipient not postable address

To add ADDRESS to "actives" not "members" file,

	% makefml add2actives elena ADDRESS
	% makefml addactives elena  ADDRESS

Each user subscribe the ML usullaly.

1.7	when "bye"

nothing to do. 
fml removes all ADDRESS from actives and members.

2	Email Address Check Rules and Security

2.1	Level of address check severity

When fml.pl compares From: address and an address in member lists,
fml.pl recognizes the following four addresses as the same one in
default. That is fml.pl checks within three levels from DNS root.

	fukachan@titech.ac.jp
	fukachan@phys.titech.ac.jp
	fukachan@beth.phys.titech.ac.jp
	fukachan@exelion.phys.titech.ac.jp

If you check domains more severely, the levels from DNS root is
controlled by $ADDR_CHECK_MAX. If you check 4 levels, set up

	$ADDR_CHECK_MAX = 4;

If 4, 

	fukachan@phys.titech.ac.jp
	fukachan@beth.phys.titech.ac.jp
	fukachan@exelion.phys.titech.ac.jp

is the same but 

	fukachan@titech.ac.jp

differs from others.

Appendix A	Crosspost

Appendix A.1	Introduction

When mail is cross-posted over ML's, each ML driver passes them
through.  Hence the number of mails is amplified since each ML driver
runs independently. It is too sad;-)

There exist two solutions to avoid this.

   1	Interprocess communication between ML drivers over Internet.

   2	Each driver has ML server's member lists over a lot of ML's.
	Each driver determines delivery in considering such member lists,
	To: and Cc: fields in the mail to deliver.

When the communication or protocol fails in the case 1, mail loop
may occur over Internet.  In the case 2, we turn back again to the
current independent delivery. We avoid loops at lease.  We adopt
scenario 2.

Also in scenario 2, FML can interpret member lists for other ML
drivers though other drivers deliver mail irrespective of a ML or a
person address.  FML needs to know the ML's information to determine
cross post or not among ML's.

Appendix A.2	Crosspost Judgment Algorithm

Let ML's be a, b, c and the in-coming mail header be

	To:	a, b
	Cc:	c

To check whether we should deliver the current article to
aoi@chan.panic or not, FML proceeds the following steps:

	aoi@cha.panic is in ML "a"'s member list
	aoi@cha.panic is in ML "b"'s member list
	aoi@cha.panic is in ML "c"'s member list
	........

An article to aoi@chan.panic is delivered under the ML when the
address is found firstly in the steps above. If the address to deliver
is found firstly in "a" ML member list, the "a" ML driver delivers the
mail to aoi@chan.panic.  If ML is "b", the driver should not deliver
it.  This is cross post operation. It is important that ML servers run
independently. Each mailing list driver determines which address it
should deliver mail to.

How to reply depends on 

	1	each person's judgment
	2	person which posts an article determines Reply-To:

Appendix A.3	Config.ph Configurations

To support crosspost judgment, set 

	$USE_CROSSPOST = 1;

Of course, it is sad unless all related ML run under cross post
operations.

Appendix A.4	Configuration file: @CROSSPOST_CF

The configuration is

=
	ML Address		location of config.ph

FML requires config.ph and member lists (e.g. actives, members ...) 
for each ML. If you support for other ML drivers, you need to create
virtual config.ph for them.

Example: We determine judgment for elena ML by checking
/var/spool/ml/elena/config.ph and lists under /var/spool/ml/elena.

	elena@baycity.asia	/var/spool/ml/elena
	Freekick@baycity.asia	/var/spool/ml/Freekick


		INDEX

$ADDR_CHECK_MAX                            ...   2.1 
crosspost                                  ...   Appendix A 
@CROSSPOST_CF                              ...   Appendix A.4 
$USE_CROSSPOST                             ...   Appendix A.3 
