                ¤ˤĤƤʤ

------------------------------------------------------------
1	
1.1	ML Server Process Overview
1.2	Historical View
1.3	Policy
1.4	ǽγ
1.5	󥹥ȡ

2	fml εǽˤĤƤγ
2.1	Directory ¤
2.2	󥹥ȡ
2.3	ɥȤˤĤ
2.4	̥桼¤Ȥ
2.5	饤֥ꡦ⥸塼ȥʥߥåǥ
2.6	ե (config.ph)
2.7	ȼưϿ
2.8	ե: 󤻤ȤޤȤ
2.9	MIME  base64 ν 
2.10	⡼Ȥǣ̤ͣ뤳
2.11	.forward
2.12	Listserv/Majordomo
2.13	MTAȤ̿ (e.g. sendmail)
2.14	MTA᡼Ȥʤޥλ
2.15	ƥ
2.16	¾εǽ

3	Version Up ȸߴˤĤ
3.1	how to version up
3.2	ǽͭˤˤϡ
3.3	config.phθߴˤĤ
3.4	ߴΤΥ饤֥
3.5	FML 1.6 ΰܹԤˤĤ
3.6	FML 2.0 Ȥθߴ (get ޥ)
3.7	hml 1.6 Ȥθߴ

4	߷׻ؿˤ˴ؤ뤤Ĥιͻ
4.1	From: Ϥ٤Ƥǧ٤
4.2	ML̵¥롼פΥåᥫ˥
4.3	newsyslog(8)
4.4	Date: == Ф
4.5	Received: 
4.6	Return-Receipt-To: ٤

5	եޤȤؿ (mgetȤޤȤᤪǻȤ)
5.1	mget options (help file )
5.2	mget3 ΥǥեȤѹ
5.3	mget3 󥿡ե:ѥޥåά
5.4	ץΥѥ
5.5	mget3 ֤ץ
5.6	ޥɤñʤ륷󥿥å顼ηٹ򤹤
5.7	mget ֤Υե륵
5.8	mget ǻǤեκ
5.9	Mget Format: Unix From 
5.10	Mget Format: MIME/MultipartBNFɽRFC1521
5.11	Mget Format: MIME/Multipartθ
5.12	Mget Format: RFC934
5.13	Mget Format: RFC1153 digest 
5.14	Mget Format: 1153 Υޥ
5.15	Mget Format: lzh + ish option
5.16	SJIS ˥եѴ lzh + ish  lhz + uuencode option

6	FML Υץ
6.1	̥ͣФư (fml  sendmail ʬô)
6.2	Sendmail -> fml.pl ư
6.3	饤֥Υեõ (fml.pl  ARGV)
6.4	եΥ
6.5	fmlΥץ(STDINɤ߹ߤʳ)
6.6	fmlΥץ(裲ʳ, %Envelopeν)
6.7	fml process  lock  signal handling 
6.8	٥ȡ塼
6.9	åλ(flock Ǥʤ)

7	FML ˤǡ¤
7.1	ѿ̾ naming convention
7.2	ؿ̾ Naming Convention
7.3	%Envelope (ϥåơ֥)
7.4	ǡ¤ν
7.5	ǥ쥯ȥѿ
7.6	$TMP_DIR ˤĤ
7.7	ե뷲
7.8	ñʤˤѿ
7.9	ǻȤƤѿĴ٤ˤϡ

8	FML եΥեޥåȤȹ¤
8.1	members եΥեޥåȤȹ¤
8.2	actives եΥեޥåȤȹ¤
8.3	actives  members ΰ㤤
8.4	ʣΥСꥹȡʣꥹ
8.5	msendrc եΥեޥåȤȹ¤
8.6	ѥɥեΥեޥåȤȹ¤
8.7	FML󥹥ȡ maintenance  version up ˴ؤ

9	Security 
9.1	Security طδܻ
9.2	Security Check Routine
9.3	DNS Spoofing
9.4	Address Spoofing
9.5	SYN Flooding
9.6	Email ɥ쥹ɽRFC822
9.7	smrsh.c
9.8	access(2) 
9.9	Precedence Priority
9.10	4.4BSD vacation
9.11	File and Directory Permission Default
9.12	Directory Permissions
9.13	sendmail 8.8 ˤ check_* 롼륻åȤˤĤ
9.14	SMTP and Authentication
9.15	&system() function

10	饤֥ؿ
10.1	daemon (libutils.pl)
10.2	Sendmail (libsmtp.pl)
10.3	SendFile (libsmtp.pl)
10.4	NeonSendFile (libsmtp.pl)
10.5	Addr2FQDN              (fml.pl)
10.6	AddressMatch           (fml.pl)
10.7	MailListMemberP        (fml.pl)
10.8	MailListActiveP        (fml.pl)
10.9	Append2                (fml.pl)
10.10	AutoRegist             (libutils.pl)
10.11	ChangeMemberList       (libfml.pl)
10.12	ChangePasswd           (libcrypt.pl)
10.13	CheckMember            (fml.pl)
10.14	CmpPasswd              (libcrypt.pl)
10.15	CmpPasswdInFile        (libcrypt.pl)
10.16	Conv2mailbox           (fml.pl)
10.17	DecodeMimeStrings      (libMIME.pl)
10.18	Flock                  (fml.pl)
10.19	Funlock                (fml.pl)
10.20	GetID                  (libfml.pl)
10.21	GetTime                (fml.pl)
10.22	Lock                   (fml.pl)
10.23	Log                    (fml.pl)
10.24	LogWEnv                (fml.pl)
10.25	Lookup (fml.pl)
10.26	MailListActiveP	(fml.pl)
10.27	MailListMemberP	(fml.pl)
10.28	Mesg                   (fml.pl)
10.29	NewSyslog              (libnewsyslog.pl)
10.30	Notify                 (fml.pl)
10.31	RunHooks               (fml.pl)
10.32	ExecNewProcess		(fml.pl)
10.33	SecureP                (fml.pl)
10.34	SendBackInOrder     (libfop.pl)
10.35	SocketInit             (libsmtp.pl)
10.36	TurnOverW0             (libnewsyslog.pl)
10.37	Unlock                 (fml.pl)
10.38	Warn                   (fml.pl)
10.39	WholeMail              (fml.pl)
10.40	eval                   (fml.pl)
10.41	ipc                    (libutils.pl)
10.42	system                 (libutils.pl)

11	Porting to other Operationg Systems
11.1	Micro$oft NT 4.0
11.2	sys/ Directory

Appendix A	ѿ̾ؿ̾̾դδˤĤ
Appendix A.1	ؿ̾

Appendix B	some debug information
Appendix B.1	ɤƤͻҤ (ξ)
------------------------------------------------------------


1	

 ޤޤӾǤ 

 ¤ˤĤơfml ȯԸνϤǤ 
fml/doc/smm/ ΰǻʬ˰ܤƤȻפäƤ⤤Ǥ

-- ̥ͣФ߷ץݥꥷȤϤʤ

    routine work 򤤤˼ưǤ뤫

   ǽʸ¤ user  ̴ͣ ˤȤäƤμͳ٤򤢤

   ǥեȤñȥ桼ѤΥޥ(help 䵭μ
     󤻡ѹ/)

   ʳ͡ʵǽҤȤȤƤ
     ι٤ϴԤŪꤷʤФʤʤ
     ȤΤϴԤϲ򤷤ƤΤΤäƤ٤
     򤷤Ƥ뤫İϥƥŪˤ˾ޤ

    ġġ

1.1	ML Server Process Overview

̥ͣФܼŪ˥ե륿󥰤򤹤ΤǤ̰ͣΥ᡼뤬褿
ץ(MTA)鵯ư줤ʽ򤷤塢٤
(ML)СꥹȤץϤޤץब
ԤʤޤĤޤϣ̥ͣФܤǤϤޤ

[]

ۥ                                    ̥ͣФΥޥ

̤ͣΥСΥ᡼

   |
   V
  MTA (e.g. sendmail)  ------------------>     MTA (e.g. sendmail)

                                                |  kick off the ML server
                                                V

                                            ̥ͣ(ɥ饤ФȤ⤤)

                                                |  
                                                V

                                    MTA (e.g. sendmail)  ץ

                                             |  |  |  |  |  |
                                             V  V  V  V  V  V

                                             ̤ͣΥС

ץϾޤΤ褦ưޤ̥ͣФ̤Υ᡼ǤϤʤ
̿(̤ͣ򼭤롢εɤʤ)ޤ᡼򤦤ϡ
(ޥ)¹ԤƤη̤ꥯȤ֤ͤޤ

ޤ狼Ȥ̰ͣΥ᡼뤬褿̥ͣФϵưޤ
Ĥޤ""ˤǤΤꥢ륿ˣ̤ͣε(᡼)ɤߤ
ʤ͡㤨3֤˰ٲ3֤Υ᡼ޤȤɤ֤ޤȤ
ξ"Ū"ޤȤ(digest 2)¹Ԥץबư
ɬפޤFMLŪ˵ưʤФʤʤץෲ
cronȤڥ졼ƥ󥰥ƥब󶡤뵡ǽȤäƤޤ
See also: digest 2.17 
See also: digest 2.17 

1.2	Historical View

FML  Mailing List Server  package (Perl Scripts package) ǡ
ͤ Full Scratch ΤǤ
ޤCDROMĤˤ֡ĤβɡפεҤϴְä¬ʤΤǤ

줫̤ͣϤˤϤΤޤޣ̥ͣФ򥫥ޥƻȤ
ȤäƤˤϲ¤ PLATFORM ȤѤƤ餦Ȥꤷ
Ƥޤ

ǽȯü(ե꡼եȤˤ줺)

	bug äƤ륵С
	ǽ­ʤС
	ľ꼫ʬǽ񤤤ᤤ

ñˤäǤ(ޡ褯äǤ:-)

Ū hml 1.6 ȤäƤơե򥳥СȤ
ΤݤǤΤhml 1.6  emulation 褦ꤹ뤳Ȥ
Ǥޤ

1.3	Policy

Mailing List  Private Communication ˤġ(Filter) 
ȤŻ뤷Ƥ뤿ᡢǥեȤǤϥСΤߤƤ䥳
ɤȤ ȤͤºŤƤޤ

ץȤʾ routine work 򤤤˼ưǤ뤫
Ȥ䤹Ǥ뤫פǤΤˤ桼ˤߤ륤󥿡ե
ʤɤ͡ʥ󥿡ե󶡤ƹʤΤȤΤۤ
礦ǥեȤ

	ѤΥɥ쥹٤ȡإޥѤΥɥ쥹٤ꡢ
	Υɥ쥹MTA (e.g. sendmail) fml.pl ư

Ȥ֤Ǥزǽʸ¤ user  ̴ͣ ˤȤäƤμ
ͳ٤򤢤(ñǤ뼫ͳ٤Ǥݤ٤)٤Ȥ
ۤɵᤷȤǤη̤Ȥ

   եˤ sendmail.cf ʤߤ͡ѿƤ

ΤɮƬ

   ޥѤΥɥ쥹 listserv(majordomo) Ǥǽ

    sendmail ưƤʤƤ POP3 Ȥäƣ̤ͣ¹Ԥ

͡ʥ󥿡եѥå˼ϿƤޤ

̥ͣФȤΤϰִοʬϤʤñʤΤǤºݤˤϤ
ޤޤ㳰ȯޤ򤤤뤫ΥϥȤ
櫓Ǥޤ桼Ķˤ㤤ۼ뤿ˤޤޤʴؿ
ݡȤɬפޤ㤨 ish, lha ݡȤϤΰȤ
Ǥ礦

ƥŪˤ

   ɬפʤȤϤƤ⡢Ǥ⤷ʤ
   ǽäϴñ configuration ǡŪ˻ꤷʤ¤
     褭ˤϤäư٤ǤϤʤ

Ȥޤ줬

   뵡ǽONˤѿϤ뤬Ū˻ꤷʤ¤ONˤϤʤ
   ĤޤǥեȤǤ͡ʵǽOFFˤƤ롣	

ȤȤطʤǤ

¿ѿΤϡñˤѿͤѤǵưѤ
褦ˤ뤿Ǥޤˤ뤿Υ󥿡ե
ȴñ˽񤯤ȤǤޤ㤨 makefml Ǥmakefml Ȥ
ƤΥ󥹥ȡñѹǽǤ(ٰʾʣʤȤ
ǤäƲ)ޤĥWWW󥿡ե⤹񤱤Ǥ礦
(Ǥïʤ:-)

ƼﵡǽϤ줾Ū˱ǤߤƲ㤨Сؤ̤ͣΥ
ʺ٤Τ褦ʾϥޥɵǽƻȤ٤Ǥ礦

: ip-connection 륢ɥ쥹 (include եƤӽФɥ쥹)
˻Ȥϡmakefml config listname  ⡼ɻïǤPOST
ǽפˤ롣

	$PERMIT_POST_FROM = "anyone";

1.4	ǽγ

̥ͣФϤޤ
				ե(config.ph)ѿ
	_____________________________________________________

	ѤΥɥ쥹	$MAIL_LIST	
	ޥѤΥɥ쥹	$CONTROL_ADDRESS

ʤޤ̤ʾˤ(Ūͳˤ) hml 1.6 (ΤˤϤθ
Ĥ shell script) ȤФ Emulate ޤ̤ʾȤ 

	ѤΥɥ쥹==ޥѤΥɥ쥹
	($MAIL_LIST == $CONTROL_ADDRESS)

ޤ

̥ͣФθߤɽŪʵǽϰʲΤ褦ʤΤǤ

    ѤΥɥ쥹ȥޥѤΥɥ쥹 
	-- Chapter how_to_subscribe 6.1

	줾ˤĤƥ伫ưϿ
	ʤ̤ʾѤΥɥ쥹==ޥѤΥɥ쥹פ hml 1.6

    ͡ʼưϿ
	-- Chapter how_to_subscribe 4

	ҤΤɤΥɥ쥹ǡ x 4 x ƥޥѿ

    unsubscribe confirmation

	confirmation  bye/unsubscribe ޥɤǤѲǽ

    ⡼ȥᥤƥʥ/⡼ȴ
	-- Chapter remote_control 4

	PGP, ѥǧ
	-- Chapter encryption 4

    ͡ʥإåޥ
	-- Chapter header_rewrite 5

    ƥ: ¢ȥեå˥ (e.g. ᡼к)
	-- Chapter resource_control 2

	: ȥեåٰʾˤʤ
	̤ͣϥ᡼ưŪ˼դʤʤ

    ƥ: ե륿󥰥 (e.g. SPAM к)
	-- Chapter filter 4.1

	إåγƥեɤȤΥե륿󥰥

    ͡ʥޥ
	-- Chapter 5

	ե󤻤Υޥ mget ޥɤΤʥե
	Υݡ

    ޤȤᤪ
	-- Chapter digest 2

    SMTP(졼)
	-- Chapter smtp 3.1

    ¾(MIME)
	-- Chapter Japanese 2

    ̤ͣƤ줿HTML 4.0Ǻ롣thread⤹롣
	-- Chapter html_convert 1.1 html_convert 1

    Υ֡Expire
	-- Chapter daily 3 daily 5

    ʣΥޥɥ󥿡ե (listserv  majordomo style)
	ߤ listserv Τ褦ʥޥɤǽˤ
	-- Chapter utility_programs 3

ɬפ˱եǵǽɲá︺ԤȤǤޤ
ñʤΤ makefml ǲǽǤ

1.5	󥹥ȡ

Ȥꤢ٤塼˥󥰤ԤʤʤƤ褤ʤ

	make install

Ȥǡ󥹥ȡ򤷤ޤML κ

	perl makefml newml ̤ͣ̾

ǲĤǤޤ INSTALL Ȥե򸫤Ʋ

2	fml εǽˤĤƤγ

: 󥹥ȡ̤ͣκλˤĤƤξܺ٤ INSTALL.jp Ȥ
եɤǲ

2.1	Directory ¤

