
   *** this is the original idea.
   *** We save this for the future not to forget the original idea.



			fml5 project

 ǰ

	() fml5 == Fml Modular Listmanager based on perl 5
		(recursive definition)

	sendmail -> postfix Ū֤ץ
	㤨
		/etc/aliaes  .forward ϤΤޤ޻ȤĤŤ
		 sendmail.cf ϲᤷʤȤä᡼

		/var/spool/ml
		/var/spool/ml/ML̾

	Ȥ¤ϻĤȤ⤦
	ʳθߴݾڤ뤫Ϥʤ

	Q: ?     ~桼̾/fml/ML̾
	   suEXEC ߤʤΤ?

		桼ˤˤ륵оǤ uniqueness 
		ΤȤƤѤ


 fml.pl  wrapper 

	/usr/local/libexec/fml/$VERSION/ ...

	LDAP Ȥ SQL 򤷤٤ƤۤǤ > Netscape


 ᥤץǥ쥯ȥ곬ؤ
	( ߤ /usr/local/local/fml ˤ )
	ports, packages, RPM, .deb եɥꥣ(?)

   /usr/local/libexec/fml/

	/usr/local/libexec/fml/distribute		(ץ)
	/usr/local/libexec/fml/command		(ޥɽץ)
	/usr/local/libexec/fml/mead			(顼)
	/usr/local/libexec/fml/confirmd

		: --ctladdr ϤĤʤǤ DO NOT PARSE
		    ǤʤȵŪʽˤ
		   # 㤨 CGI Ǥ include-ctl եԽκ
		   s/distribute/command/g
		   ڤʤɤȤä(?)

   /usr/local/libexec/fml/emul/

	/usr/local/libexec/fml/emul/fml.pl
		--ctladdr ʤ /usr/local/libexec/fml/distribute 
		--ctladdr Ĥ /usr/local/libexec/fml/command ¹Ԥ

	/usr/local/libexec/fml/emul/XXX
	 	: emul/listserv


   /usr/local/lib/fml/
		ɥȤ perl module ʤɤ򤪤 ?

		/usr/local/lib/fml/doc/text/
		/usr/local/lib/fml/doc/html/
		/usr/local/lib/fml/doc/sgml/
		/usr/local/lib/fml/doc/pod/
		/usr/local/lib/fml/doc/man/
		/usr/local/lib/fml/doc/jman/

		/usr/local/lib/fml/lib/base/Proc.pm
		/usr/local/lib/fml/lib/CPAN/Mail/
		/usr/local/lib/fml/lib/Jcode/Jcode.pm
		/usr/local/lib/fml/lib/gnu/
		/usr/local/lib/fml/lib/3rdparty/

		/usr/local/lib/fml/messages/
		/usr/local/lib/fml/makefml/

		/usr/local/lib/fml/examples/
		/usr/local/lib/fml/examples/www/
		/usr/local/lib/fml/examples/databases/

		/usr/local/lib/fml/contrib/


 

   ( makefml Ȥ, virtual domain/host θ )

	/etc/fml/$domain/fml.cf
	/etc/fml/$domain/cgi.cf

	
		# makefml newml elena@fml.org
		# makefml newml elena@nuinui.net
	ȤäǥСɥᥤξ˴ñˤǤʤ?

   elena ML
	/var/spool/ml/elena/ե (: config.cf )
		# äɤ̾罸


   :include:/var/spool/ml/elena 

	"| /usr/local/libexec/fml/distribute /var/spool/ml/elena"

   :include:/var/spool/ml/elena-ctl 

	"| /usr/local/libexec/fml/command /var/spool/ml/elena"

   ƤӽФ

   Q: ¤ϼΤ1Ĥǡ$0 ǽʬ褦ˤƤƤ褤


 Ѳǽ

  Ȥ confirmation module 

	subscribe 󥸥	---> confirmation module
	ǥ졼		---> confirmation module
	confirmd		---> confirmation module

		/usr/local/lib/fml/lib/base/Confirm.pm


 ե

   
	perl Ǥ parser ʤ(perl ᤮뤫)
	1/0 Ϥyes/no Τۤޤ
	ɽǤʤ
	å򤷤Τ


   config.cf  # ڤ ( postfix Ȥʤ )

	# ϼưꤵϤ
	# myhomedir	= /var/spool/ml/elena

	myfqdn		= ahodori.fml.org
	mydomain	= fml.org

	mail_list	= elena@$mydomain
	control_address	= elena-ctl@$mydomain

	# Сꥹȴط
	members_maps		=	$myhomedir/members
	admin_members_maps	=	$myhomedir/members-admin

	# definition of recipients: fml uses recipient lists in this order
	# [a-z]+: Τ file: ϾάƤɤ
	# ɽǤ
	recipients_maps = 	$myhomedir/recipients
				file:$myhomedir/actives
				mysql:$sysconfdir/mysql.cf


	# makefml add κݤˤϤɤ maps 򥢥åץǡȤ뤫?
	#    ȤХեɲäǤäơmysql ؤǤϤʤ
	# XXX ̾Ť롼ɤʤȻפ > postfix
	# XXX äȤ褤̾
	recipient_database = $myhomedir/recipients


	# ʤ餺 use_*  *_type (?)
	use_verps	= yes
	verps_type	= qmail


	# ⡼ ( REJECT_POST_HANDLER 褦 )
	# distribute_mode	= 	forward
	distribute_mode		= 	forward_if_moderator_allow

	# $PERMIT_POST_FROM
	allow_post_from		= 	reject_system_accounts
					members_only
					reject

	# $PERMIT_COMMAND_FORM (?)
	allow_command_from	= 	reject_system_accounts
					members_only
					ignore

	#
	distribute_restrictions	= 	reject_system_accounts
					members_only
					reject

	command_restrictions	= 	reject_system_accounts
					members_only
					reject


	# դ˥ǥ졼  use_moderator (ˤѤ?)
	use_moderator		= 	yes
	moderator_type		= 	otp
	moderator_maps		= 	$myhomedir/moderators

	# LDAP
	LDAP::HOST		=
	LDAP::PORT		=



 եå

  ̰ƣ

	# hooks
	hooks			= 	$myhomedir/hooks.ph

  ̰ƣ

	=head1 configurations

	postfix ʤʤǤ衢ϡ

	=head1 hooks
	=cut

	# ߤ LOCAL_CONFIG ̤ܤˤʤ
	# HOOK


 ¿첽

	developpers ϥå¾첽ˤƤФ
	ǡ٤Ĥ˱Ѹθܤ񤫤ʤƤ⤤Ǥ

	λ塢ܿͤѤƤƤ⤽ ML ΥСͤΤ
	Ϥޤ饵ݡȤǤ

	ޤIETF Ǥǯˡ顼åʤɤ¿첽
	ȤΤǡMLM (MTA ɤ)ǤäƤ⡢¿줫ɬפȤ
	⤤ޤʤˤäƤ顼äˤޤɡ


 եΥɽ


	ߤ cf ǤꤷƤܤ¿
	ּ¤Ϥʹܤconfig.phꤵäƤΤ͡פϤ

 	ɤ줹
 	POST_RESTRICTION
 	COMMAND_RESTRICTION
 	REGISTRATION_TYPE	auto_confirmation (Ȥ?)

 ʳϥǥեȤΤޤޤˤʤ
 ܤʬ̤餤ʤΤ˾Ǥ

 ȤȤ

 	use FML::LoadConfig;
 	my $rcf = new FML::LoadConfig;
 	$rcf->load( /usr/local/fml/lib/$VERSION/etc/default_config.cf );
 	$rcf->load( /etc/fml/$DOMAIN/default_config.cf );
 	$rcf->load( /var/spool/ml/elena/config.cf );

  Ȥǥ󥰤򤷤ʤȤʤ褦ʵ

   ˥塼ŪѹȡϿդä > config.cf