Ū directory 2ս꤫ʤޤ󥹥ȡ makefml ǻ
Ǥޤ󥹥ȡˡξܺ٤INSTALLȤե򻲾ȡ

	1 $EXEC_DIR ( makefml ǤäƤ) 
	  ¹ԥեȥ饤֥귲 (e.g. /usr/local/fml)

	2 $ML_DIR (e.g. /var/spool/ml)
	  ƣ̷ͣ /var/spool/ml/ ˺

	   /var/spool/ml/elena/		(elena ML)
	   /var/spool/ml/mirei/		(mirei ML)
	   /var/spool/ml/Freekick/	(Freekick ML)
	   /var/spool/ml/sakura/	(sakura ML)
	   /var/spool/ml/tomoyo/	(tomoyo ML)
	   /var/spool/ml/kerochan/	(kerochan ML)
	   ...

elena ML طƤΥե /var/spool/ml/elena/ ʲ˺ޤ
ե(config.ph)䵭ΥסƱͤǤʣΣ̤ͣ
 /var/spool/ml/ ʲ¤Ӥޤ

2.2	󥹥ȡ

Ū򤹤 makefml Ȥñʥ󥿡ե(CUI)ĤƤ
줬󥹥ȡ̤ͣκñѹǽˤƤޤ
ܤ INSTALL.jp 򻲾

鿴ԤˤϺǽϲɤäƥ󥹥ȡ뤹Τɤ狼ʤ
ΤǤȤꤢñʤΤϤǤǤϤǤܺ٤ˤĤƤ 
INSTALL.jp Ȥե򸫤Ʋ

ؤư򤹤뤫ݤ٤ˤĤƤ config.ph Ȥե
뤳ȤǤޤ֤䥹ס롢help եξ 
tar ish lha Τ褦 system Υޥɡ٤Τ褦ʤΤ⤹٤ hard
coding ǤϤʤ user ǤѿȤƤޤ
ѿꥹȤˤĤƶ̣ cf/MANIFEST 򸫤Ȥ狼ޤ

2.3	ɥȤˤĤ

PLAIN TEXT Ǥϥѥå doc/ ˤ餫ѰդƤޤREADME
 INSTALLޥ˥奢  HTML Ǥ Ѥä/doc/html/ βѰդ
Ƥޤ

ɥȤκǿǤ

	http://www.fml.org/fml/

ˤޤ

2.4	̥桼¤Ȥ

̤ʥ桼 㤨 daemon ưΤϥƥ幥ޤ
ޤ󡣤äư̥桼ǤУͣѤ̤ʥ桼Ѱդ
Υ桼θ¤FMLưΤ˾ޤޤ̾FMLץΥʡ
(桼) makefml Ǻ include ȤեνͭԤǤ
ޤ FML ϼ Trusted User 򵤤ˤɬפϤʤΤ daemon ư
ɬפ⤢ޤ

ᥫ˥ä򤹤MTA (e.g. sendmail) ϥ桼¤ư
 setuid() ԤʤΥ桼Ȥ fml.pl ưޤPOSIX 
 OS setuid() ȹԤʤ user  root ˸¤ޤ
ϤåȤ 4.4BSD ⤽ȤäƤ
ΤMTA setuid() 򤷤fml.plưץ餻
ϤˤդMTAˤޤƤޤ

sendmail ޤ setuid() ¹ԤǤʤ 4.3 BSD Ǥ fml.c  
compile ƻȤɤǤ礦makefml ǥ󥹥ȡ뤷Ƥ 
makefml ä Makefile Ȥ

	(shell prompt)% make fml

 fml  fml-ctl Ȥ¹ԥե뤬졢setuid ޤ
fml ѥɥ쥹fml-ctl ϥޥѥɥ쥹˻Ȥޤ

4.3BSD Ǥϰ̥桼 setuid() 줿ξ֤ setuid() ¹Ԥ
ޤPOSIX OSǤ ˴ʤǤ  fml  root 
¤ setuid ʤФʤޤfml, fml-ctl ɤˤƻȤ٤
ˤĤƼʤ礢ʤΥȤ⤷ϤΥޥδԤˤ
̤Ʋ

2.5	饤֥ꡦ⥸塼ȥʥߥåǥ

⥸塼ˤ뤳Ȥˤ

	ޥɤݼ
	ʬΥ⥸塼Ωݼ

뤳Ȥưפˤʤޤ⥸塼Ϥ٤ lib"module-name".pl Ȥ
ե̾Ǥ

ȤȤ SMTPʬΩݼ Ȥ櫓ǤϤʤޥʬڤ
ΥȤŪȤ⥸塼벽ǤߤǤɬפ˱ƥʥߥ
ǥ󥰤͡ʥ饤֥꤬󶡤Ƥޤեϰ
ޤ˻ȤΤϤΤ23Ĥ餤ǤϽ˰٤Ȥ
Ū꤬줿ΤߤˤȤʤ褦ʤΤǤ

⥸塼ϥ󥿡եͤѤʤΩݼǤޤ
contribution Ωݼ餵Ƥ륳ɤƱͤ˥饤֥ä
ޤ㤨 libtraffic.pl 

	libfml.pl δؿƤӤ󥿡ե˹碌С
	٤ user defined Ǻ

Ȥ褤Ǥ
ܤȤˤĤƥåƤޤfml master code tree ȤΩ
ݼ餵Ƥޤʴա

FML ϤΥ饤֥귲Τǡưե(config.ph)ǥ
ޥ褦ˤʤäƤޤΤ饤֥ꡦ⥸塼ϰ
ˤޤȤƤȡؤҤȤĤfmlʣΣ̤ͣ򰷤褦˳ĥư
ˤʤꡢޤ version up ڤǤmakefml ǥ󥹥ȡ뤹Ϥ
֤ˤʤޤ

:
	饤֥ /usr/local/fml β
	̷ͣ /var/spool/ml/each-ml/
	   (e.g. /var/spool/ml/each-ml/config.ph )

̤ͣǤϤʤŪΥФΤߤ dynamic loading 
ŪΥС٤ˤ뤳ȤñˤǤޤ
config.ph Υե̾ $LOAD_LIBRARY ꤹ

ˤꡢ

	ޥ ѥ
	ftp ѥ
	ftpmail  ѥ 
	᡼ request 򤦤URLȤ֤

ѥФꤹ뤳ȤǤޤ	

2.6	ե (config.ph)

ǤɤľܤʤƤ⤿ѿȥեå
ޥǤ褦ˤʤäƤޤޥǽѿ 
config.ph ˴ñȤȤ˽񤤤ƤΤǤѹ뤳ȤǹԤ
ޤŪʤΤˤĤƤ makefml ѹǤޤ

2.7	ȼưϿ
See also: how_to_subscribe 4 

ҤΤȤǥեȤ褿᡼ From: 򸫤ƥСå
ޤFML 2.1 ʹߤǤƤȥޥɤ줾ˤĤưʲ

	ïƤ
		ǤOK			anyone
		ϿƤС	members_only
		ǥ졼		moderator (how_to_subscribe 5)

	⤷ϿƤСʳ褿ˤϤɤ뤫
						reject
		ưϿ			auto_regist
		̵(Ԥ)	ignore

ǤޤǥեȤϤ

	СΤ(members_only) /ޥɤλ ǽ
	⤷Сʳ褿(reject)

ǤưϿ"ƤС"(members_only)ξ

	⤷Сʳ褿鼫ưϿ  auto_regist ѹ

뤳ȤǹԤʤޤưϿΥפ4ढޤ

2.8	ե: 󤻤ȤޤȤ
See also: 5 digest 2 

get, mget, matome Υޥɤˤϥץ tar.gz ǸǤƤȤ 
MIME/Multipart ǵޤȤ֤ߤѹǤޤ
mget  ޤȤᤪǤ User interface ϼΤ褦ʤΤ·
Ƥޤmget ޥ˻Ѥ뤳ȤǤޤ

	PLAIN TEST 
		UNIX FROM
		RFC934	
		RFC1153
		MIME/Multipart

	COMPRESSED FILE
		gzip UNIX FROM file
		tar + gzip
		uuencode

	   (ܻ)
		Lha + Ish 	(ưSJISѴ)
		Lha + uuencode 	(ưSJISѴ)

mget Ǽ󤻤ΤϥǥեȤ $SPOOL_DIR (default "spool") 
ǤоݤɸΣ̤ͣεסʳˤ @ARCHIVE_DIR ˻ꤹ뤳
Ȥ䤹ȤǤޤ

եαԤȤƥ桼 put  get Ǥ褦˳ĥ줿
ޥɤƤޤ(library ޥ)ǥեȤǤϡ
put ե̾ϥƥ٤ޤ󡣥ե̾Ū˻
ϰΤԤѹ٤Ǥ
See also: command 5.1 

2.9	MIME  base64 ν 
See also: html_convert 1 

᡼ʸϴṲ̄ǤSubject MIME decode ƥޥ꡼
ޤ(2.2Ǥϥǥե)ޤHTMLǤ base64 βѴ
ΥץϤƹԤʤޤĤޤ᡼ gif ե
Ѵƥ᡼ε html ޤ

2.10	⡼Ȥǣ̤ͣ뤳
See also: remote_control 4 
See also: encryption 4 

ǥեȤǤϤǤޤե

	$REMOTE_ADMINISTRATION  = 1;

ꤹȤǤ褦ˤʤޤ(makefmlǤǤޤ)
ԤȤϿ줿ͤФ

	From: ԤǤǧ
	԰ͤȤΥѥ	(̩Ź)
	PGP١Ǥǧ		(Ź)
See also: encryption 4 

ȹ礻ǧڤ򤷤ޤǥեȤ

	From: ԤǤǧ
	԰ͤȤΥѥ	(̩Ź)

Ǥɤʤ PGP١侩Ǥ:)

FML 1.0 ǡشԤƤ뤫ɤ?Ȥ˴ؤݾڤ
ʤ٤ȤͳǤϤ⡼ȴ(ɥߥ󥳥ޥ)Ƽ
ݡȤޤݾڤǤʤȤ̣ From: Ǥǧڤϴñ˵¤
뤫Ǥ

¿ξ̤ͣǤϥ⡼ϥѥɤǧڤƤޤʤ
顢᡼ǤʿʸѥɤɬפޤҤȤδ
ΥѥɤƱǻȤΤƤǤϤޤ(˱ä)äơ
ְäƥ᡼뤬ɤޤ줿ͤȴʤ櫓Ǥ

PGP١ǤϤοۤϤޤ(󤢤᡼ΤɤޤƤ
ФΥ᡼ƱƤ¹ԤϲǽʤϤǤ)

FMLΥ⡼ȴ⡼ɤǤϥѥɤϳƴԤȤǤޤ
PGPξϴ԰Ͱͤ public key 뤳Ȥˤʤޤ

ΤǰĤζ̥ѥɤȤ褦ʤϤޤ󡣤
̤ UNIX  ѥɥƥ Υߥ˥奢ǤǤ¦Ǥ 
$DIR/etc/passwd  ԤȤ˥ѥɤ¸Ƥޤ ݾڤٹ
夬ä櫓ǤϤޤ󤬡ѥɤ crypt ¸Ƥޤ
ĤƤ UNIX ٤ݾڤϤޤѥɤ¸ MD5 ˤ
ȤǤޤPGPǤMLȤ $DIR/etc/pgp/ ʲ keyringML
Ȥ̤PGPPATHѤޤ
See also: encryption 4 

2.11	.forward
See also: utility_programs 4 

̾ include եꤹΤ /etc/aliases Ǥ .forward 
ŪƱΤǤäȤ .forward ξ桼̾ʳΤΤȤ
ȤϤǤʤ櫓Ǥ include  .forward ꤹƱ
Ǥܺ٤ utility_programs 4

2.12	Listserv/Majordomo
See also: utility_programs 3 

   Listserv ߴѥ󥿡ե 	libexec/fmlserv.pl

fmlserv.pl Ƥ֤褦ˤ ޥɤ

	ޥ ͣ̾ ץ

ˤʤޤ褦 Listserv Τ󤿤ä fml ΥޥɤȤ
褦ˤ󥿡եǤ

	listserv:  fmlserv
	majordomo: fmlserv
	fmlserv: :include:/var/spool/ml/include/fmlserv

Τ褦ˤƤפǤ

2.13	MTAȤ̿ (e.g. sendmail)

FML sendmail  SMTPۿȤȼϤ̿ޤ

	$Envelope{'mci:mailer'} = 'ipc'; (default)

ξ $HOST ǻꤵƤޥSMTP ǥͥĥ
ޤ$HOSTΥǥեȤϼʬΥޥǡĤޤ꼫ʬΥޥ
ƤMTA̿ޤ

	$Envelope{'mci:mailer'} = 'prog';

ξ $SENDMAIL ȤѿΥץưƤ򤵤뤳
ȤǤޤ

SMTP 򤷤Ƥʤ sendmail ǤɬפʤѤ˻Ȥ
SMTP ưޤɬ⼫ʬΥޥ sendmail 
äƤɬפϤޤ󡣳ƥȤäƤSMTP򤷤Ƥ
ץबФ褤Ǥsendmail äƤޥ󤬰Ĥʤ
 sendmail ư褦 'prog' ꤹФ褤Ǥ

2.14	MTA᡼Ȥʤޥλ
See also: utility_programs 5 

դˤɤäƥ᡼Ȥ뤫Ȥ꤬ޤ̾ SMTP 
Ȥ륵ФäƤơ᡼Ȥ fml.pl Ϥޤ
аֳִ֤ POP 򤫤ƣ̤ͣưϥȤ SMTP 
Фˤ餻뤳Ȥǣ̤ͣ¹Ԥ뤳ϲǽǤ

2.15	ƥ

̤ͣΥȥեå˥ư쵤˥᡼뤬Ƥ᡼
ȽꤷrejectȤإå᡼ʸΥѥե륿
󥰤뵡ǽ⤢ޤܤ 9

2.16	¾εǽ

å flock ˤåǥեȤˤƤޤ flock() 
ưʤ UNIX V7  link() ˤåȤޤ

졼ФǤޤ㤨С̡̤ˤͤäơ
ޥĴãǤ硢̤Υ᡼󤽤Υޥ뤳ȤǴ
̤ؤ᡼ĤΥ᡼ǤäˤäơϤΥ졼
ˤޤȤǡ®Ǥޤ
: MTAǤSPAM꤬̤ǤΤǤФ޾
ޤ礦

ץХDISK¤äꤹϡŤϾäȤ
ޤΤμư̤ Expire εǽ򥵥ݡȤޤ

newsyslog(8) Ūǽ򥵥ݡȤƤޤŤϼưŪ

	members -> var/log/members.0 

Τ褦Ѵ¸褦ˤƤޤǥեȤǤ members ե
 ޤȤᤪΥФ newsyslog ¹ԤƤޤ
: % man newsyslog

ĤΥޥˤ ̴֤ͣΥݥ ξ硢
ʣΣ̤ͣäƤͤˤϰ̤ʤ褦ˤޤ
ȤˤޤϥǡΥ󥯥ɬפʤ¸ʳǤ

ޤǽȤơȥåα򥵥ݡ()ޤ
contrib/Utilities ˱Ĥmh, mh-e user interface Ĥ:-)Ǥ
See also: header_rewrite 3.14 utility_programs 6.26 

3	Version Up ȸߴˤĤ

3.1	how to version up

makefml Ȥäƥ󥹥ȡ뤷Ƥ餦Τμ¤Ǥmakefml λȤ
ĤƤ INSTALL.jp Ȥե򸫤Ʋ

3.2	ǽͭˤˤϡ

̾￷ǽץŪ˻ꤷʤ¤ưޤ
ѹ config.ph ǹԤʤޤܤ INSTALL.jp 򻲾ȡ

version up ưˤʤäǽȤʤɬפѿ op.jp ʤɤ
õդäޤǤˤ뤬ȤƤʤǽ򿷤ONˤ
ʤ config.ph 򥵡ͤ1ˤȤŬ񤯤ʤɤޤ

ŪѿǤ makefml Ǥޤmakefml Ȥζ¸ᥤ
ƥʥ󥹤ͤ $DIR/cf 򤤤 config.ph 褦ˤΤ
ȤʤäƤޤ"makefml config" Ȥʤʤ cf 򤤤餺 
config.ph ˼ưԽ뤳Ȥˤʤޤ

3.3	config.phθߴˤĤ

FML Ǥ config.ph Ȥե뤬񤤤ޤ
config.ph ˤ version Ȥǰޤ

	$CFVersion

ȤѿǻꤵƤޤߤ version  3.x Ǥversion 
ʤ硢ۤȤɤѿˤĤƼưŪä뤿κä 
config.ph 򤽤Τޤ޻ȤäƤפʤ褦ˤʤäƤޤ

config.ph Ǥäʣ HOOK 򤫤ƤϤäդ
礦ߴΤ˼Τ̤Ǥ⤽δؿ̾ĤäƤ뤳Ȥ¿Ǥ
HOOKǻȤؿѿǤ⥵ݡȤƤȤϸ¤ʤ
Ǥ

ǤߴݤĤ褦˺Ƥޤ

    config.ph  $CFVersion  3

Ǥʤ

   $MAIL_LIST  $CONTROL_ADDRESS 㤦 $MAIL_LIST εư

λϽȰۤʤѡ٤Ǥϸߴޤ󡣤


	$MAIL_LIST  $CONTROL_ADDRESS Ʊ
	ΤƱѤΥɥ쥹 $MAIL_LIST 
	ޥ(# command η)դޤ

 $MAIL_LIST != $CONTROL_ADDRESS ξ˥إåHELPǤϡ֥ޥ
ɤ $CONTROL_ADDRESS äƤ͡פȽ񤤤Ƥˤؤ餺 $MAIL_LIST 
Ǥ⥳ޥɤϼ줿ȤѤʵưޤߴȲ
뤫ХȲ᤹뤫̯ǤFML 2.1 ʹߤϥ롼
Ƴ˾嵭βˤʤޤ

______________________________________________________
[ɽ]

	elena		
	elena-ctl	ޥɤ

ˤʤޤ2.1 ꡼(2.1 Gamma series)Ǥ 

	elena		⥳ޥɤ
	elena-ctl	ޥɤ

Τ褦˿񤤤ޤelena ǤΥޥɤΡȥޥɤڤʬ
ϥ᡼ʸ"# command"Ǥ뤫ݤǷƤޤ

2.1 ʹߤǤѤȥޥѤΥɥ쥹Ʊ

	elena		⥳ޥɤ

ˤʤޤξ֥ޥɤʤΤݤϥ᡼ʸ"# command"
Ǥ뤫ݤפǷޤޤ줬ȤȤ hml 1.6 ߴΥ
Ǥ
______________________________________________________

3.4	ߴΤΥ饤֥

cf/config ȤޥɤǺ褦ˤʤä $CFVersion = 2; Ȥ
 version ͿޤˡμưԽΤߤä
 config.ph ȤäƤ($CFVersionʤ) 1 Ƥ
ޤ

	$COMPAT_CF1 = 1;

åȤƤ뤫 $CFVersion 2꾮ϼưŪ

	libcompat_cf1.pl

 dynamic loading ޤޤ 3 ʲȽꤵ줿

	libcompat_cf2.pl

ưŪ˥ǥ󥰤ޤ

3.5	FML 1.6 ΰܹԤˤĤ

1.6ǤϡŪʥǡ¤ call by reference Ѥ˽ľΤǡ
ޤޤǤ SMTP_OPEN_HOOK  ޥϤΤޤޤǤȿǤޤ
libcompat.pl Backward compatibility ΤΥɤޤ
ΤѤʤʤ顢config.ph  

	$COMPAT_FML15 = 1; 

Ƚ񤯤ʣʥեå򤷤Ƥʤ¤ compatible ˤǤޤ
ɤԹɤƤ¸Ǥʤޥ⤢ꤨޤ_o_

ΤǤȤϺμǤɬǤΤǤΥɥȤ򻲾ȤƤߤ


3.6	FML 2.0 Ȥθߴ (get ޥ)

	$COMPAT_FML20 = 1;

˴ط뵡ǽ

   ߤ get ޥɤ resend ǤΤΤ(2.0)᤹

餤ǤʤҤ $MAIL_LIST ߴ 2.1 gamma  2.1 delta 
λƳޤ
See also: 3.3 

3.7	hml 1.6 Ȥθߴ

   0	members  log file ϤΤޤޤǤ褤

   1 	fml 򥤥󥹥ȡ뤷

   2 	makefml  config.ph 
	$MAIL_LIST  $CONTROL_ADDRESS ƤƱˤ롣 

Ʊˤʤޤwhois ʤɤεǽˤĤƤϻ褦ʵǽϤä
ƱΤϤʤΤǸλŪ˰ܹԤϴñǤ⤹٤Ƥεǽ
̸ߴʤ櫓ǤϤޤ(security hole⤢ΤǤʼϤ
Ϥʤä)

4	߷׻ؿˤ˴ؤ뤤Ĥιͻ

4.1	From: Ϥ٤Ƥǧ٤

ߤ $REJECT_ADDR 줿ɥ쥹 From: ˴ޤΤϥ顼
ȤƴԤإեɤޤϸĿͤɽƤȤߤʤ
ɥ쥹ˤƤǤȤΤϣ̤ͣȤϸĿͤȸĿͤդ
Ȼפ뤫Ǥߤ

    $REJECT_ADDR  = 'root|postmaster|MAILER-DAEMON|msgs|nobody';
    $REJECT_ADDR .= '|majordomo|listserv|listproc';

Τ褦ꤵƤޤFrom:Υɥ쥹äԤإե
ɤǤΩƤޤϣ̴ͣԤȽǤǤ礦

¾ˤ uudecode  sysdiag() Τ褦 attack ǽФƤʥ
ɥ쥹⤢ޤޤޤȤäƤʤǤ礦̤Ƥ䤹
ʤΤ餹٤ʤΤ丫ȤƤϡä䤹٤ǤϤʤ
ȻפΤǤ

ɽǥޥå Email ɥ쥹Ϥǽ⤢ޤ
$REJECT_ADDR_LIST ɽޤǥեȤ(CF ˹碌
) spamlist ȤեǤ
See also: filter 2.13 
See also: filter 2.13 

4.2	ML̵¥롼פΥåᥫ˥
See also: 7.7 

ǥեȤ $CHECK_MESSAGE_ID åȤƤޤλ
Message-ID: եɤϥ᡼뤽줾ˤĤƻΤ unique Ǥ
פȤѤ롼ץåԤʤޤ

ʳˤåϤƤޤϤ uniqueness äȤ
Ǥ礦͡

4.3	newsyslog(8)

/usr/bin/newsyslog бΤȤơlibnewsyslog.pl 
ޤΤ /etc/daily Ǥ

	...
	rename log.0 log.1
	rename log log.0
	...

ȤäƤեԤʤץǤNetBSD Ǥϡ
Ȥ MIT Athena Project Ǻ줿ץबȤƤޤ
fml.pl newsyslog ȤäƽǥեȤΥե뷲
@NEWSYSLOG_FILES ǼΥեƤޤ

    @NEWSYSLOG_FILES = 
	("$MSEND_RC.bak", "$MEMBER_LIST.bak", "$ACTIVE_LIST.bak");

ĤޤޤȤᤪꡢǧڥꥹѹäˤǤХå
ץեǤˤī msend.pl (ޤȤᤪΥץ)
ԤƤޤޤȤ򤷤Ƥʤʤ¹Ԥޤ
ޤȤ򤷤Ƥʤʤʤ餫ηưɬפޤ

ޤؿ뼫(&NewSyslog)ΰ()ե뷲Ǥ
ѿ $NEWSYSLOG_MAX ϡΤϲĤޤǤפޤǥե
ȤϣǡĤޤ

	log.4 log.3 ... log.0 log 

ޤǽ֤ˤޤä¸ޤ@NEWSYSLOG_FILES Υե
 msend ˤī newsyslog 򤫤ޤ

4.4	Date: == Ф

Date: դ $DATE_TYPE ѹǤޤܤ header_rewrite 3.5

ǰϡФɤͤ뤫Ȥ

1	Фñ˥졼Ƥ (passive?)

ʤΤ

2	ФޤǤ̿ϩϣϣˤǤϤ
	㺣饵ТС(active?)

ǽΥǥ 2 Ż뤷ȡǡPosted: ФޤǤκ
¤ pointer ȤƻĤơDate: ˤϥТСΤξ
ȤƥФ localtime() ĤȡŪطʤޤ
ޤUUCPϽ񣲤ĤϤۤȤƱäǤɤ

Date:  Posted: λֺǥͥåȥDELAYʬΤŪ
̤Ǥ

¾ʪȤƻֽ祽Ȥ򤹤ǣ̤ͣεɤȤǤ
ޤĤޤꥵФȤäǤ͡
Υѥ٤Ƥ˰¸Τǥ᡼Фλ֤
ν֤Ȥϸ¤ʤǤ
 See fml-support's ML Count: 01816, 01821 for the discussion

4.5	Received: 
See also: header_rewrite 3.4 

4.6	Return-Receipt-To: ٤

С᡼뤬֤äƤ뤫Ǥ

ϥإåΰ̣ͤƥ᡼񤫤ʤɤΥ᡼Ф
͡ɤΤϤޤǤ⤢ޤ

5	եޤȤؿ (mgetȤޤȤᤪǻȤ)

5.1	mget options (help file )

mgetϡؤΥޥɤȤˡ١ؤޤȤᤪϥ桼Ȥˡ
Ǥޤʲ help եȴ

mget range 	[⡼]	[ֳִ]
			եޤȤ֤
			סε䡢
			(⤷)֤ˤե
   :
	range		ϰϤ
			1-10,12,15-100 1,2,10
			first first:10 last:30 100-last(mhŪ Syntax)
	⡼		gz tgz ish rfc934 b rfc1153 d unpack uf(default=tgz)
	ֳִ	֤᡼뤬ʣλδֳ(default=300)	

   ⡼:
		ץʤ tar+gzip  spool.tar.gz
	tgz	Ʊ
	uf	PLAINTEXT(UNIX FROM)
	gz	GZIP(UNIX FROM)
	b	RFC934 format 	PLAINTEXT(mh-burst)
	rfc934	
	ish	lha + ish 
	lhaish
	i
	li
	lu	lha + uuencode
	lhauu
	unpack	PLAINTEXT(UNIX FROM)
	uu	UUENCODE
	d	RFC1153 format 	PLAINTEXT
	rfc1153	RFC1153 format 	PLAINTEXT

ʲǤϤ

	ʣΥեդ˼갷ˡ
	ΥեޥåȤˤĤƤξ٤

˴ؤƵҤޤ

5.2	mget3 ΥǥեȤѹ

 ʣΥեĤˤΤޤȤΥǥե
$MGET_MODE_DEFAULT can change the default file format "mget" command
sends back. The default format is "tgz" on UNIX, 'mp' on Windows NT4.

libsendfile.pl Ǥ

    local($mode) = $MGET_MODE_DEFAULT || 'tgz'; # default

Τ褦ˤʤäƤޤץŪʻ꤬ʤ

	tar  gzip 򤫤եޥå(binary)
	 uuencode ޤ

֤ޤΥǥեȤ $MGET_MODE_DEFAULT ѹǤޤ
ựΤѿ ҤmgetΥץƱȻפäƹޤ
Τˤ(libfop.plƤ) %_fp Ȥϥåơ֥
KEY(2ܤΰΥե)Ǥ

	uf
	rfc934
	rfc1153
	mp
	gz
	tgz
	lhaish
	lhauu
	uu

 (var/archive  library ޥɤ)encodingΥǥե

spool Ȥ̤ˣ̤ͣΥ֤礬ꤨޤ㤨

	ֹ(TEXT)
	100ĤĤˤޤȤ᤿סε(BINARY)

Υ֤󤻤ΥǥեȤ

	ƥ	$MGET_TEXT_MODE_DEFAULT
			(ǥեȤ 'mp' MIME/Multipart)

	Хʥ	$MGET_BIN_MODE_DEFAULT
			(ǥեȤ 'uu' uuencode 줿); 

    	$mode = -T $opt ? 
    	    ($MGET_TEXT_MODE_DEFAULT || 'mp'): 
    	($MGET_BIN_MODE_DEFAULT || 'uu'); 

	Subject  

	$MGET_SUBJECT_TEMPLATE

Ȥѿƥץ졼ȤȤѤƤޤ򸵤ˤĤ
򤪤ʤä subject Ƥޤ


   result for mget _DOC_MODE_ _PART_ _ML_FN_

Τ褦Ƥ

	   _DOC_MODE_   <=>    [last:10 tar + gzip]
	   _PART_       <=>    (1/4)
	   _ML_FN_      <=>    $ML_FN (here is "(Elena Lolobrigita ML)") 

ȤִԤʤ졢ǽŪ

   Subject: result for mget [last:3 tar + gzip] (1/1) (Elena Lolobrigita ML)

Ȥ mget  result ֤ޤäƤѿŬ˺
ʤꤹ subject 򥫥ޥǤޤ

ˤ $NOT_SHOW_DOCMODE (CFVersion 2)  $DEFAULT_MGET_SUBJECT  
obsolete ˤʤޤ

5.3	mget3 󥿡ե:ѥޥåά

λ flock ϤơǸκǸ夢Ȥϡ&Notify ĤäƤ


	MHŸ¹
		e.g. 1,last:30 -> 1,70-100

	if V2 եޥåȤTRY
		e.g.
		spool/PLAIN-ARTICLE
		archive/100.tar.gz 
		õ
		return

	elsif ǤϤΥѥϥ֡
		ۤȤ Exact ˥õ
		return

	elsif V1 format õ (ѻ)
		ʤ顢¹
		return

	else
		NO MATCH or V1 FORMAT ERROR

5.4	ץΥѥ
See also: 6.4 7.4 

եǤϤĤΥץƤ֤Ȥޤ
 makefml ưŪ˸ФꤹϤǤǤǧϤƲ
ʬǥåʤ config.ph ˽񤯤ΤϴԤȤ˾ޤ
٤Ǥsite_init.ph ⤷ sitedef.ph ǰȵҤƤ
ϤۤäƤȤΤ褤Ǥ

ߥեطǼưŪ˸ФꤵΤϼΥޥɤǤ 

	ѿ̾				

	$TAR                           = "/usr/bin/tar cf -";
	$UUENCODE                      = "/usr/bin/uuencode";
	$COMPRESS                      = "/usr/bin/gzip -c";
	$ZCAT                          = "/usr/bin/zcat";
	$LHA                           = "/usr/local/bin/lha";
	$ISH                           = "/usr/local/bin/ish";

5.5	mget3 ֤ץ

ĤΥեޤȤ֤ץκǽơϡΤ褦
˹Ԥʤޤ

     	mget3 interface ϥåäƤ֤Τ 
	$TMP_DIR ֤٤եäƤޤ
	֤ץϥå򳰤ǹԤʤ롣

ʤ $TMP_DIR ˺֥եϼΤ褦ʥե̾ˤʤäƤ롣

	m:"⡼̾":"ץID"return.(ʬ䤵뤿)

֤ΤʣˤʤäΤˡʬοɤɬפǤΤϼ
դ˥ե뤿ˤϥץIDȥ⡼̾ޤǤåȤ
ʤɬפ롣ȤΤϰĤΥ᡼ǡʣΥ⡼ɤ mget ޥ
ȤפȤǤ뤫Ǥ롣

   	åϤ (&Unlock();)

ȤΤϡ֤ץĹ̼ͣΤӤθ褿ä
֤ΤʤץåƻߤޤƤޤΤϤʤ
롣

   	&RunStartHooks;  mget3_SendingEntry ƤӽФ

mget3_SendingEntry  %mget_list ˽̥󥿡եƤӽФ
åϤϤƤΤǡʣ֤ץɤäƤ⹽
ʤ

ե뤬ʬ䤵Ƥ硢֤ $MGET_SEND_BACK_SLEEPTIME (
̤ʤ $SLEEPTIME) ֤Ȥ˹Ԥʤ롣mget ޥɤŪ˻
ꤵʳϥǥեȤ $MGET_SEND_BACK_SLEEPTIME
($SLEEPTIME) ͥ褵롣$SLEEPTIME  $MGET_SEND_BACK_SLEEPTIME 
Ť̾Ǥ

:ʤ̾ξﲼǤϺ֤ȤƤ֥ե뤬 񤭤
뤳ȤϤꤨʤ۾ʾͭ(ʾ֤OS
ǥץϥޥȥưʤ)

5.6	ޥɤñʤ륷󥿥å顼ηٹ򤹤

Ū $USE_WARNING 򥻥å
e.g. in config.ph

	$USE_WARNING = 1;

ȥޥɥ᡼ǤΥ󥿥å顼ηٹ򤹤롣ǥեȤ
ʤ

e.g. 
# helps 			ޥɤΥ顼Ϸٹ
#				󥿥å顼ٹʤ
#ˤ	uja@uja.ac.jp	󥿥å顼ٹʤ

5.7	mget ֤Υե륵

	$MAIL_LENGTH_LIMIT (default is 1000 lines)

ʣΥեʬ䤹ΰ̤礭ǤԿǻꤷޤ
InternetʤȤ⤫ѥ̿οͤؤϵȤޤ
(ǶǤϤǤʤΤ褯ʤ)

ܰ¤ȤƤ1000ԤǤ50k餤ˤʤΤ1000ФƤޤ

5.8	mget ǻǤեκ

mget ǻǤեκ͡ǥեȤ1000 mget * ʤ
Ȥ1000̰ʾΥեꤹȥ顼ˤʤ롣

	$MGET_SEND_BACK_FILES_LIMIT

5.9	Mget Format: Unix From 

4.4BSD UNIX  sendmail  /usr/libexec/mail.local Ȥƥ桼(e.g. 
fukachan) Υ᡼ /var/mail/fukachan ¸Ƥޤ
η UNIX FROM Ǥ$HOME/mbox ƱͤǤ͡

	From fukachan Mon Jan 26 09:11:46 1998
	Received: by hikari.fml.org (8.8.8/3.4W6+Hikari-2.1) 
		with ESMTP id JAA02846 for <uja@fml.org>; 
		Mon, 26 Jan 1998 09:11:46 +0900 (JST)
	From: fukachan@sapporo.iij.ad.jp
	Subject: uja

	ʤȤʤǤʤȤʤ

MH  inc ϤηΥե뤳ȤˤƤޤ

5.10	Mget Format: MIME/MultipartBNFɽRFC1521

   boundary := 0*69<bchars> bcharsnospace

   bchars := bcharsnospace / " "

   bcharsnospace :=    DIGIT / ALPHA / "'" / "(" / ")" / "+" /"_"
                 / "," / "-" / "." / "/" / ":" / "=" / "?"

   Overall, the body of a multipart entity may be specified  as
   follows:

   multipart-body := preamble 1*encapsulation
                  close-delimiter epilogue

   encapsulation := delimiter body-part CRLF

   delimiter := "--" boundary CRLF ; taken from Content-Type field.
                                   ; There must be no space
                                   ; between "--" and boundary.

   close-delimiter := "--" boundary "--" CRLF ; Again, no space
   by "--",

   preamble := discard-text   ;  to  be  ignored upon receipt.

   epilogue := discard-text   ;  to  be  ignored upon receipt.

   discard-text := *(*text CRLF)

   body-part := <"message" as defined in RFC 822,
             with all header fields optional, and with the
             specified delimiter not occurring anywhere in
             the message body, either on a line by itself
             or as a substring anywhere.  Note that the
             semantics of a part differ from the semantics
             of a message, as described in the text.>

5.11	Mget Format: MIME/Multipartθ

Date: Thu, 18 May 95 22:33:00 JST
From: Elena@phys.titech.ac.jp (Elena Lologrigita)
Subject: P R E S E N T
To: fukachan@phys.titech.ac.jp
MIME-Version: 1.0
Content-type: multipart/mixed;
	boundary="--Thu_18_May_95_22:32:56--"

----Thu_18_May_95_22:32:56--
Content-Type: message/rfc822

Date: Thu, 18 May 95 21:45:17 JST
From: fukachan@phys.titech.ac.jp
Subject: ۤɤ
To: Elena@phys.titech.ac.jp (Elena Lolobrigita ML)
Message-ID: <19950518.01905.Elena.Lolobrigita@Baycity.asia>

֤ʤȤʤ 󤸤ʡ Τۤ⤷ 
ˤĤޤ͡
ˡפǤءפǤפǤʤ֤åաפʤ
(󡢤ʤȤʤ狼뤬())

():äѤꡢ#3#7#12#23#27#32 Ǥ(^^)

----Thu_18_May_95_22:32:56--
Content-Type: message/rfc822

Date: Thu, 18 May 95 22:00:29 JST
From: Elena@phys.titech.ac.jp
Subject: å
To: Elena@phys.titech.ac.jp (Elena Lolobrigita ML)
Message-ID: <19950518.01906.Elena.Lolobrigita@Baycity.asia>

ϤޤȤѤʷϵȴʤʤޤʾСˤäѤ 
ߥΥƥĥ Υޥ˥ạ̊ȤǤ⤤ΤȤ
^HƤޤ͡
 ܡ꡼ͥ äƤΡ֥ե꡼åפǤʤ

----Thu_18_May_95_22:32:56----

5.12	Mget Format: RFC934

rfc934 "Proposed Standard for Message Encapsulation"

MH  burstʣŸŸǤޤ

Example:
------- Forwarded Message

From: Anna
Subject: Mama told me

äѤ֤ۤɤפǤ͡꡼γ˿Ǥ
ܡͥ	ơߥΥƥĥ	С

------- Forwarded Message

From: Elena
Subject: Albatros

󥰥åɤȻȤդ⤢褦äġʾС

------- Forwarded Message

5.13	Mget Format: RFC1153 digest 

comp.sys.ibm.pc.digest ȤǤߤǤ硩ǤRFC  about
ɤǤ褯狼ޤ;_;

Example:

Date: Sat, 20 May 95 01:33:50 JST
From: Elena@phys.titech.ac.jp
Subject: Freekick
To: fukachan@phys.titech.ac.jp

GODAI BBS DIGEST	Sat, 20 May 95	Volume 95: Issue 120

Today's Topics:
	ʤõϡ 

------------------------------

Date: Sat, 20 May 95 00:00:31 JST
From: "Ken'ichi Fukamachi" <fukachan>
Subject: 	ʤõϡ 
X-Mail-Count: 01932

ʤõϿ廵äƤ(^^) 廵

--fukachan 
֤ȤǤ衢ˤ󡣥ХȥˤΤ

------------------------------

End of GODAI BBS Digest V95 Issue #120
********************************

5.14	Mget Format: 1153 Υޥ

$RFC1153_ISSUE		̤ͣεֹǤϤʤ1153Фֹ

$RFC1153_SEQUENCE_FILE	ֹ¸ե

		Υ롼󤬸ƤФ뤿Ӥ˥󥿤Ͽʤߤޤ
		ҤΤ褦˳ƥ桼Ȥ1153ͤ
		Ϥ줾㤦Τ
		ֹϤȤĤʤäƤϤޤ
		褹ˡϤޤ

$RFC1153_LISTNAME 	ޤȤꤹ1153 digest ˤĤ륿ȥ

$RFC1153_VOL		Volume 㤨96ǯ٤ΤޤȤʤ Volume 96
			褦ʥ٥ֹ

$RFC1153_CUSTOM_HOOK	&Rfc1153Custom($mode, *conf) 
			Ԥʤեå

&Rfc1153Custom($mode, *conf) internal:

    ########## CUSTOMIZE BELOW ##########
    $issue     = $RFC1153_ISSUE    || 1;
    $listname  = $RFC1153_LISTNAME || "UJA";
    $vol       = $RFC1153_VOL      || $year;
    $IssueSeq  = $RFC1153_SEQUENCE_FILE  || 
	"$FP_VARLOG_DIR/IssueSeq"; # file to remember count;

    &GetTime;
    &eval($RFC1153_CUSTOM_HOOK, 'RFC1153 custom:');
    $issue = &Rfc1153GetSeq($IssueSeq);

5.15	Mget Format: lzh + ish option

FYI: OS(Sun OS 4.x ?) 2.2 Ǥޤưʤ 
$INSECURE_SYSTEM = 1; ꤹưȤޤ
See also: 9.15 

	mget 200-210 ish

Ѥ˻ꤹlzh  ish(s7 mode)Τ֤ޤ

	$LHA = "/usr/share/bin/lha";
	$ISH = "/home/axion/fukachan/bin/ish";

ɤ(config.ph or sitedef.ph)ꤷƲmakefml ư
õꤵƤϤǤǧϤƲ

5.16	SJIS ˥եѴ lzh + ish  lhz + uuencode option

config.ph  $USE_SJIS_IN_ISH = 1; 򥻥åȤ lha ȤפǤ 
SJIS Ѵޤѿ̾ ish Τ褦˸ޤŪʤΤǤ
lha Ȥʤ餤ŤξˤŬѤޤ

^M ^Z Ĥޤ٤ơޥɤȤ鷺˼ϤǤޤ

6	FML Υץ

̥ͣФδưΤäƤȥޥλˤޤ

6.1	̥ͣФư (fml  sendmail ʬô)

   ᡼뤬 SMTP Ƥ

             

   SMTP ԤƤץबȤ (: sendmail)

             

   /etc/aliases 鲿򤹤ɤΤ򤷤ơ
   setuid Ԥʤä fml.pl  STDIN ˥᡼뤬ޤ롣

             

   (sendmail -> fml.pl ذϤ롣餬 FML ô)
   config.ph ˤ˽إåβϡ̥ͣСΥꥹȤ˽
    or ޥ׵̤Υ᡼ꥹȤȶ
   sendmail SMTPФذϤ

             

   (Ƥ sendmail ô)
   sendmail SMTPФ᡼Ԥʤ

ե륿ʤ sed Ǥ⽽ʬ"ۤ"ʤ Sendmail 8.x Ǥ⽽ʬ
Ǥ礦+ǥȤꡢס뤷ɬפʤ󤻤
褦ˤ礳äȤʣʤȤ򤷤褦Ȥʤ餳Υ ޤɬפ
ʤȤ櫓Ǥ

ʤοޤǤ狼ȤꡢޤȤᤪϤȤ"̤"ץǤ
ޤȤᤪϼưŪ˺ư櫓ǤϤޤ
ޤȤᤪȤϡ֤Ȥ˥ס뤵줿̤ͣεäƤ
"̤Υץ"ǤΥץ̤λųݤŪ˼¹Ԥʤ
ʤޤ
See also: digest 2 
See also: digest 2 

6.2	Sendmail -> fml.pl ư

sendmail  fml.pl إ᡼뤬ϤϼΤ褦ưޤ

 ޤ /etc/aliases ˤ

	Elena: :include:/usr/local/list/Elena
	owner-Elena:fukachan

Τ褦ʬ /usr/local/list/Elena ¹ԤФ褤Ȥ狼
 sendmail ϤΥե¹Ԥޤ/usr/local/list/Elena Ȥ

	"|/usr/local/fml/fml.pl /var/spool/ml/elena"

Τ褦ˤʤäƤޤ

 fml ΰ /var/spool/ml/elena  Elena ML  HOME ȸ
 /var/spool/ml/elena/config.ph ˽ fml Ԥޤ

Τ˽᡼ޤ ޥɥ饤󥪥ץ
Ȥ /usr/local/list/Elena 

	"|/usr/local/fml/fml.pl /var/spool/ml/elena --ctladdr "

Τ褦˽񤭤ޤ(ޥɥ饤󥪥ץˤĤƤ Chapter debug 4)
νν֤ǤդǤκǽ directory  ML  
HOME (config.phΤ ⤷ spool СեΤ) 
ȸʤޤ

6.3	饤֥Υեõ (fml.pl  ARGV)

	/usr/local/fml/fml.pl /var/spool/ml/elena

Τ褦˵ư櫓Ǥξ/usr/local/fml/fml.pl  
/usr/local/fml ʬȤ /usr/local/fml ¹ԥե饤֥
ΥѥȤߤʤޤ

	1   /var/spool/ml/elena 
	2   /usr/local/fml 

ν֤ dynamic loading եõޤ㤨 config.ph  
libsmtp.pl 򤳤ν֤õޤ⤷θ directory ̾
äƤ(ʣǽ)硢㤨

   "|/usr/local/fml/fml.pl /var/spool/ml/elena /usr/lib/uja /lib/aja"

λ

	1   /var/spool/ml/elena 
	2   /var/spool/ml/etc/fml/
	3   /usr/local/fml 
	4   /usr/lib/uja
	5   /lib/uja

Τ褦ʽ֤ǥեõޤ

6.4	եΥ

ץζ֤¤٤

	1 ޥɥ饤󥪥ץ (fml.pl -d  fml.pl --ctladdr )
	  ʤޥɥ饤󥪥ץˤĤƤ Chapter debug 4
	2 sitedef.ph ˤoverwrite(ȶ̤˾ޤ)
	3 MLȤ config.ph ˤ
	4 site_init.ph ˤǥե	
	5 fml ǥե

̤ program ƱͤǤ̤ͣ͡ȤǤϤʤΥޥ̤ˤ


	tar  gzip Ϥɤˤ롩

 sitedef.ph ˽񤯤Ǥ礦

site_init.ph ϳML config.ph ɾǥեȤޤ
sitedef.ph ϳML config.ph ɾŬѤ졢ƣ̤ͣŪ
˽񤭴뤳ȤǤޤ줾Ȥ櫓ɤǤ礦
 config.ph ˤʤѿǤФɤȤäƤƱȤǤ

sitedef.ph site_init.ph Υ

				Example
	-----------------------------------------------
	$DIR			/var/spool/ml/elena/
	$ML_DIR/etc/fml/	/var/spool/ml/etc/fml/
	$EXEC_DIR		/usr/local/fml/
	perl standard path	@INC

ν˥ޤ̤ξʤΤ

	$ML_DIR/etc/fml/	/var/spool/ml/etc/fml/
	$EXEC_DIR		/usr/local/fml/

ΤŤ줫Ǥ礦fml 2.2.1  $ML_DIR/etc/fml/ Ƭˤʤޤ
version up/usr/local/fmlβ򤤤ʤƤ褤褦ˤȤ
θǤ

6.5	fmlΥץ(STDINɤ߹ߤʳ)

STDIN ɤ߹ߤʳǥϥåơ֥ %Envelope

	إå	$Envelope{'Header'}
	ܥǥ	$Envelope{'Body'}
See also: 7.3 
See also: 7.3 

¸ޤλܥǥ(᡼ʸ)ФƤϼΤ褦ʥå
ʤޤ

 ǽ $GUIDE_CHECK_LIMIT ԤФ $GUIDE_KEYWORD Υɤ
뤫ݤ
СʳΥ᡼ǤΥɤ򥭥åϡɤ
֤ƤʳΤȤϤʤ

 ǽ $COMMAND_CHECK_LIMIT ԤФ
	^#(\s*\w+\s|^\#\s*\w+)
	^#$CHADDR_KEYWORD

	# ǻϤޤꡢʸ³ (\s*\w+\s|^\#\s*\w+)

	# ǻϤޤꡢ$CHADDR_KEYWORD Υ
	Ԥ뤫ݤäϥޥɥ⡼ɤذܹԡ

2ĤΥå򤷤Ƥޤ줾 LIMIT Ĵ᤹ȡĤޤ 
LIMIT  0ˤХå򤷤ʤȤȤˤʤ뤷ʸ٤Ƥ򥳥
ɤоݤˤ뤳ȤǤޤǥեȤǤϤ줾ǽ3ԤΤ
оݤˤƤޤ

ʤ줾ΥɥǥեȤϼΤ褦ꤵƤޤ

	$GUIDE_KEYWORD  = "guide";
	$CHADDR_KEYWORD = "chaddr|change-address|change";

6.6	fmlΥץ(裲ʳ, %Envelopeν)

%Envelope ˥إåȥܥǥɤ߹ϥإåβϥץ³
ܺ٤ˤĤƤϼξϤ򸫤Ʋ
See also: 7.3 
See also: header_rewrite 5 
See also: 7.3 
See also: header_rewrite 5 

θåơᥤΥץ³Ȥˤʤޤ

6.7	fml process  lock  signal handling 

ߤ flock Ȥå르ꥺϼΤ褦ꤵƤޤ
flock(2)  alarm(3) ˤTIMEOUTˤŪˡǤ 
sendmail Τ褦 alarm(3) ١ event ư򤹤褦˥ץ
򤷤Ƥޤ

NT4 Ǥ Activestate ntperl ȤäƤޤ ntperl Ǥ 
flock(2) ưޤ(ʤȤäʹܺ٤) alarm(3) 
ʤΤ Win32::Process ˤ wrapper  alarm(3)  emulate Ƥ
ޤemulation ȤäƤTIMEOUT鶯λǤ

sub Flock {

    &SetEvent($TimeOut{'flock'} || 3600, 'TimeOut') if $HAS_ALARM;
	...

TIMEOUTԤĻ֤ $TimeOut{'flock'} Ƿޤޤ(flock Ǥʤ
 3+ ٤ sleep  $MAX_TIMEOUT 󤷤ԤäƤߤ)

    # signal handling
    $SIG{'ALRM'} = 'TimeOut';
    $SIG{'INT'}  = $SIG{'QUIT'} = 'SignalLog';

$TimeOut{'flock'} (ǥեȤ3600) $SIG{'ALRM'} 줿
(TimeOut)¹Ԥޤ

ؿ TimeOut ϴԤ TIMEOUT Τ餻Ĥfmlλޤ
줬ʤȤäȥå(flock)äޤޤˤʤ뤫Ǥ

ʤ flock ȤʤTIMEOUT᡼¸Ԥ TIMEOUT 
Τ餻ޤܺ٤ liblock.pl 򸫤Ȥ狼Ǥ礦
See also: references 1.1 
See also: references 1.1 

6.8	٥ȡ塼

TIMEOUT ϸ߼¹ԤƤƤˤ餺λ֤褿(
) ¹Ԥɬפޤ̣ alarm(3) ȤäƼ
ʤ Windows NT 4.0 Version Ǥ alarm(3) ȤʤΤνϼ
Ԥޤ

6.9	åλ(flock Ǥʤ)
See also: troubleshoot 9.2 

å르ꥺ̤ѰդƤޤflockǤflock(2) 


	$USE_FLOCK    = 1; (default 1)

 flock system call

	$USE_FLOCK    = 0;

Τ餢 link(2) ȤȤޤϥåե
ؤ link() Ǥ뤫ݤ?¾˻ȤޤΥåե


	$LOCK_FILE

ȤѿѹǤޤǥեȤ $DIR/var/run/lockfile.v7 Ǥ

	"$FP_VARRUN_DIR/lockfile.v7"

Ĥޤ ML  home β var/run/lockfile.v7 Ǥ OS 
ʤˤΥե뤬ĤäƤޤΤǼưǤΥե뷲
äʤФʤʤȤǤΤ flock() 
褦OSľܥåٱ礹˾ޤǤ

 reboot ľ

	"$FP_VARRUN_DIR/lockfile.v7"
	"$FP_VARRUN_DIR/lockfile."

٤ƤäƲ

fmlβץäƤ֤ǤϤɤΥåեäƤ
ϥץơ֥򸫤ɬפޤϥץֹǤץ
ơ֥򸫤(ps(1))(fml  process)ʤС
ΥեϾäɤǤ

ʤ link(2) ξ $MAX_TIMEOUT ø塢var/log/ βTIMEOUT
᡼¸ԤTIMEOUTΤޤ

[ª]	flock(2) 򸫤ʬޤ 

	$LOCK_SH                       = 1;
	$LOCK_EX                       = 2;
	$LOCK_NB                       = 4;
	$LOCK_UN                       = 8;

         #include <sys/file.h>
         #define   LOCK_SH   1    /* shared lock */
         #define   LOCK_EX   2    /* exclusive lock */
         #define   LOCK_NB   4    /* don't block when locking */
         #define   LOCK_UN   8    /* unlock */
    
         int
         flock(int fd, int operation)

¾ˤĤƤ㤨 A. S. Tanenbaum, "Modern Operating Systems" ʤ

7	FML ˤǡ¤

Ǥ fml ˤǡ¤ˤĤƲ⤷ޤ
ϲ¤ɬܤλǤ礦ñѿ 1 or 0 ˥åȤ
 (config.ph) 򤤤ʤʤɤɬפϤʤǤ礦

7.1	ѿ̾ naming convention

 ʸ[A-Z0-9_]+ˤβϥ桼ΥޥǻȤŪ
   Global ѿǤ

	Example:	$MAIL_LIST

 "1ñƬʸʸĤϾʸ"βʤñϥ᡼
   ΤإåSubroutine֤Ϥ Global ѿǤ

	$MailBody	$Reply_to
	%Envelope	*_cf

	㳰 *_cf  ƥäƤ֤̾Ǥ
	(_cfϤۤȤɻȤƤޤ󡣾Ͼõ٤Ǥ)

   %Envelope ϺǤפѿǤ
   ʤ顢Хѿʤ٤Ǥ
   ޤ@Fld ˤ褦˸ߥХȤƻȤƤʤΤ̾ĤȤ
   ĤäƤޤäƤΤ⤢ޤ
   Ϥ⤩Τޤ޻Ȥʤ褦Ǥ

   ա
	$debug ʸǥХѿȤ㳰Ǥ
	ȤΤȡŪˤʤäƤȤʤΤ
	夽ѿ̾Ϻ뤳ȤϤޤ
	ޤΥ桼Ǻѿˤʤä $ML_MEMBER_CHECK 
	㳰Ǥ

 ʸϴŪlocal variableǡsubroutineƬlocal
   Ƥޤ

 ­
ʤDirectory  $*_DIR פѿˤ

	$*_DIR 		$DIR Хѥ
	$FP_*_DIR 	Хѥ

Σबޤ $FP_*_DIR פѿϼưŪѴ
ޤŪˤХѥȤޤ$FP_ ѿ fml.pl ν
ưŪĤꤵޤۤȤƤξ̤ХѥѤ


	$FP_TMP_DIR
	$FP_VARDB_DIR
	$FP_VARLOG_DIR
	$FP_VARRUN_DIR
	$FP_VAR_DIR
    	$FP_SPOOL_DIR

7.2	ؿ̾ Naming Convention

㳰ơɣñƬʸʸĤϾʸɤβ
ʤñǤŪ subroutine ̾X11äꤷޤǶ
lisp̣⺮äƤޤ:-) #X11Ǥ

 fml 1.5 ʹߤǤϼ㴳㳰ޤ

ե򤹤ؿ

	Ѵ󥿡եȤƤ 	f_ؿ ̾
	Ĥʤʤ

		 

	Υ⡼ɤΥ󥹥ȥ饯	Cnstr_ؿ ̾
	Υ⡼ɤΥǥȥ饯	Destr_ؿ ̾

㳰Ǥ־ replace ٤Ǥפäޤ replace 
ʤޤޤǤ:-)

7.3	%Envelope (ϥåơ֥)

%Envelope ˤϺ fml ư᡼(إåإåγƥե
ɡʸ)ǼޤޤΥ᡼ФɤMETHODREPLY
֤٤䡢sendmailȤ̿˴ؤƤղþ 
%Envelope ̤ϤޤϤΥ᡼Ф METHOD 
ߤʤƤ뤫Ǥ

sendmail  struct envelope e; бΤǤ
perl 4 西åȤˤƤ뤿

	$Envelope->$Header->$From = "uja@domain";

Τ褦ʻȤϤޤ(Ǥʤ)ƱͤΤȤտޤ󥿥


	$Envelope{"h:From:"}  = "uja@domain";

ɽƤޤ h = header  From: Ϥ虜 Field Ȥ狼䤹
褦 : ޤǴޤƤޤ

ʲ %EnvelopeKEYˤĤޤ
ϥåʤΤǡKEY => VALUE  $Envelope{KEY} ͤ VALUE Ǥ

	h: ǤϤޤKEYϡ֥إåγƥեɤΥǡפǤ

	h:Capital:	줿ǡ e.g. h:Subject:
	h:lower-case:	᡼Υǡ e.g. h:subject:

	ʳ  Envelope Υ᡼ɤ⡼ɤǽ뤫
	䡢Υ᡼ؤREPLY顼ݡȽɤ뤫
	ȤMETHODλղþդä뤳Ȥ⤢ޤ

	[إåط]

	h:field:	ҤΥإåեɡ

	fh:field:	field(ʸ)  fml.pl ͤ

			㡧 fh:to:  To:  $Envelope{'fh:to:'} ͤˤ

	oh:field:	field  original ΥإåեɤȤ

	GH:field:	ޥɤη̤֤᡼ GenerateHeader() Ȥ
			롼ǥ᡼إå롣
			Ǥͤѹʤ餳KEYȤ

	Addr2Reply:	ޥɤηֻ̤֤ɥ쥹
			reply-to: > From:

	[᡼뤬ƤӽФ٤⡼ɤ᥽åɤConfig]

	macro:x		x  sendmail  $x бƤ¸

	mode:x		⡼ 

	mci:mailer	mci  Mail Connection Information (MCI)
			mci:mailer  ipc(SMTP)  prog(exec sendmail)
			Τɤ餫Ǥ

	[ɽ]

	Header		᡼Υإå
	Body		᡼Υ᡼ʸ
	Hdr		Ф᡼Υإå&Smtpľ

	message		᡼򥵡Фä桼ؤΥå
	error		Ԥؤ(顼)å

	MIME		ISO-2022-JP is detected (toggle Flag)
	UnixFrom	Unix From
	Hdr2add		$SUPERFLUOUS_HEADER λˤĤХåե
	nclines		# command ιԿ
	nlines		᡼ʸιԿ
	preamble	᡼ʸˤĤʸ
	trailer		᡼ʸθˤĤʸ

	tmp:x		temporary used

: Subject:

   $Envelope{'h:subject:'} 褿᡼뤽Τ

   $Envelope{'h:Subject:'} 褿᡼ Re: Ȥ
   ɬפʤ [Elena 100] Τ褦ʤΤ

Τ褦ʰ㤤롣إåʸǤϤޤñϼΤ褦
б롣

᡼Υإå: %Envelope

        Field           key in %Envelope
	--------------------------------------- 
	Date: 		h:Date:
	From:		h:From:
	To: 		h:To:
	Subject: 	h:Subject:

7.4	ǡ¤ν

ƥǡνϼνǹԤʤ롣

	$DIR $LIBDIR @INC ν

	&InitConfig
	   &SetDefaults
		%Envelope
		DNS, @HdrFieldsOrder, and others

	   &LoadConfig
		$DIR/config.ph
		sitedef.ph

   	   &SetOpts
		command line options

	   COMPATIBILITY CODE

	&Parse
		%Envelope  Header Body θƤ¸

	&GetFieldsFromHeader
		%Envelope  h:field:  h:Field: 򥻥å

	&FixHeaderFields
		h:Field: ؤγƼԤʤ

	&CheckCurrentProc
		%Envelope ˤꡢư⡼ɥå

	θƼեå줾ξɾ롣

	Example:
		$START_HOOK
		$SMTP_OPEN_HOOK
		$FML_EXIT_HOOK

θå졢åǥƥʺȤԤʤ롣Ȥ
ޤ alarm(3) ˤ߰ʳǤϤΥåϤϤʤ

7.5	ǥ쥯ȥѿ
See also: 6 

ưΰֺǽʳǤ $DIR $LIBDIR @INC ȤѿɮƬ
ƼѿνԤʤޤ()$DIR $LIBDIR @INC ưˤɤ
ɾȤƤ뤫ϡfml δưȵưץġפξϤ򸫤
ʬǤ礦
See also: 6 

ʲǤ DIRECTORY 򼨤ޤ

	@INC	()
		 Perl  include file  search path
		$DIR @INC(original) $LIBDIR ...
		ν֤õ롣

	$DIR
		config.phΤꡢMLHOME	
		@INC Ƭꤵ

	$LIBDIR	
		fml.pl  libsmtp.pl ֤ꡣ
		$DIR ƱǤɤ̤ξݼ餵ƤƤ褤
		ȤʣΣ̤ͣ򰷤˥ס *.pl ե
		֤櫓뤿Ƴ줿@INC κǸ롣

		ʤޥɥ饤˽ФƤdirectoryϤ٤ @INC 
		ꤵ뤬$DIR ľ directory  $LIBDIR 
		ꤵ롣

		@LIBDIR ˤäƤ

    	$SPOOL_DIR		$DIR/spool
		̤ͣεǼ

	[$DIRХѥꤵ]

	$TMP_DIR		tmp (temporary)	4.4BSD  /tmp
	$VARDB_DIR		4.4BSD  /var/db (ǡ١)
	$VARLOG_DIR		4.4BSD  /var/log б ֤
				backward compat Τ
				log ΥǥեȤ $DIR/log ΤޤޤǤ
				( $VARLOG_DIR/log ˾ޤ)
	$VARRUN_DIR		4.4BSD  /var/run pid-file Ϥ
				ʤ cache ⤳ˤƤ롣
	$VAR_DIR		4.4BSD  /var

	[FULL PATH 줿ѿ]

	$FP_TMP_DIR		$DIR/$TMP_DIR
	$FP_VARDB_DIR		$DIR/$VARDB_DIR
	$FP_VARLOG_DIR		$DIR/$VARLOG_DIR
	$FP_VARRUN_DIR		$DIR/$VARRUN_DIR
	$FP_VAR_DIR		$DIR/$VAR_DIR
    	$FP_SPOOL_DIR		$DIR/$SPOOL_DIR

7.6	$TMP_DIR ˤĤ

̥ͣФκȥꥢˤϥǥեȤǤ $DIR/tmp (Ĥޤ $TMP_DIR =
'./tmp';) Ȥޤѹ $TMP_DIR ѹƲ

/tmp Ȥ /usr/tmp Ȥե뤬ĤȷʤΤǻȤޤ
private communication Υե public ʾ˥եĤȤ
ʤǤ

¾ˤ 4.4BSD  directory ¤˳ƼΥ䥭å夬
¸ޤ

7.7	ե뷲
See also: 8 

[СΥꥹȴط]

	$MEMBER_LIST 	 	$DIR/members
See also: 8 

	Сꥹ(ǧڤΤߤ˻Ȥ)

	$ACTIVE_LIST 		$DIR/actives
See also: 8 

	̤ͣꥹ

	$REJECT_ADDR_LIST	$DIR/spamlist
See also: filter 2.13 

	/ޥ/ưϿϤȤƤξˤĤơƤ
	ɥ쥹ΥꥹȡưŪϿ뵡ǽ⤢롣

[ƼطΥե]

	$OBJECTIVE_FILE	 	$DIR/objective

	̤ͣŪ񤤤ե

	$GUIDE_FILE		$DIR/guide

	̤ͣΰ̸ʥɡ

	$HELP_FILE	 	$DIR/help

	̤ͣHELPޥɤβ

	$DENY_FILE	 	$DIR/deny

	̤ͣСå򤷤Ƥ
	Сʳ᡼뤬褿֤Ǥʸ

	$WELCOME_FILE	 	$DIR/guide
See also: how_to_subscribe 4 

	̤ͣưϿλϿäƤʸ

	$CONFIRMATION_FILE       $DIR/confirm
See also: how_to_subscribe 4.9 

	ưϿ confirmation ⡼ɤκ reply ֤ 
	confirmation Υե

[եط]

	$LOGFILE	 	$DIR/log

	

	$MGET_LOGFILE    	$DIR/log
See also: 5 

	mgetΥǥեȤǤϢեƱ

	$SMTPLOG		$VARLOG_DIR/_smtplog

	ץ̿(SMTP)Υ(ǥХåΩ)

	$SUMMARY_FILE 	 	$DIR/summary	

	MLεΥޥ

	$SEQUENCE_FILE 	 	$DIR/seq

	MLεֹ

	$MSEND_RC		$VARLOG_DIR/msendrc
See also: digest 2 

	ޤȤᤪե

	$LOCK_FILE	 	$VARRUN_DIR/lockfile.v7

	flock() ȤʤΥåǻȤե

	$LOG_MESSAGE_ID		$VARRUN_DIR/msgidcache

	message-id cache ե
	(MLȤǤ̵¥롼פɤΥå)

	$MESSAGE_ID_CACHE_BUFSIZE

	Message-ID cache ե륵

	$INDEX_FILE		$DIR/index

	ΥեϤʤƤ⹽ʤindexޥɤɽ
	񤯡Υե뤬ʤϤξMLHOMEƤĴ٤
	

7.8	ñʤˤѿ

	$DO_NOTHING

	⤷ʤȤʬ򤹤뤿ѿüʥФ
	̤HOOK򤫤ꤹͭѤǤ롣

	$NULL

	ߡ:-)  ̤ˤѿʤ 
	#define null (char *)0 ߤʤΤȻפäƤ館ɤ

	$FML	

	ͥΥץơ֥Ѥݤ˻Ȥѿ

	$FACE_MARK

	(ñʤ밦:-)ƼꥯȤη̤֤ˤ̤ʸϤˤĤ
	e.g. 	P(^^)
		Be seeing you P(^^)
	Τ褦ˤʤ롣

	$INCLUDE_SIM_PATH

	Simulation ǻȤˤʤǲ:)

	$UNISTD

	Declare "Unix Standard" flag. undefined on Windows NT4

	$LOCKFILE

	lock file variable in some libraries. It may be uncontrolled
	by a user.

	%MAKE_FML

config.ph ˸ϥå %MAKE_FML  makefml ǻȤΤΤǤ
makefml ʳǤϻȤޤ󡣸ߤǤϻȤƤޤ̵뤷Ʋ

 ŤѿȤ¾֤̾줿

   $GUIDE_REQUEST	-> $GuideRequest
   $RPG_ML_FORM_FLAG	-> $COMMAND_SYNTAX_EXTENSION

 obsolete ʤ

   $NON_PORTABILITY

7.9	ǻȤƤѿĴ٤ˤϡ

config.ph  

	$DUMPVAR = 1;

䥳ޥɥ饤

	fml.pl --DUMPVAR 

Ȥ fml ƤӽФƤѿ dump ޤξPerlˤĤ
Ƥ dumpvar.pl 饤֥Ѥ֤̾ѿꥹȤĥ
ФƤޤ

ʤߤ fmlserv.pl ƱͤΤ֤̾ switch Ѥʣ
̤ͣ򵿻Ū˼¹ԤƤޤ

8	FML եΥեޥåȤȹ¤

fml ե롢СꥹȤϴŪ shell like ʹ¤ǵҤ
ƤȴԤƤޤĤޤŪ # ǤϤޤԤϥȡ
ԤФεưƥ롼ϤƤޤ

ʲǤϳեΥեޥåȤˤĤƸڤޤ

8.1	members եΥեޥåȤȹ¤

ΥեΥեޥåȤϸҤΤ褦ʤΤǤޥɤεư 2.2 
ȰʸǤäȰ㤤ޤ2.2 ʹߤmembersޥɤǤϰ̥桼
ˤϲΤ褦ʥեޥåȤϸޤ󡣤ǤˤʤʤäСξ
٤ǤϤʤǤadmin members ǤϸҤΥեޥ
ȤƤޤޤΤäƤƲ

$MEMBER_LIST (default members) ե

	#.FML
		fml ưŪˤĤ륳ȡ
	#.endFML
	ɥ쥹1
	ɥ쥹2
	# ɥ쥹3
	##BYE ɥ쥹4
	ɥ쥹5

Τ褦ʷ򤷤ƤޤŪͳˤ긽ߤǤ

   # θ ǥȥȤƤƤСåоݤˤʤ
   ## ǤϤޤȤϥ

ȤʤäƤޤäƾǤ ##BYE ιԤ̵뤵ޤʳ
 ɥ쥹1  ɥ쥹5 (4) ٤ƤСåκݤˤ
оݤȤʤޤ

ˡ
ư 1.2 release version ľ塢ưϿĥݤƳ
ޤޤƳΤ # off  # skip Ϥɤ㤦Ȥ䤬
θޤ뤳Ȥˤʤޤ

ʤСեȤƤϳƹԤΥɥ쥹ʬ
ˤȤƤޤΤǡ˻Ȥäƹޤ

ʤ顢ưϿξ $MEMBER_LIST  $ACTIVE_LIST Ʊ
$MEMBER_LISTˤȤޤäƤΥեޥåȤ $ACTIVE_LIST 
ǤȲꤹɬפޤ

8.2	actives եΥեޥåȤȹ¤

$ACTIVE_LIST (default actives) ե MEMBER_LIST 
Ʊͤι¤ޤ

 actives եϳĥ줿ɽȤƳƥɥ쥹Υץ
ԤλĤʬ˻ĤȤǤޤ

	ɥ쥹	ץ	# 

	աʤ줾΢֥åδ֤ˤɬİʾ SPACE
	 TAB ȲꤷƤޤ

äƾ˲񤤤祪ץȤߤʤޤղþ # 
 ȤƹԤκǸˤǤ񤤤Ʋդ shell ƱǤ

ץ V1  V2 եޥåȤޤ

   V1 եޥåȤ

	(եޥå)	ޤȤᤪλ
	ʳ		졼

   V2 եޥåȤǤϾγĥΤ

	m=ޤȤ
	r=졼
	s=1(skip ̣)

Τ褦 alphabet=option-value ηƤޤߤΤȤ
ʳΥɤϾΤͽ󤵤Ƥޤ

ߤΥ롼 V2 Τߤ򤷤ޤä V1 -> V2 Ѵɬפ
ޤѴ

	libfml.pl  ChangeMemberList ƤФ줿

ĤޤСꥹؤΤʤ餫ѹԤʤ˼ưŪ˹Ԥʤ


8.3	actives  members ΰ㤤

եޥåŪˤϾҤ̤ǤϼưϿξϤǽҤ٤Ƥ̤
members ϥСǤ뤫ݤǧڡ actives ꥹȤǤ

ưϿǤ members Ĥǧڤꥹξ˻ȤäƤޤΤ
ɽγĥɬפä櫓Ǥ

8.4	ʣΥСꥹȡʣꥹ

	@ACTIVE_LIST	ʣꥹ
	@MEMBER_LIST	ʣΥСꥹ

ǤޤȤȤȿȤ˥ꥹȤΤΤ
ޤ
	@ACTIVE_LIST	plural member lists
	@MEMBER_LIST	plural delivery lists

ǥեȤǤ @ACTIVE_LIST  $ACTIVE_LIST Ʊˤʤޤ
@MEMBER_LIST  members  members-admin Ǥ

: ǽ˴ԤꤷƸϥ⡼ȤǤ٤Ƥ򤪤ʤȤŪ
˳ĥޤ

***
actives members ΥХååפˤĤ => daily 6.2

8.5	msendrc եΥեޥåȤȹ¤

msendrc  $MSEND_RC ˤޤΥեޥåȤ

	ɥ쥹	ǽεֹ

Ǥmsednrc  msend.pl 椹եǤmsend.pl  
$ACTIVE_LIST 򸫤ơ

	륢ɥ쥹ޤȤˤʤä
		Υɥ쥹Υȥ msendrc ˿

	륢ɥ쥹ޤȤǡɤʤʤä
		Υɥ쥹Υȥõ

	ޤȤᤪ
		ǽεֹ msendrc ˵Ͽ		

ȤȤ msendrc ФƹԤʤޤmsend.pl ʳΥץब 
msendrc 򤤤뤳ȤϤޤ

8.6	ѥɥեΥեޥåȤȹ¤
See also: utility_programs 6.17 remote_control 4 

⡼ȴλǧڤѤѥɤ¸Ƥե
$PASSWD_FILE ǥǥեȤǤ $DIR/etc/passwd ǤեޥåȤ
See also: remote_control 4 

	ɥ쥹	crypt줿ѥ

ǤĤޤ UNIX ΥѥɥեƬΣĤǶ
줿ΤǤcrypt(3) ˤĤƤϥޥ˥奢뻲

	$REMOTE_ADMINISTRATION_AUTH_TYPE = "md5";
See also: remote_control 4.6 

ꤵƤ fml.pl  crypt ؿ crypt(3) ǤϤʤ MD5 
֤褦ˤʤޤ MD5.pm ѤʤΤ perl 5 Ǥ뤳
Ȥ MD5-1.7.tar.gz Υ󥹥ȡ뤬ɬפǤMD5.pm Υ fml  
directory ˰֤Ƥޤ

admin ޥɤˤ initpass Ȥѥɽޥɤޤ
륢ɥ쥹򤳤ΥեϿʤɤ makefml passwd Ȥ
Ǥ礦makefml λȤˤĤƤ INSTALL ե򻲾ȡ

8.7	FML󥹥ȡ maintenance  version up ˴ؤ

install  makefml install Ȥޤversion up ƱͤˤƲ
ȤΤϥ󥹥ȡ뤹OSʤɤ˰¸뤳ȤΤǡmakefml
install Ȥ٤ǤʤˤäƤ뤫ΤäƤ̤ͤ cp 
Ǥ⹽ޤ:)

version up λϡ㤨мΤ褦ˤʤǤ礦

	% cd /var/tmp
	% tar zxvf fml-current.tar.gz
	% cd fml-versionֹ¾̾
	% make install

ʲǤȤ
	/usr/local/fml  executable
	/var/spool/ml/elena  elena ML
ȤȤˤޤ礦

makefml install ϤĤǤ /usr/local/fml  executable 饤֥
Ǥversion up κݤ˰㤦Ȥϴˤ̷ͣФƥ
򤷤Ƥ饤󥹥ȡȤԤʤȤǤ/var/spool/ml/elena 
βĤޤ config.ph ѹޤ

fml.pl ɮƬ lib*pl  overwrite ޤ鼫ʬǤäƤޤ
ƤϰöХååפäƤȤɬפǤ

ᥤƥʥ󥹤ڤˤˤϥޥɤΥѥͣζ̤ϥե
񤤤Ƥ٤ǽʸ¤HOOKʤɤˤ٤Ǥ㤨

	$HOME/libexec/fml/sitedef.ph 

ǹԤʤƣ̤ͣȤ

	$HOME/w/spool/fml-support/config.ph 

椹ʤɤαѥݥꥷΩƤƤȤǤ

9	Security 

9.1	Security طδܻ

Ū

   1	ǥեȤǤϤ٤Ƥǧʤ
   2	פȻפΤ̤褦ˤ
   3	路ΤϤϤȽǤ̤ͣδԤؤ

Ȥ˹Ƥޤ

9.2	Security Check Routine

եǤƱͤǤǰŪˣιͤޤ

	1 餫˴ʤΤƤ
	2 ʤΤĤƤäƤʳϵݤ
	1 deny all, permit secure conditions
	2 permit all, deny known insecure conditions.

fml  1 ΥݥꥷѤƤޤfml-support: 00950 ǤҤ٤Ƥޤ

	1.x ϳ (ؿ InSecureP)
	2.y ⷡ (ؿ SecureP)

ȤäƤޤ(^^)1.x  2.y δطϤΤޤ  1  2 ΰ㤤Ȥ
ƴְ㤤ޤ

SecureP ϰʲΤ褦ˡإޥɤȤƤ̿(᡼ΰ
ˤĤƼ¹)η٤ޤ

     	\w/\w ʬϸƨ ../ Ȥ .[a.]/ ȤϤ
       	/ OKΤȤϾõ
	ޤޤȤ m= ̤ʥ󥿥åϾõ롣

     	/^[\#\s\w\-\.\,\@\:]+$/

    ηϤ뤹
    ա \w  [A-Za-z0-9_] ʤΤǡ "-" ä

    [Extension]
	桼γĥѤ %SECURE_REGEXP Ȥϥå夬ѰդƤޤ
	Υϥå(KEYŬǤ褤)Τ줫ɽ
	˥ޥå顢ϣˤˤʤ褦ưޤ
	 YOUR OWN RISK Ʋ

	դ %INSECURE_REGEXP ϥåϤޤѥ򵭽ҤǤޤ

     	ʳޤǤ饨顼

     	üʥadmin ޥɤ admin addr m=3) 
	㳰򤷤 &SecureP ˤޤ魯

㡧	

   summary
   mget 1-20,30,last:20 mp 1
   mget 10? mp 1			(default Ǥϵʤ)
   mget 1[012]? mp 1			(default Ǥϵʤ)
   chaddr fukachan@phys.titech.ac.jp fukachan@beth.phys.titech.ac.jp 

㡧	ʤ
   mget `domainname`

㳰Ȥ:

   whois ܸ

ɤ褦Ȥ꤬ޤΤȤ̤ʤΤޤޤ
ϤǲȤ٤ʤΤǤɤϤޤ

㡧	ѥĥ(%SECURE_REGEXPȤ)

   $SECURE_REGEXP{'whois'} = '\s*whois\s+\033\$[\@B][\041-\176]+\033\([BJ]\s*';

   :
   ΥѥĴ٤٤оݤʸΤ˥ޥåΤ
   ǸΥڡꤦΤʤ顢θɬפ

[ª] 륳ޥɤΥ󥿥å
ȴطƤޤ

Quoted from 4.4BSD:/usr/share/man/cat1/sh.0 
           Shell Patterns
    
           A pattern consists of normal characters, which match them-
           selves, and meta-characters.   The meta-characters are
           ``!'', ``*'', ``?'', and ``[''.  These  characters lose
           there special meanings if they are quoted.  When command
           or variable substitution is performed and the dollar sign
           or back quotes are not double quoted, the value of the
           variable or the output of the command is scanned for these
           characters and they are turned into meta-characters.
    
           An asterisk (``*'') matches any string of characters.   A
           question mark matches any single character. A left bracket
           (``['') introduces a character class.  The end of the
           character class is indicated by a ``]''; if the ``]'' is
           missing then the ``['' matches a ``['' rather than intro-
           ducing a character class.  A character class matches any
           of the characters between the square brackets.   A range
           of characters may be specified using a minus sign.  The
           character class may be complemented by making an exclama-
           tion point the first character of the character class.
    
           To include a ``]'' in a character class, make it the first
           character listed (after the ``!'', if any).  To include a
           minus sign, make it the first or last character listed

NOTE: 1998/11/08 permit "admin add MAR+KUN@DOMAIN " syntax

  +'ed user <addr+ext@domain> (for sendmail users):
	fix to permit this address syntax when automagic registration.
	but not fix to permit command with this addr beautifully.
	# so require more eloborate design

  +'d 桼Υɥ쥹ηϤ򰷤褦˽

9.3	DNS Spoofing

ǥեȤǤϲ⤷Ƥޤ $LOG_CONNECTION ONλ

	$LOG_CONNECTION = 1;

ͥĥäƤIPɥ쥹 $PeerAddr ꤷޤ
firewall ۤäꤹ̵̣Ǥ$PeerAddr Ȥѿ
ۥȤIPɥ쥹¸ޤ$PeerAddr Ȥä DNS Spoofing
Check ɤHOOKݤФ褤Ǥ礦

9.4	Address Spoofing

̵ääȲlayerǲȤƤ͡

9.5	SYN Flooding

⥫ͥ٥áŪк񤷤

9.6	Email ɥ쥹ɽRFC822

	From: ʤ / ʤ (ʤ)

Ȥʥեɤȷϩǥ顼ˤʤäơ
ʤȤޤsecuriity طäʤΤǾܤȤ
ޤ󤬡

(߷׻ۤȤ)ֵ路ΤϤϤפȤȤƤޤ
sendmail ΥɤФʤƤΤǤޤ

RFC822 BNFɽǤǤ³ɽƤʸǤΤ˻ȤäƤ
ʤΤǤɽΥ饹򤫤ʤ¤ɥ쥹ȤäƤʤ
̿ǤʤǽϤޤ

ǤϡɤΤʤ褤ΤȤȤ٤Ƥ夷ɽϤޤ
ޤ󤬡

9.7	smrsh.c

smrsh.c ϡ
	"|program ..."
 program ¹Ԥ뤫ǤϤʤ program ̾ /usr/adm/sm.bin 
ˤ뤫ɤ򸫤Ƥޤ access(2) ǡ

äơ/usr/adm/sm.bin/fml.pl Ǥ:-)

9.8	access(2) 

smrsh.c  access(2) ȤäƤޤĤ

--- NetBSD 1.2REL /usr/share/man/cat2/access.0

CAVEAT
     Access() is a potential security hole and should never be used.

4th Berkeley Distribution     September 15, 1996                             2

--- perl5.003/perl.c

	/* On this access check to make sure the directories are readable,
	 * there is actually a small window that the user could use to make
	 * filename point to an accessible directory.  So there is a faint
	 * chance that someone could execute a setuid script down in a
	 * non-accessible directory.  I don't know what to do about that.
	 * But I don't think it's too important.  The manual lies when
	 * it says access() is useful in setuid programs.
	 */

9.9	Precedence Priority

sendmail 8.8.5 operations manual tells:

             5.7.  P -- Precedence Definitions

                     Values for the "Precedence:" field may be defined
                using  the  P  control line.  The syntax of this field
                is:

                    Pname==num

                When the name is found in a "Precedence:"  field,  the
                message  class  is  set  to  num.  Higher numbers mean
                higher precedence.  Numbers less than  zero  have  the
                special  property  that if an error occurs during pro-
                cessing the body of the message will not be  returned;
                this  is  expected  to be used for "bulk" mail such as
                through mailing  lists.   The  default  precedence  is
                zero.  For example, our list of precedences is:

                    Pfirst-class=0
                    Pspecial-delivery=100
                    Plist=-30
                    Pbulk=-60
                    Pjunk=-100

                People  writing  mailing list exploders are encouraged
                to use "Precedence: list".  Older versions of sendmail
                (which discarded all error returns for negative prece-
                dences)  didn't  recognize  this  name,  giving  it  a
                default  precedence  of  zero.  This allows list main-
                tainers to see error returns on both old and new  ver-
                sions of sendmail.

9.10	4.4BSD vacation

     No message will be sent unless login (or an alias supplied using the -a
     option) is part of either the ``To:'' or ``Cc:'' headers of the mail.  No
     messages from ``???-REQUEST'', ``Postmaster'', ``UUCP'', ``MAILER'', or
     ``MAILER-DAEMON'' will be replied to (where these strings are case insen-
     sitive) nor is a notification sent if a ``Precedence: bulk'' or
     ``Precedence: junk'' line is included in the mail headers.  The people
     who have sent you messages are maintained as a db(3) database in the file
     .vacation.db in your home directory.

9.11	File and Directory Permission Default

umask(2) default is customizable.

	$FML_UMASK	for fml.pl
	$MSEND_UMASK	for msend.pl
	$UMASK	is used if neither $FML_UMASK nor $MSEND_UMASK is not defined.

9.12	Directory Permissions

ʣοͤ fmlserv Ȱ˻Ȥ fmlserv ϥСꥹȤѤ
Τ group permission ɬפǤ
 Τ root process СǤʤƤǤʤϤʤϤ
 Ǥroot process 䤹ȤϤꤿʤΤ

	$USE_FML_WITH_FMLSERV

ѿϤ̣뤿ѿǤ̤ fml.pl  $DIR ٤ 
fmlserv Ȥ directory ʤ鼫ưŪꤷޤޤʤ
Ȥ explicit ꤷƲ줫 $GID  fmlserv ΤƳ
줿ѿǤ

9.13	sendmail 8.8 ˤ check_* 롼륻åȤˤĤ

ܤ CF ɤǤ͡sendmail 8.8 Ǥ͡ʥưפ˥
ޥǤ褦˰ʲΤ褦ʥ롼륻åȤѰդƤޤCF
ʪ­ʤʤϤʤȤ⤦ˤϤȤäƤꤴ 
sendmail.cf 񤭤ޤ

    check_mail          ȯԤΥå
    check_rcpt          ԤΥå
    check_relay         SMTP³Υå
    check_compat        ȯԤӼԤΥڥˤĤƤΥå

ޤSMTPͥ³׵Ф tcp_wrapper Υ饤֥Ǥ
libwrap.a Ȥ褦 sendmail  compile ƤС
/etc/hosts.allow ʤɤǤ褦ˤʤޤNetBSD 1.3 ʤɤκǿ
OSǤϤ줬ۤ륽ǤΥǥեȤǤ
ʤߤ tcp_wrapper ˤǡ̾ sendmail Ǥ

    Example:
    
    [/etc/hosts.allow]
    
    sendmail: mikoto.fml.org
    
    [/etc/hosts.deny]
    
    ALL: ALL
    
check_mail  check_rcpt SMTP롼 srvrsmtp() Ǥ줾 
MAIL FROM:  RCPT TO: ̿ΰФŬѤޤĤޤꤽ줾
 SMTP Ϥ MAIL FROM:Υɥ쥹(ȯ) RCPT TO:Υɥ쥹
()Υå˻Ȥޤ

check_relay SMTPͥĥ줿ŬѤޤcheck_relay 
 validate_connection() ǸƤФ³Ω SMTPͥ³
ĤƤۥȤΤΤʤɤˤĤƥå򤷤ޤ
validate_connection() Ǥ tcp_wrapper ǽǤ()

check_compat ñʥåǤϤʤԤȼͤȤȽ򤷤ʤ
Фʤʤ褦ʣȽ˻Ȥޤ
check_compat 롼 deliver() ŬѤ᡼
ΥڥˤĤSMTP translation Ǥʤ᡼ƤˤĤ
ŬѤޤ

9.14	SMTP and Authentication

draft-myers-smtp-auth-11.txt (submitted to be Proposed Standard)
RFC2222 (SASL)

SASL: Simple Authentication and Security Layer

draft-hoffman-smtp-ssl-06.txt (SMTP over secured layer)

9.15	&system() function

system  perl ؿǤϤʤȼ˽񤤤 system ȤäƤޤ
Τޤưʤ䡢fork() ʤNTʤɤǤ perl ° 
system() Ȥ虜ʤ礬ޤǥեȤǤ perl °
 system() ȤäƤޤ

ޥɤޤưʤ 

	$INSECURE_SYSTEM = 1;  (default 0)

Ȥѿ򤷤ưȤ뤫⤷ޤ

ʤ NT Ǥ system() ȤäƤޤ

ξǤ⥷󥿥åå˹Ԥʤ졢θ system 
ƤǤޤ

10	饤֥ؿ

ǤϡޥΩʥ饤֥ؿ򤷤ޤ
ȤꤢФä:-)

10.1	daemon (libutils.pl)

(4.4BSDˤʤä) Υץǡˤޤ
4.4BSDdaemon()ˤϰޤޤEmulateƤޤ

fml.pl  cron.pl ưʤ顢ĤȤޤȤǤ
:-)
4.3BSDǤưǧƤʤɡ
ʤˤ줷äơmailq ˤΤʤ:-)

λȤ /dev/console Ȥ Ȥ

	&use('utils');
	&daemon;
	ǡˤʤäƤ餹Ż

ߤˤ &daemon; ΤȤTTYڤSTDIN,STDOUT,STDERR
ޤ
ա4.4BSD setsid() åϤ뤳

:

	$FML_EXIT_HOOK .= q#
		&use('utils');
		&daemon;
		exec("$LIBDIR/bin/cron.pl $DIR -a");
	#;

$NOT_USE_TIOCNOTTY  åȤʤȡޤ daemonˤʤäƤ
⤷ޤ󤬡
ΤؤεưϤޤҤȤĤ狼ʤ

4.4BSD Ǥ setsid() ǤΤؤκ٤ȤϾά

10.2	Sendmail (libsmtp.pl)

SYNOPSIS
	&Sendmail($to, $subject, $body, @to);

	$to		
	$subject	᡼subject
	$body		᡼ʸ
	@to		$to ʳʣ襢ɥ쥹

10.3	SendFile (libsmtp.pl)

SYNOPSIS
	&SendFile($to, $subject, $file, $zcat, @to);

	$to		ɥ쥹
	$subject	᡼Subject
	$file		٤ե
	$zcat		٤ե뤬gzipƤѴ
			1 zcat¹
			2 uuencode¹
	@to		ʳʣΥɥ쥹

	ºݤˤϡ$zcat	@to ȥϻȤäƤޤ󤬡
	ġ裴ȥʹߤʤݾڤʤ

10.4	NeonSendFile (libsmtp.pl)

ʣΥɥ쥹ȥեդ˥ϥɥ󥰤᡼֤
󥿡ե

SYNOPSIS
	&NeonSendFile(*to, *subject, *files);

	@to		ɥ쥹ꥹ
			ʬΥɥ쥹 $to ˤϤƤϣ
	$subject	᡼Subject
	@files		ꤿեʣǽ

10.5	Addr2FQDN              (fml.pl)

SYNOPSIS:
	&Addr2FQDN($addr);

⤷Ϳ줿ʸ($addr) @ ޤǤʤ 

	$addr@$FQDN

Ѵ@ ޤǤФΤޤ֤

10.6	AddressMatch           (fml.pl)
See also: address_manipulate 2.1 

SYNOPSIS:
	&AddressMatching($addr1, $addr2)

$addr1  $addr2 ƱΤɤĴ٤롣

10.7	MailListMemberP        (fml.pl)

SYNOPSIS:
	&MailListMemberP($addr)

ɥ쥹Сեθ(@MEMBER_LIST)ˤ뤫ɤĴ
롣⤷ФΥե֤̾

10.8	MailListActiveP        (fml.pl)

SYNOPSIS:
	&MailListActiveP($addr)

ɥ쥹Сեθ(@ACTIVE_LIST)ˤ뤫ɤĴ
롣⤷ФΥե֤̾

10.9	Append2                (fml.pl)

SYNOPSIS:
	&Append2($string, $file)

appends $string to $file

10.10	AutoRegist             (libutils.pl)

SYNOPSIS:
	&AutoRegist(*Envelope);
	&AutoRegist(*Envelope, $string);

ưϿ롼Ū

	&AutoRegist(*Envelope, ʸ);

ȸƤӽФȤʸϿ٤ɥ쥹ˤ뤳ȤǤ

10.11	ChangeMemberList       (libfml.pl)

$ADDR_CHECK_MAX(default 10) 󡢥ɥ쥹å򸷤ʤ
&DoChangeMemberList(@_); 򷫤֤ŬѤ롣ĤޤǥեȤǤϣ
ʳޤǤɥ쥹å򤷤ʤΤ

	fukachan@sapporo.iij.ad.jp

 iij.ad.jp ޤǤ٤ʤǤۣʾ
ʳĤޤ sapporo.iij.ad.jp ޤǥɥ쥹å롣

:

	fukachan@iij.ad.jp
	fukachan@sapporo.iij.ad.jp

ξե˸硣	

10.12	ChangePasswd           (libcrypt.pl)

SYNOPSIS:
	&ChangePasswd($PASSWD_FILE, $addr, $new)

$PASSWD_FILE  $addr ФƤΥѥɤ $new ˤ롣
ʤλǥѥǧڤϽäƤʤФʤʤ

10.13	CheckMember            (fml.pl)

Go to 10.25

ؿ̾ѹߴΤĤäƤ롣

SYNOPSIS:
	 &CheckMember($addr, $list);

$list  $addr 뤫ɤ٤롣

10.14	CmpPasswd              (libcrypt.pl)

SYNOPSIS:
	&CmpPasswd($encrypt, $plain-passwd)

etc/passwd 
	cryptäѥ ($encrypt)

	user  plain password ($plain-passwd)
Ӥ

10.15	CmpPasswdInFile        (libcrypt.pl)

SYNOPSIS:
	&CmpPasswdInFile($PASSWD_FILE, $addr, $pass)

$PASSWD_FILE Υɥ쥹 $addr Фѥ $pass ǧڤǤ뤫
ݤ

10.16	Conv2mailbox           (fml.pl)

SYNOPSIS:
    &Conv2mailbox($from, *e)

$from  ɥ쥹ʬʥ桼ɥᥤ ʬˤФ
ʤ *e ϤäƤʤƤ褤

10.17	DecodeMimeStrings      (libMIME.pl)

SYNOPSIS:
	$s = &DecodeMimeStrings($s);

$s MIMEʸܸѴ롣ؿ֤ܸͤ첽줿ʸ
Ǥ롣

10.18	Flock                  (fml.pl)

SYNOPSIS:
	&Flock();

$FP_SPOOL_DIR Ф flock(2) 򤫤롣

ʤ $Timeout{'flock'} (default 3600) ø SIGALRM  fml.pl ֤
ꤷƤ롣λ $SIG{'ALRM'} 줿ؿ¹Ԥ롣
ɸ &TimeOut; ¹Ԥ졢fml.pl ϥॢȥ顼ǽ롣

10.19	Funlock                (fml.pl)

$FP_SPOOL_DIR Ф flock(2) Ϥ

10.20	GetID                  (libfml.pl)

SYNOPSIS:
	&GetID;

$SEQUENCE_FILE ֤ͤ

10.21	GetTime                (fml.pl)

SYNOPSIS:
	&GetTime;

localtime(); ¹ԤեޥåȤΰ㤦Ĥѿ(Х)
ꤹ롣

    $Now = sprintf("%02d/%02d/%02d %02d:%02d:%02d", 
		   $year % 100, $mon + 1, $mday, $hour, $min, $sec);
    $MailDate = sprintf("%s, %d %s %d %02d:%02d:%02d %s", 
			$WDay[$wday], $mday, $Month[$mon], 
			1900 + $year, $hour, $min, $sec, $TZone);

    $CurrentTime = sprintf("%04d%02d%02d%02d%02d", 
			   1900 + $year, $mon + 1, $mday, $hour, $min);

10.22	Lock                   (fml.pl)

SYNOPSIS:
	&Lock;

	if $USE_FLOCK åȤ줤ʤ
		&Flock;
	else 
		liblock.pl Ƥ link() Ȥ
		UNIX V7 夫餢äå르ꥺȤ
		require liblock.pl;
		&V7Lock;

10.23	Log                    (fml.pl)

SYNOPSIS:
	&Log($s);

$s ʸդȤȤ $LOGFILE ˽񤭹ࡣ

10.24	LogWEnv                (fml.pl)

SYNOPSIS:
	&LogWEnv($s, *e);



	&Log($s)
	$e{'message'} .= "$s\n";

Ǥ$LOGFILE ؤν񤭹ߤȡ&Notify ֤fml Status Report
Ƥ $s դä롣

10.25	Lookup (fml.pl)

SYNOPSIS:
	 &Lookup($addr, $list);

$list  $addr 뤫ɤ٤롣

10.26	MailListActiveP	(fml.pl)

SYNOPSIS:
	&MailListActiveP($address);

$address ϥ᡼󥰥ꥹȤΥСݤĤޤǧڤΥꥹȤ
ޤޤƤ뤫Ȥϸ¤ʤȤա֤ͤϤΥɥ쥹
ե̾NULL

10.27	MailListMemberP	(fml.pl)

SYNOPSIS:
	&MailListMemberP($address);

$address ϥ᡼󥰥ꥹȤꥹȤ˴ޤޤƤ뤫ݤ
֤ͤϤΥɥ쥹ޤե̾NULL

10.28	Mesg                   (fml.pl)

SYNOPSIS:
	&Mesg(*Envelope, $s);

&Notify ֤ fml Status ReportƤ $s դä롣

	$Envelope{'message'} .= "$s\n";

10.29	NewSyslog              (libnewsyslog.pl)
See also: daily 6.4 

newsyslog(8) like function.

10.30	Notify                 (fml.pl)

SYNOPSIS:
	&Notify;

褦 "fml Status report $ML_FN" ֤Ƥؿ

   :	$Envelope{'message:h:to'} 
		⤷̤ξ $Envelope{'Addr2Reply:'} Ȥ
   (ʣ):	$Envelope{'message:h:@to'} ˥ɥ쥹ꥹȤ롣
   Subject:	$Envelope{'message:h:subject'}
		default  "fml Status report $ML_FN"

$PROC_GEN_INFO (default 'GenInfo') إץåĤ
ơ$Envelope{'message'} 桼֤

ޤ$Envelope{'error'} ФԤ롣

λΥ᡼κǸ˸֤褦ʤץåˤ

	$GOOD_BYE_PHRASE	(good bye phrase)
	$FACE_MARK		(face mark)

ѹǤޤޤ $FACE_MARK Ȥѿ⤢ޤ

	$GOOD_BYE_PHRASE = "\tBe seeing you!   ";
	$FACE_MARK	 = "(^^)P";

2:	Episode 42()
	$GOOD_BYE_PHRASE = &JSTR("\tǥ    ");

10.31	RunHooks               (fml.pl)

SYNOPSIS:
	&RunHooks;

⤷ $FML_EXIT_HOOK 

	eval $FML_EXIT_HOOK

10.32	ExecNewProcess		(fml.pl)

⤷ $FML_EXIT_PROG Ƥ

	exec $FML_EXIT_PROG;

¹Ԥ롣

10.33	SecureP                (fml.pl)
See also: 9 

SYNOPSIS:
	&SecureP($request);

ޥΥ桼̥ͣФؤΥꥯ($request)ɰȻפ
ɥ󥿥åΤߤɽƤ뤫ɤĴ٤롣㳰
 SecureP ƤӽФ˥Хǽ뤫 
%SECURE_REGEXP (ꥹϼʬ餦)
See also: 9.2 

10.34	SendBackInOrder     (libfop.pl)

SYNOPSIS:
	&SendBackInOrder($returnfile, $total, $subj, $sleeptime, @to)

	$returnfile	tmp/uja Τ褦ʥե
	$total		ǲʬ䤷Ƥ뤫
	$subj		Subject: 
	$sleeptime	ʬ뤫
	@to		ꥹ

ޤȤꥵ msend.pl  mget ǻȤƤɽŪʥե
֤ؿ

10.35	SocketInit             (libsmtp.pl)

SYNOPSIS:
	&SocketInit;

ץ̿ϤˤϤƤ֡libsmtp.pl ˤΤǡ
̤ϤɤǤƤ٤롣

10.36	TurnOverW0             (libnewsyslog.pl)

SYNOPSIS:
	&NewSyslog'TurnOverW0($LOG_MESSAGE_ID);#';

newsyslog ŬѤ롣

 $LOG_MESSAGE_ID  newsyslog ŬѤ롣

10.37	Unlock                 (fml.pl)
See also: 10.22 

Ҥ Lock εդ롣

10.38	Warn                   (fml.pl)

SYNOPSIS:
	&Warn($subject, $body);

Ȥ

	&Sendmail($MAINTAINER, $subject, $body);

ƱĤޤ԰Υ᡼Ф

10.39	WholeMail              (fml.pl)

SYNOPSIS:	
	&WholeMail;

Υ᡼򥹥ڡʸǥȤΤ֤ǥȤϤѤä
餫ʸǰ㤦̣򼨤褦ˤ뤿Ǥ롣顼᡼
ǻȤ礬¿ᡢѤʥեޥåȤˤξٹϤñ
ǥȤǤޤ٤Ǥ顼ǥХåΤˤϡǤ
Υ᡼Ԥإեɤ٤Ȼפ

$MIME_CONVERT_WHOLEMAIL 򥻥åȤMIMEѴ򤷤᡼ղä
뤬顼᡼ǤѤʥ᡼⤢ꤦ뤿侩ʤ

10.40	eval                   (fml.pl)

SYNOPSIS:
	&eval($eval_string)

$eval_string  eval 롣$COMPAT_FML15 ꤹ eval 
ɤŬѤfml 1.5 Υǡ¤ǤۤȤưϤǤ롣
ǤݾڤϤʤȻפ

10.41	ipc                    (libutils.pl)

SYNOPSIS:
	&ipc(*ipc, *r);

ץ̿󥿡ե
=
Interface of InterProcess Communication based on Berkeley Socket mechanism.

	$ipc{'host'}	Υۥ
	$ipc{'serve'}	ݡ (/etc/services)
	$ipc{'tcp'}	TCP/IP 
	$ipc{'pat'}	¤Υѥ
	@ipc		ꥵФؤINPUTʸ
	$r		Ϥ֤롣

10.42	system                 (libutils.pl)

SYNOPSIS:
	&system($s, $out, $in, $read, $write)

$s ʸ¹Ԥ롣åᥫ˥ŪˣϣӤ󶡤 
system(3) ȤۤȤѤʤ

κ

	$in ե뤫ɤ
	$outեؽ

	$write եϥɥ뤫ɤߤ
	$read եϥɥؽ

ʤ	

    /[\$\&\*\(\)\{\}\[\]\'\\\"\;\\\\\|\?\<\>\~\`]/

ʸ˥ޥå security Τ system() ϼ¹Ԥʤ

11	Porting to other Operationg Systems

11.1	Micro$oft NT 4.0

	$HAS_GETPWUID
	$HAS_GETPWGID
	$HAS_ALARM

ѿOFFˤʤޤU*ix ǤϥǥեȤONǤ 
饤֥ˤäƤϼѿ򥻥åȤƤΤ⤢ޤ

	$COMPAT_WIN32 = 1;

11.2	sys/ Directory

fml.pl μιԤ

    if ($COMPAT_ARCH)  { require "arch/${COMPAT_ARCH}/depend.pl";}

Architecture ¸ɤɤ뤿ΤΤǤ
Architecture ¸

	sys/OS/perlץ

Τ褦¤Ŭǥ󥰤ޤ

Appendix A	ѿ̾ؿ̾̾դδˤĤ

Appendix A.1	ؿ̾

Capital by default. There are exceptional cases.

 㳰

 ؿСɤäȰտޤƤ

use()
eval()
system()
daemon()

 mget3_*() ؿ

proc/libsendfile.pl:108:sub mget3 
proc/libsendfile.pl:334:sub mget3_SendingEntry
proc/libsendfile.pl:393:sub mget3_unlink
proc/libsendfile.pl:440:sub mget3_Init
proc/libsendfile.pl:472:sub mget3_Reset
proc/libsendfile.pl:483:sub mget3_Getopt
proc/libsendfile.pl:516:sub mget3_Search
proc/libsendfile.pl:587:sub mget3_SearchInArchive
proc/libsendfile.pl:687:sub mget3_MHExpand
proc/libsendfile.pl:704:sub mget3_V2search
proc/libsendfile.pl:738:sub mget3_V1search

 fml_local 桼ؿ 
   ϥ桼ؿʤΤǡ̤ΰ̣ǤδˤϽäƤʤ

libexec/fml_local.pl:689:sub sendback
libexec/fml_local.pl:725:sub getmyspool_nopasswd
libexec/fml_local.pl:740:sub getmyspool
libexec/fml_local.pl:799:sub getmyspool2
libexec/fml_local.pl:829:sub forward
libexec/fml_local.pl:874:sub discard{ 1;}
libexec/fml_local.pl:880:sub getback { &sendback(@_);}
libexec/fml_local.pl:884:sub getmyspool_pw { &getmyspool(@_);}

Appendix B	some debug information
Appendix B.1	ɤƤͻҤ (ξ)

$LIBDIR, $DIR ν

316:        require 'libloadconfig.pl'; &__LoadConfiguration('__KERN__');
57:         require 'default_config.ph';
73:             require("$DIR/config.ph");
318:        require 'libsmtp.pl';               # a library using smtp
474:        if ($COMPAT_ARCH)  { require "sys/$COMPAT_ARCH/depend.pl";}
476:        if ($DUMPVAR) { require 'dumpvar.pl'; &dumpvar('main');}
477:        if ($debug)   { require 'libdebug.pl';}

	$FP_*_DIR ν

880:            require("module/$LANGUAGE/liblangdep.pl");
39:         require 'jcode.pl'; # not needed but try again
1363:       require 'libdist.pl';
768:        if ($CF_DEF && $RELAY_HACK) { require 'librelayhack.pl'; &RelayHack;}


		INDEX

/usr/bin/newsyslog                         ...   4.3 
access(2)                                  ...   9.8 
$ACTIVE_LIST                               ...   7.7 
@ACTIVE_LIST                               ...   8.4 
actives  members ΰ㤤                  ...   8.3 
actives եΥեޥåȤȹ¤       ...   8.2 
Addr2FQDN                                  ...   10.5 
AddressMatch                               ...   10.6 
Address Spoofing                           ...   9.4 
Append2                                    ...   10.9 
AutoRegist                                 ...   10.10 
'Body'                                     ...   6.5 
$CFVersion                                 ...   3.3 
$CHADDR_KEYWORD                            ...   6.5 
ChangeMemberList                           ...   10.11 
ChangePasswd                               ...   10.12 
$CHECK_MESSAGE_ID                          ...   4.2 
CheckMember                                ...   10.13 
ClearEvent                                 ...   6.8 
CmpPasswd                                  ...   10.14 
CmpPasswdInFile                            ...   10.15 
$COMMAND_CHECK_LIMIT                       ...   6.5 
$COMPAT_ARCH                               ...   11.2 
$COMPAT_CF1                                ...   3.4 
$COMPAT_FML15                              ...   3.5 
$COMPAT_FML20                              ...   3.6 
$COMPAT_WIN32                              ...   11.1 
$COMPRESS                                  ...   5.4 
config.ph                                  ...   8.7 
$CONFIRMATION_FILE                         ...   7.7 
Conv2mailbox                               ...   10.16 
daemon()                                   ...   10.1 
DecodeMimeStrings                          ...   10.17 
$DEFAULT_MGET_SUBJECT (config.ph CFv2)     ...   5.2 
$DEFAULT_MGET_SUBJECT (obsolete)           ...   5.2 
$DENY_FILE                                 ...   7.7 
$DIR                                       ...   6.3 
$DIR/etc/passwd                            ...   8.6 
DNS Spoofing                               ...   9.3 
$DO_NOTHING                                ...   7.8 
$DUMPVAR                                   ...   7.9 
dumpvar.pl                                 ...   7.9 
Email ɥ쥹ɽ                       ...   9.6 
%Envelope                                  ...   7.3 
eval                                       ...   10.40 
ExecNewProcess                             ...   10.32 
$FACE_MARK                                 ...   7.8 10.30 
'flock'                                    ...   6.7 
Flock                                      ...   10.18 
flock(2)                                   ...   6.9 
$FLOCK_TIMEOUT(Obsolete)                   ...   6.7 
$FML	                                      ...   7.8 
fml.plȰ                               ...   6.3 
$FML_EXIT_HOOK                             ...   5.5 
fml process                                ...   6 
fml եΥեޥåȤȹ¤       ...   8 
$FP_SPOOL_DIR                              ...   7.1 
$FP_TMP_DIR                                ...   7.1 
$FP_VAR_DIR                                ...   7.1 
$FP_VARDB_DIR                              ...   7.1 
$FP_VARLOG_DIR                             ...   7.1 
$FP_VARRUN_DIR                             ...   7.1 
$FP_VARRUN_DIR/lockfile.v7                 ...   6.9 
Funlock                                    ...   10.19 
GetID                                      ...   10.20 
GetTime                                    ...   10.21 
$GID                                       ...   9.12 
$GOOD_BYE_PHRASE                           ...   10.30 
$GUIDE_CHECK_LIMIT                         ...   6.5 
$GUIDE_FILE                                ...   7.7 
$GUIDE_KEYWORD                             ...   6.5 
$GUIDE_REQUEST                             ...   7.8 
$HAS_ALARM                                 ...   11.1 
$HAS_GETPWGID                              ...   11.1 
$HAS_GETPWUID                              ...   11.1 
'Header'                                   ...   6.5 
$HELP_FILE                                 ...   7.7 
How to maintain the installed fml source   ...   8.7 
$INCLUDE_SIM_PATH                          ...   7.8 
$INDEX_FILE                                ...   7.7 
%INSECURE_REGEXP                           ...   9.2 
$INSECURE_SYSTEM                           ...   9.15 
InSecureP                                  ...   9.2 
ipc                                        ...   10.41 
ish                                        ...   5.15 5.16 
$ISH                                       ...   5.4 5.15 
$LHA                                       ...   5.4 5.15 
libcompat_cf1.pl                           ...   3.4 
libcompat_cf2.pl                           ...   3.4 
$LIBDIR                                    ...   6.3 
libnewsyslog.pl                            ...   4.3 
librfc1153.pl                              ...   5.14 
Lock                                       ...   10.22 
$LOCK_EX                                   ...   6.9 
$LOCK_FILE                                 ...   7.7 
$LOCK_NB                                   ...   6.9 
$LOCK_SH                                   ...   6.9 
$LOCK_UN                                   ...   6.9 
Log                                        ...   10.23 
$LOG_CONNECTION                            ...   9.3 
$LOG_MESSAGE_ID                            ...   7.7 
$LOGFILE                                   ...   7.7 
LogWEnv                                    ...   10.24 
lzh                                        ...   5.15 5.16 
$MAIL_LENGTH_LIMIT                         ...   5.7 
MailListActiveP                            ...   10.8 
MailListMemberP                            ...   10.7 
maintenance                                ...   8.7 
%MAKE_FML                                  ...   7.8 
$MAX_TIMEOUT                               ...   6.7 
@MEMBER_LIST                               ...   8.4 
$MEMBER_LIST                               ...   7.7 
members եΥեޥåȤȹ¤       ...   8.1 
Mesg                                       ...   10.28 
$MESSAGE_ID_CACHE_BUFSIZE                  ...   7.7 
mget                                       ...   5 
mget3                                      ...   5.3 
&mget3_SendingEntry                        ...   5.5 
mget3 ֤ץ                   ...   5.5 
%mget_list                                 ...   5.5 
$MGET_LOGFILE                              ...   7.7 
$MGET_MODE_DEFAULT                         ...   5.2 
$MGET_SEND_BACK_FILES_LIMIT                ...   5.8 
$MGET_SEND_BACK_SLEEPTIME                  ...   5.5 
$MGET_SUBJECT_TEMPLATE                     ...   5.2 
mget 3ΥǥեȤѹ               ...   5.2 
Micro$oft NT 4.0                           ...   11.1 
$MIME_CONVERT_WHOLEMAIL                    ...   10.39 
msednrc եΥեޥåȤȹ¤       ...   8.5 
$MSEND_RC                                  ...   7.7 
%MSendOpt                                  ...   5.2 
NeonSendFile                               ...   10.4 
NewSyslog                                  ...   10.29 
&NewSyslog                                 ...   4.3 
newsyslog(8)                               ...   4.3 
@NEWSYSLOG_FILES                           ...   4.3 
$NEWSYSLOG_MAX                             ...   4.3 
$NOT_SHOW_DOCMODE (config.ph CFv2)         ...   5.2 
Notify                                     ...   10.30 
$NULL                                      ...   7.8 
$OBJECTIVE_FILE                            ...   7.7 
$OT_SHOW_DOCMODE (obsolete)                ...   5.2 
$PASSWD_FILE                               ...   8.6 
$PeerAddr                                  ...   9.3 
Precedence                                 ...   9.9 
$REJECT_ADDR                               ...   4.1 
$REJECT_ADDR_LIST                          ...   7.7 
RFC1153                                    ...   5.13 
&Rfc1153Custom                             ...   5.14 
RFC822                                     ...   9.6 
RFC934                                     ...   5.12 
$RPG_ML_FORM_FLAG                          ...   7.8 
RunHooks                                   ...   10.31 
%SECURE_REGEXP                             ...   9.2 
SecureP                                    ...   9.2 10.33 
SecurePγĥ: %INSECURE_REGEXP            ...   9.2 
SecurePγĥ: %SECURE_REGEXP              ...   9.2 
SendBackInOrder                            ...   10.34 
SendFile                                   ...   10.3 
Sendmail                                   ...   10.2 
sendmail -> fml ư                   ...   6.2 
$SEQUENCE_FILE                             ...   7.7 
SetEvent                                   ...   6.8 
setsid()                                   ...   10.1 
$Sigarlm                                   ...   6.7 
site_init.ph                               ...   6.4 
sitedef.ph                                 ...   8.7 
sitedef.ph                                 ...   6.4 
SJIS (lha + ish / lha + uuencode)          ...   5.16 
$SLEEPTIME                                 ...   5.5 
smrsh.c                                    ...   9.7 
$SMTPLOG                                   ...   7.7 
SocketInit                                 ...   10.35 
struct envelope e;                         ...   7.3 
$SUMMARY_FILE                              ...   7.7 
SYN Flooding                               ...   9.5 
system                                     ...   10.42 
$TAR                                       ...   5.4 
Tick                                       ...   6.8 
$TMP_DIR                                   ...   7.6 
TurnOverW0                                 ...   10.36 
Unlock                                     ...   10.37 
$USE_FLOCK                                 ...   6.9 
$USE_FML_WITH_FMLSERV                      ...   9.12 
$USE_WARNING                               ...   5.6 
uuencode                                   ...   5.16 
$UUENCODE                                  ...   5.4 
vacation                                   ...   9.10 
$VARLOG_DIR/_smtplog                       ...   7.7 
version up                                 ...   8.7 
Warn                                       ...   10.38 
$WELCOME_FILE                              ...   7.7 
whoisܸ                        ...   9.2 
WholeMail                                  ...   10.39 
$ZCAT                                      ...   5.4 
̥ͣФư                           ...   6.1 
󥹥ȡΥᥤƥʥ󥹤version up   ...   8.7 
ǡ¤ν                         ...   7.4 
ѥɥեΥեޥåȤȹ¤     ...   8.6 
᡼Υإå                             ...   6.5 
᡼Υܥǥ                             ...   6.5 
饤֥ؿ                             ...   10 
å르ꥺ                         ...   6.9 
ؿ̾ Naming Convention                 ...   7.2 
ѿ Naming Convention                   ...   7.1 
