fml8 塼ȥꥢ (С 7.98.18-20121230)

Dr . Ken'ichi Fukamachi

FML.ORG

    < fukachan@fml.org >
        

Copyright (C) 2001,2002,2003,2004,2005,2006,2008,2009,2010 Ken'ichi Fukamachi

All rights reserved. This program is free software; you can redistribute it and
/or modify it under the same terms as Perl itself.

ܥɥȤϡ᡼󥰥ꥹȥ(ɥ饤) fml С 8 (fml8) Υ
˥奢Ǥ

fml8 ΤϡǤ˥ץ󥯥ƥȹͤƤޤߤΥơ
ϡʤ Release Candidate (RC) ¤Ȥ֤ŤǤΤ
СֹȤ 7.98.x ȤֹĤƤޤ fml8 RC ˤʤ
7.99.x ͽǤ

ߤ fml8 ưǽ TODO ꥹȤ http://www.fml.org/software/fml8/fml
/doc/ja/todo/STATUS.txt  fml4  fml8 ˤĤƤϡ  Chapter 8 
ȤƲ

ʤʲδĶưӤǧƤޤ(ܤϾҤ STATUS ɥ
򻲾ȤƲ)

        perl 5.10.0  on NetBSD 5.0.2
        perl 5.10.0  on NetBSD 5.0
        perl 5.8.8   on NetBSD 4.0
        perl 5.8.8   on NetBSD 2.0.2
        perl 5.8.8   on NetBSD 2.0
        perl 5.8.5   on NetBSD 2.0
        perl 5.8.5   on NetBSD 1.6
        perl 5.6.1   on NetBSD 1.5.x (1.5 stable)
        perl 5.6.1   on NetBSD 1.6
        perl 5.6.1   on FreeBSD 5.2.1
        perl 5.00503 on FreeBSD 4.3 STABLE
        perl ?       on FreeBSD 4.6 RELEASE
        perl 5.00503 on FreeBSD 4.7 RELEASE-p3
        perl 5.00503 on FreeBSD 4.6.2 RELEASE
        perl 5.6.1   on Turbolinux Server 8 (qmail)
        perl 5.6.1   on Redhat Linux 7.2 (postfix)
        perl 5.00503 on Redhat Linux 6.2 (sendmail8.11.6)
        postfix       + perl 5.6.1 on Solaris 7
        postfix 2.0.3 + perl 5.6.1 on Solaris 9



Table of Contents
Ϥ

    fml8 ץȤθ
     fml ؤƻ
    fml4  fml8 γȯˤĤ
    ᡼󥰥ꥹ
    ո罸
    ܥ塼ȥꥢˤѸˤĤ
    쥷԰

        ̤ͣȤϡ
        fml8 γ
        fml8 Υɤɤ
        Unix Ǥ fml Υ󥹥ȡ
        Unix ǣ̤ͣ
        Microsft 2000/NT Ǥ fml8 Υ󥹥ȡ
        fml4 Σ̤ͣ fml8 Σ̤ͣѴ
        fml4  fml8 
        fml8 Υåץ졼/󥰥졼
        CGI 
        apache 
        ƥ
        ̤ͣΥСǤ뤳
        ̥ͣоǥޥɤȤ(̴ͣԤ)Ǥ뤳
        եѹ
        [fml8 Ǥ] ե̾ˤĤ
        ޥλ
        إåν񤭴
        ʸν񤭴
        ޥɤγĥ
        ե륿
        åγĥ
        WWW ǣ̤ͣε
        ̤ͣäζ(å) (Thread Tracking System ?)
        ΰ
        ΥХåå
        
        Фΰۤ
        ȥ֥륷塼ƥ
        : fml8 (̾) Υǥ󥳥󥻥ץ
        ץߥ󥰡
        С¸褹뤿 fml ֡ȥ
        ե config.cf
        ץκ
        fml8 Υ᡼ƥ
        /ޤȤ
        ͥ
        å(᡼)
        ե륿
        桼ϿˤĤ
        ޥ(ޥɥ᡼롢makefmlCGI)
        CGI ץ¤
        ǥ쥯ȥ
        ϥǡθ
        桼ǧ
        HOOK(եå)
        Сɥᥤμ갷ˤĤ
        顼᡼ϥץ (libexec/error)
        IO 󥿡ե
        å
        ǡ١Ϣ⥸塼
        ǡ١ƥ(DBMS)ȤϢ
        ǥ: ¾Σ̥ͣƥ fml8 Ѵˤϡ
        IO ؤΥץ (IO::Adapter 饹)
        Mail::Message ⥸塼
        ̤νؿ
        Mail::Message::Encode 饹
        : ץ

I. fml δŪʻȤ

    1. ̤ͣȤϡ

        Żҥ᡼
        ᡼󥰥ꥹ(ͣ)

    2. fml8 γ

        fml8 ǽ뤳
        󥹥ȡȤγά
        ̤ͣ
        ̤ͣΥСϿ
        ̤ͣΥС
        ͣΥޥ
        쥷ԡs

II. fml Υåȥåס̤ͣκ

    3. fml8 Υɤɤ

        ftp Фɤ롣
        cvs ؤΥ
        cvsweb ˤ cvs ؤΥ

    4. Unix Ǥ fml Υ󥹥ȡ

        󥹥ȡν
        configure ¹Ԥ
        ­: ƥǥ쥯ȥ
        fml Υ󥹥ȡ: make install
        main.cf Խ
        site_default_config.cf Խ (ץ)
        ե륿ɤ뤫
        Сɥᥤξ
        ᡼륵Ф (Postfix)
        ᡼륵Ф (qmail)
        쥷ԡs

    5. Unix ǣ̤ͣ

        makefml newml ǣ̤ͣ (ǥեȥɥᥤξ)
        makefml newml ǣ̤ͣ (ǥեȥɥᥤǤ"ʤ")
        ᡼륵Ф (Postfix)
        ᡼륵Ф (qmail)
        ե config.cf Υޥ
        쥷ԡs

    6. Microsft 2000/NT Ǥ fml8 Υ󥹥ȡ
    7. fml4 Σ̤ͣ fml8 Σ̤ͣѴ

        : fml4  fml8 ؤΰܹ(1) fml8 ؤѴ
        : fml4  fml8 ؤΰܹ(2) fml4 μ¹ԥե촹Τ
            ޻Ȥ
        : fml4  fml8 
        : ֡ȥץѹ

    8. fml4  fml8 

        fml4  fml8 ΰ㤤: ᡼
        fml4  fml8 ΰ㤤: 饤
        fml4  fml8 ΰ㤤: ޥɥ᡼䥨顼å
        fml4  fml8 ΰ㤤: ޥɥ饤Ǥ (makefml)
        fml4  fml8 ΰ㤤: GUI (CGI)
        ե̾Υ롼

    9. fml8 Υåץ졼/󥰥졼

        fml8 Υåץ졼
        fml8 Υ󥰥졼

    10. CGI 

        makefml newml ϡĤͤ CGI ץȤ
        ǧ: ɤФ褤ΤǤ
        ǧ: .htaccess Խ
         CGI : ɥᥤޥ CGI β
         CGI λȤ: : ̤ͣκ
         CGI λȤ: : СϿ
         CGI 
        ̥桼 CGI

    11. apache 

        apache  suexec Ȥ

    12. ƥ

        ƥȤ
        ᡼륵мΤΥƥȤԤ
        ̤ͣؤƥ
        fml8 ΤΥƥ
        ƥȤפäMLκƽ

III. fml Υޥ

    13. ̤ͣΥСǤ뤳

        ɤ󤻤
        ̤ͣ˻ä
         (ץˤĤ)
        ̤ͣΥإ: ̤ͣλȤΤꤿ
        εɤ
        ᡼륢ɥ쥹ѹ
        ̤ͣ򼭤
        ޥɥ᡼ (fml ᡼)
        쥷's

    14. ̥ͣоǥޥɤȤ(̴ͣԤ)Ǥ뤳

        ۥȾǤǤ뤳ȡθ¤ˤĤ
        ޥɤѰդ
        ̤Υޥɥ饤󥪥ץ
        ̤ͣκ
        ̤ͣκ
        ̥ͣСϿȺ
        ̥ͣСΥɥ쥹ѹ
        ߤ
        Ƴ
        򸫤
        СꥹȤ򸫤
        ѹ
        ⡼ȴԤϿȺ
        ǥ졼ϿȺ
        fml ޥɤ makefml ޥ
        ɥ쥹ɽ (fmladdr ޥ)
        ꥢΰɽ (fmlalias ޥ)
        ɽ (fmlconf ޥ)
        ⥸塼ΥɥȤɽ (fmldoc ޥ)
         HTML  (fmlhtmlify ޥ)
        쥷ԡs

    15. եѹ

        ΥۥȤΤ٤ƤΣ̤ͣΥǥեѹ
        쥷's

    16. [fml8 Ǥ] ե̾ˤĤ

        ե̾δܹ
        : ̤ͣΥСԥꥹ
        : ⡼ȴԤΥꥹ
        ǥ졼Υꥹ
        ⡼ȴԤΥѥ

    17. ޥλ

        ǥ: ưե֤
        ǥ: ïǤ⥳ޥɥ᡼뤬Ȥ
        ǥ: ޥɥ᡼ïȤʤ褦ˤ
        ǥ: ᡼ޥ (1)
        ǥ: ᡼ޥ (2)
        ǥ: ïǤƲǽʣͣ
        ǥ: եʤïǤƲǽʣͣ
        ǥ: PGP/GPG Żҽ̾¤򤹤ͣ
        ǥ: PGP/GPG ǥޥɥ᡼ǧڤ
        ǥ: ̤ͣγز
        ʬΥȤǣ̤ͣԤʤ (Procmail )
        ǥ: ե (1)
        ǥ: ե (2)
        쥷ԡs [ǧ]
        쥷ԡs [ϿϢ]
        쥷ԡs [Ϣ]

    18. إåν񤭴

        쥷ԡs

    19. ʸν񤭴

        쥷ԡs

    20. ޥɤγĥ

        ǥ: ȼ help ޥɤ
        쥷ԡs

    21. ե륿

        쥷ԡs

    22. åγĥ

        ǥ: ͣȼΥå

    23. WWW ǣ̤ͣε

        쥷ԡs

    24. ̤ͣäζ(å) (Thread Tracking System ?)

        ̤ͣξ
        fml8 (minimal_states ǥ)åȥƥ
        åɥƥΥǡ١

IV. 

    25. ΰ

        򸫤
        Υɽ
        쥷ԡs

    26. ΥХåå

        fml8 Хååפ
        fml8 Хååפ: Υǥ쥯ȥʳ
        쥷ԡs

    27. 

        쥷ԡs

    28. Фΰۤ

        쥷ԡs

V. ȥ֥륷塼ƥ

    29. ȥ֥륷塼ƥ

        쥷ԡs
        ե륷ƥब顼ξưϡ
        Ʊ᡼뤬٤Ƥ

VI. ǥ

    30. : fml8 (̾) Υǥ󥳥󥻥ץ

        fml-devel ץȤι
        ۡʾܺ)
        fml ե󥰤륢ǥ
        ƥ㥢᡼
        ꡼󥸥˥󥰤ˤĤ (ɸ)

    31. ץߥ󥰡

        ѿ̿̾§ʥ͡ߥ󥰥٥󥷥
        ǥ/ǥ󥰥ξǤ
        ץߥ󥰡 (ƤΥ(: ñʤ))

VII. ¤

    32. С¸褹뤿 fml ֡ȥ

        : ξ
        FML::Process:: 饹γع¤
        ץ¹Ի˻Ȥ⥸塼뷲
        : ml_name  ml_domain ͤϤɤǲ褹Τ

    33. ե config.cf

        ̤ͣȤե config.cf
        config.cf Υեޥå
        Postfix Τʤĥ
        config.cf ¿ɤ߹(ѿξ)
        Ÿѿȡ
        ѿ (alphabetical order)
        ѿ (饹ʬ)
        쥷ԡs

    34. ץκ

        ץ(ޥɥ饤)
        ץ( CGI )

    35. fml8 Υ᡼ƥ

        fml4  fml8 
         Mail::Message ֥
        fml8 ᡼ɤߤݤΥ塼
        fml8 ᡼ֻ֤
        fml8 ˤ᡼륭塼λȤ
        ᡼륭塼ǥ쥯ȥ
        塼ƥ
        : FML::Mailer ɬפ
        ˴ؤ TIPS

    36. /ޤȤ

        ޤȤǻȤե뷲
        : ȴϢΥޥɤɤ뤫
        recipes

    37. ͥ

        ν
        ܸͥΣͣ
        ѸͥΣͣ

    38. å(᡼)

        Mail::Message 饹
        Mail::Message::Parse 饹
        Mail::Message::Compose 饹
        å¿첽: reply_message_nl() λȤ
        : 顼å֤

    39. ե륿

        ե륿γ
        ե륿˴ؤ
        ե륿: 
        ե륿: ޥɥ᡼ؤ
        ե륿: mime component filter Υ롼빽ˡ
        : mime component filter ɬפʵǽȤϡ

    40. 桼ϿˤĤ

        桼ɲäȺϲФƹԤʤ

    41. ޥ(ޥɥ᡼롢makefmlCGI)

        Ƽ拾ޥɤǻȤ⥸塼
        ޥɽΥե
        ޥɤγĥ: ޥɥ᡼ξ
        ޥɤγĥ: makefml ξ
        ޥɤγĥ: CGI ξ
        ­: fml4 fml8 ΥɤνϤɤΤ餤㤦

    42. CGI ץ¤

        ᥽å
        CGI β̤κȥ᥽å
        ̤ȥȥݥ󵡹
        : FML::CGI::Admin:: Ǥϥϡɥǥ󥰤뤷ʤ
        CGI μ: CGI Ϣ饹ηѾط
        CGI μ: config.cgi μ

    43. ǥ쥯ȥ

        Q: ֥ǥ쥯ȥ깽¤ϲʳޤɬפ
        쥷's

    44. ϥǡθ

        ϥǡˤĤƤγ
        FML::Restriction 饹
        CGI ˤϥǡ
        : FML::Restriction ¤ϤӤ᤮뤫

    45. 桼ǧ

        : FML::Credential μ

    46. HOOK(եå)

        פ⤷ HOOK ˤ
        HOOK ̿̾§
        쥷ԡs

    47. Сɥᥤμ갷ˤĤ

        СɥᥤΥǥƥ
        : fml8 ˤСɥᥤμ갷
        ǥ: FML.ORG дְۤ

    48. 顼᡼ϥץ (libexec/error)

        
        顼ȽΥ르ꥺ
        ǡΥå
        顼åեɤ

    49. IO 󥿡ե

        IO::Adapter δܷ
        ᥽å
        

    50. å

        åγ
        TODO

    51. ǡ١Ϣ⥸塼

        פ⤷
        ³Ūʥǡݻ
        Tie::JournaledFile 饹
        FML::Cache::Ring 饹

    52. ǡ١ƥ(DBMS)ȤϢ

        

    53. ǥ: ¾Σ̥ͣƥ fml8 Ѵˤϡ

        : fml4  fml8 ؤΰܹԤˤĤ

VIII. ⥸塼

    54. IO ؤΥץ (IO::Adapter 饹)

        IO::Adapter γ
        IO::Adapter Υ᥽å
        fml8 ɬפʥ᥽åɤη
        file ޥå
        unixgroup ޥå
        NIS ޥå
        MySQL ޥå

    55. Mail::Message ⥸塼

        Mail::Message γ
        Mail::Message ⥸塼: Ϥ
        Mail::Message ⥸塼: å
        Mail::Message ⥸塼: إå
        Mail::Message ⥸塼: åʸ
        Mail::Message ⥸塼: ֥Ȥθ
        Mail::Message ⥸塼: åɽ롣
        Mail::Message ⥸塼: ʴؿ
        

    56. ̤νؿ

        饹::Language::

    57. Mail::Message::Encode 饹

        Mail::Message::Encode λȤθ
        Mail::Message::Encode λͤƶ
        桼ƥƥ run_in_chcode()

    58. : ץ

        ǥ: fmlsch 롣
        ǥ: fmlsch.cgi

IX. Ͽ

    Ѹ콸(ؿ̾ѿ̾Ϣ)
    A. cvs ݥȥι¤

        ĥ꡼¤γ
        CVS Υǥ쥯ȥ깽¤

    B. SGML ν

        SGML γǰ
        ( book )Υƥץ졼
        HTML  <UL> 
        HTML  <TABLE> 
        ġ뷲
        ɤѹ
        ¾ξ

    C. NetBSD 1.5 Ǥ IPv6 

        IIJ IPv6 ȥͥ뷿ӥξ
        ȥͥ
        롼ƥ
        ۥȤʤɤؤΥɥ쥹γ
        ե

    D. Problem Report ϢġΤޤȤ

        Problem Report Ϣġ
        Call Tracking  Problem Tracking
        status ǻȤñ
        GNATS (GNU Problem Report Management System)
        Jitterbug
        Call Center, Bug Tracking and Project Management Tools for Linux
        Perforce Defect Tracking Integration Project

    E. ǡ¤Υץ

        curproc ֥
        PCB Υƥ

List of Tables
4-1. ǥ쥯ȥι¤
8-1. fml4  fml8 ΰ㤤: CUI (makefml ⤷ fml ޥ)
30-1. ե TODO
30-2. ꡼󥿡Х
33-1. table description
A-1. / ʲΥǥ쥯ȥ깽¤
A-2. cvs tree  fml/ ʲΥǥ쥯ȥ
B-1. ơ֥θ



Ϥ

ֽǯä饽եȥϰ줫ľפζϤȻפ
κǤ(ǤޤȤ᤹)



fml8 ץȤθ

 fml8 ϡ (fml4 ߴǤϤʤСֹ椳 7.98.x Ȥ̾
ǡ֤ʤ Release Candidate ʥ١ǡפȤĤǤ) ºݤˤϲǯ
ˤϤäƱѤ³ƤǤǤ

᡼󥰥ꥹ(ͣ)ɥ饤ФȤƤδܵǽƼƤޤ

ޥɥ饤󥤥󥿡ե(CUI)˥塼̤Τ٤ƼѤǤ
̤ͣȤ˺٤ѹ򤷤ϥեԽɬפǤ̤˱
ΤǤСfml4 Ʊͤ˻ȤϤǤ

GUI ܵǽϼѤߤǤ˥塼̤̤ǡޤ
ꤳޤʤȤޤ

ʤfml4  fml8 ˤĤƤϡ  Chapter 8 򻲾ȤƲ

fml4 κ٤ǽˤ fml8 ѤȤʤäΤ⤢ޤƤ
 fml8 ǥСǤϤǤ

 fml8 ưǽƺǶ TODO ꥹȤ http://www.fml.org/software/
fml8/fml/doc/ja/todo/STATUS.txt 򻲾ȤƲ



 fml ؤƻ

fml8 ץȤ fml4 1 ľ fml ץȡפǤ fml4
 fml8 δط sendmail  postfix Τ褦ʴطȤʥŬڤǤ

fml8  fml4 ޤǤ˻ 10 ǯηиդޤŪ fml4 Ρɵǽɤ
/ƼߤǤ

(1)ֺԼȡפ (2)Ʊ(⤷˸ߴι⤤)줫ľ
׻ߤϽƤʤΤǤϤʤȻפޤ(1)(2)ǤСޤǤ
Ȥޤΰ֤줿㤬 Postfix Ǥ礦

fml8 ˤϡǥ줫ͤľȤ˲ä fml4 εǽѿܤ
äǤ⤢ޤ

Ȥ fml4 ȤäƤƵˤʤΰĤϡΥۥȤǡǥξ˥
Сե񤯡פȤǥǤ fml4 κǽ餫ѾƤ
ܹ¤Ǥ [1]

ʤ顢RDBMS ȤϢȤĹ꤬ͤޤNFS λ
ɤ롩ס֥ȥ֥åȥƥϢưϡסSQL ФȤϢ
ưǤ͡פʤɤʤɡ

ޤ¤ǤϤʤñ˼ʬߤǽޤfml Τʰ bug
tracking system 󶡤ߤ bug tracking system ⥵󥸥Ǥ
᡼ϢưƤߤ cvs ȤϢưߤ SPAM 
Υ

ǽˤ٤Ȥ 4.0 εǽȤΥǥˤĤƤκƸƤǤȤС
Τ褦ʹܤͤޤ

  fml8 ذѤ٤ǽϲ

  fml8 ǤäȤޤꥫޥ䤹Τ˼Ǥʤ

  Ǥפεǽϲ

ˤĤƤΰո罸ȻפޤȵƤ⤷礦ʤΤ
áȤưΤäưƤޤ줬 fml8 Ǥ

http://www.fml.org/software/fml8/

ftp://ftp.fml.org/pub/fml8/

ǽλХС

fml 1.2 κ¤εǽ
+ makefml (CUI + CGI) ää
+ ưåץƥ
+ ư HTML 

ưȤˤʤǤ礦 (εǽϤǤ˿ǯư³ʣδĶư
ǧƤޤ)



fml4  fml8 γȯˤĤ

fml4  fml8  fml8 Ǻ줿⥸塼Υޡ fml4 ΤΥɤݼ
Ĥġ¹ԳȯƤäƤޤ

Τ 4.0 Ϥ fml ץΤǡŪ stable ˶ᤤ current 
դˤʤޤ4.0  bug fix  4.0.x (4.0.1 4.0.2 )ȤƤޤȤ
꡼ƤͽǤޤ 4.0-current  4.0.x ΤΥƥȥ
ꡢ fml8 γȯ( fml-current )ȤդȤޤ

               fml-devel
             -----------------------------> 8.0 ? (ץȤɸ)
                       ή
1.2   4.0 ------------------------------> 4.0-current
              |      |
            4.0.1   4.0.2 .... (꡼ / 4.0-stable С)

ޤfml8 Ѥ˺줿⥸塼 fml4 ͢ͽǤȤ 4.0 Ǥ
Ωι⤤ mead (顼᡼ϥץ)䡢åץƥǤ
 fml8 εǽ 4.0 ǥƥȤ򤹤뤤̣Ǥ⤢ޤκȤ 4.0.4
 4.0.5 ʹܳʲͽǤ

ؤȡ 4.0  bug fix  4.0 ǹԤʤޤǽϡ fml8 ǳȯ
Τ⥸塼ñ̤ 4.0 ͢ƤȤޤ



᡼󥰥ꥹ

 fml εΤΥ᡼󥰥ꥹȤѰդƤޤ

ϿλϤĤȰǤ fml-devel MLؤμưϿ
fml-devel-ctl@ffs.fml.org  subscribe θ˼ʬ̾޻³ե졼
᡼"ʸ" (: ᡼ʸ)˽񤤤äƲȤмΤ褦
ʤޤ

To: fml-devel-ctl@ffs.fml.org

subscribe Kinomoto Sakura

Υ᡼ФϿջֳǧΥ᡼뤬֤ƤޤΥ᡼ֻ
Ƥ̤ͣϿޤ

fml-devel ̤ͣΥ http://www.fml.org/mlarchives/ ǸƤޤ

̤ͣ˻äʤ˾ꤿȤ硢̤ͣǤϤʤ
fml-request@fml.org إ᡼äƲΥ᡼Ŭ fml-devel ή
ƵȻפޤ¾˥եɤʤɤ줿ʤϤλݤɮ񤤤
Ʋ



ո罸

fml8 ΥǥΤĤơո洶ۤԤƤޤüŪˤ 4.0
ΤϼѤεǽϤɤǤ褤ȤεǽϤ٤
ʤɤȤäո罸Ƥޤ



ܥ塼ȥꥢˤѸˤĤ

ɤݤʤɤΩġ٤ʴؿ̾ѿ̾ϢˤĤƤѸ콸
  Ѹ콸(ؿ̾ѿ̾Ϣ) ˤޤ⻲ȤƲ

%

    ̥桼Υץץ

#

    桼 root Υץץ

~

    桼Υۡǥ쥯ȥ

CUI

    ޥɥ饤ǻȤġ롢Ȥ makefml  fml ࡣ

fml

    fml եȥΡäƤˤϻȤȤ

fml (ޥ)

    fml8 ˤ fml ȤޥɤΤȡ makefml ޥɤƱǽ
    ν֤ۤʤ롣֥

桼 fml

    fml Ȥ̾Υ桼fml8 ư桼ȡ

fml4

    fml4 ꡼Τ

fml8

    fml8 ꡼Τȡ fml8 ΤȤ fml 5.0 Ȥ fml-devel ȸäƤ
    ⤢Τա

GUI

    CGI 󥿡եΤȡ

makefml (ޥ)

    fml4  fml8 ˤٱ祳ޥɤΤȡ fml äƤ᡼륵
    Ф˥󤷤ƻȤΡ



쥷԰

̤ͣȤϡ



fml8 γ

  ʤ fml4 μ fml8 ʤΤǤ

  fml4  fml8 ϲǤ

  current, stable, release ɤɤ٤Ǥ

  ɥȤ ?



fml8 Υɤɤ



Unix Ǥ fml Υ󥹥ȡ

  桼 fml ʳ(Ȥмʬ̾) fml Ȥ

  󥹥ȡȤκݡ桼 fml ˤʤ륿ߥ󥰤ϡ

  ɥȴΥ󥹥ȡ򤷤

  󥹥ȡ perl Υѥꤷ

  jperl  fml Ȥ

  elena ML ()

  /var/spool/ml/etc/ ʲ aliases եԽƤפǤ

  ᡼륵Ф Unix ǲƯ fml  Windows 2000/NT4 ư

  ̤ͣ(ƽ)

  ְ㤨 rmml Ƥޤä̤ͣ褵

  loader  Bootstrap() ɡäȤ顼Ф



Unix ǣ̤ͣ

  newml ˣ̴ͣԤΥ᡼륢ɥ쥹ꤷ

  Ȥʤ MTA Ѥθߤ᤿

  ̥桼/ѤΥ֥ڡѰդΤǤ



Microsft 2000/NT Ǥ fml8 Υ󥹥ȡ



fml4 Σ̤ͣ fml8 Σ̤ͣѴ



fml4  fml8 



fml8 Υåץ졼/󥰥졼



CGI 



apache 



ƥ



̤ͣΥСǤ뤳

  ϿƤ᡼륢ɥ쥹ѹ

  ̤ͣƤǤ᡼륢ɥ쥹䤷

  Ĺ٤ߤʤΤǰߤ᤿

  ߤƤ֤εɤߤ



̥ͣоǥޥɤȤ(̴ͣԤ)Ǥ뤳

  а(ǧڥꥹȤΰ)

  ԥꥹȤ

  ְ̤ͣäƾäƤޤäᤷ (CUI,CGI,admin ޥ)

  ƤǤ륢ɥ쥹䤹 (CUI,CGI,admin ޥ)

  襢ɥ쥹䤹

  ϿƤ᡼륢ɥ쥹ѹ



եѹ

  elena ̤ͣ򸫤



[fml8 Ǥ] ե̾ˤĤ



ޥλ

  ӥư֤

  ɤ֤ոդѣͣ

  ïǤ⥳ޥɥ᡼뤬Ȥ

  ƥॢȤïǤ⥳ޥɥ᡼뤬Ȥ

  ޥɥ᡼ïȤʤ褦ˤ

  ɥᥤʤïǤƤǤ ML

  եʤïǤƲǽʣͣ

  꾯οͤåɤ򤿤Ƥ̡ͣ

   

  PGP/GPG Żҽ̾¤򤹤ͣ

  PGP/GPG (桼⡼ɤ)ޥɥ᡼ǧڤ

  PGP/GPG  admin ޥɥ᡼ǧڤ

  ᡼륢ɥ쥹 From ǧڤ򸷤

  ᡼륢ɥ쥹 From ɥ쥹ǧڤԤʤʤ

  subscribe ϿȤϼưǤ

  (fml4  closed + confirm )

  unsubscribe ޥɤǤ confirmation Ȥ

  unsubscribe ϿȤϼưǤ

  (fml4  closed + confirm )

  chaddr ޥɤǤ confirmation Ȥ

  chaddr ϿȤϼưǤ

  (fml4  closed + confirm )

  ưϿȼʾҲƱ˹Ԥʤ

  Υ᡼륢ɥ쥹ΤߤưϿǽˤ롣

  fml 3.0  auto_regist Ȥ³

  MAINTAINER  elena-admin ʳˤ

  ⡼ȴԤϣ̤ͣΥСǤʤƤƤ

  Subject: ˱ꥹȤѹ

  ꥹȤѹ

  /etc/group ȿǤͣ

  (Ƽ)ˤϣ̤ͣεʤ

  μԤƤѹ



إåν񤭴

  Subject:  [elena:00100] Τ褦ʥĤ

  Subject: [elena:00100] οʬ(00100)ηѤ

  Subject: Υο(00100)0ѥǥ󥰤ʤ

  (strftime(3) 򻲾)

  Subject: Υʸˤ

  Subject: Υʸˤ

  Subject  [] ȤĤ

  Reply-To: ѥɥ쥹˶ѹ롣

  Reply-To: Ԥꤹ롣

  Reply-To: ԡܣ̡ͣפꤹ롣

  ̥ͣСƤǤС

  Reply-To: ԡܣ̡ͣפꤹ롣

  To:  Cc: ˤ fml8 Ƥ̤ͣΥɥ쥹

  Reply-To: ꤹ롣

  פʥإåե X-Face: ä

  Sender:  X-Sender: ˥ԡ롣

  Received:  X-Received: ذư롣

  Υ᡼ Reply-To: ʤСΤޤޤˤ

  To: Cc: Reply-To: Τޤ̤ˤ롣

   Message-ID: ϸͤΤޤ̤

   ML ȼ Message-ID: Ĥ

  X-ML-Info: Ƥꤹ롣

  ݡȥ᡼ Reply-To: ꤹ롣

  Υإå̤

  In-Reply-To:  References: 

  ⤽⡢إå񤭴ߤ᤿



ʸν񤭴

  ᡼ʸˡ֢ءפȰ̾ʸ򤤤줿



ޥɤγĥ

  ޥɥ᡼ʤɤֻ Reply-To: ǤϤʤ From: 

  help ʤɤΥå򥢥åץ졼ɤ

  help åθե򥫥ޥ롣

  confirmation å򥫥ޥ

  news Ȥե֤ޥɤ

  mget ޥɤΥե⡼ɤΥǥեȤѹ

  get ޥɤ mget mp Ʊ̣ˤ

  command status report 

  ޥɥ᡼Ƥƻ뤷

  admin ޥɤǣ̤ͣκƽ򤷤

  admin ޥɤǣ̤ͣΥСꥹȤ쵤˺/Ͽ

  admin add  welcome 

  admin add ϿǤ᡼륢ɥ쥹ϰϤ¤

  ѤΥޥɤ˺줿



ե륿

  ե륿ƥȤʤȼΥե륿ꤷ

  Υ᡼륢ɥ쥹ݤ

  message/partial ե륿

  ʤźեե뤬ĤƤ᡼ϵݤ HOOK

  ե륿Ƥˡ顼᡼ɤ֤

  spamassassin  SPAM ᡼̵뤹롣

  spamassassin  SPAM ᡼Ƚꤷ顢

  إå X-Spam-Status: Yes Ĥ롣

  SPAM кȤơTo:  Cc:  ML ̾ɬܤȤ

  ͣȼ Message-ID: Ĥƶ



åγĥ



WWW ǣ̤ͣε

  HTML 줿ʤ

  HTML 줿 URL  ~fml ʤǤ

  Ѥ椫 html ʤä

  HTML ʤ

   HTML  WWW Ф fml8 ΥФ㤦ΤǤ



̤ͣäζ(å) (Thread Tracking System ?)



ΰ

   fml Υ顼Ф

  Ť򸫤

  ˽椵

  ĥĤιԤ򸫤

  ΥԡȤĤĸĥꡢĥ顼Ԥ

  Ťեõ



ΥХåå

  եС





  Υס򰵽̤

  סưǾä

  ưǥ֤ꤿ

  ֤鵭 get ޥɤǼФ

  ֤ get 



Фΰۤ

  ᡼륵Фۤޤ

  IP ɥ쥹ѹ˴طΤ fml8 ΥեϤޤ



ȥ֥륷塼ƥ

  ȤäƤ fml ΥСΤꤿ

  Postfix ΥСΤꤿ

  Sendmail ΥСΤꤿ

  qmail ΥСΤꤿ

  Ƥ륢ɥ쥹򸫤

  Ƥ alias 򸫤

  С°Ƥ̤ͣ򤹤٤ɽ

  fml 򥤥󥹥ȡ뤷ۥȾ夫ƤǤʤ

  CGI ǣ̤ͣ᡼륵ФȿǤƤʤ

  ˼ԤưǺ

  ٤Ʊ᡼뤬

  οͤƤʤ

  ̤ͣΥСǤʤɥ쥹饨顼᡼뤬

  aliases  fml ѹ 2 褦ˤʤä

  flock ưʤ OS ʤΤǤ

  ֹ椬ˤɤäƤޤä

  ְ㤨ƾäƤޤä

  ǥ­ʤ˾äƤ褤եϡ

  ᡼ Reply-To: ĤƤʤ褦Ǥ

  ֿ褬̤Ǥʤ褦Ǥ

  References:  In-Reply-To: ĤƤޤ

  ᡼꡼ǥåɤɽǤޤ

  ̤ͣμԤΤοͤʸ뤽Ǥ

  ɤƤ ISO-2022-JP äƤʤͤޤ

  μԤܸ줬ɤʤĶˤ

  ȾʸΥ᡼뤬Ƥ餽

  help 󤻤ʸƤޤ

  get Ǥʤ

  get  ish ⡼ɤʤɤưʤ

  subscribe 褦Ȥ̵뤵褦Ǥ

  ' ޤॢɥ쥹ޤʤ

  "xxx"@yyy.or.jp Ȥɥ쥹Ȥޤ subscribe Ǥޤ



: fml8 (̾) Υǥ󥳥󥻥ץ



ץߥ󥰡



С¸褹뤿 fml ֡ȥ



ե config.cf

  config.cf ǻȤäɤؿϤɤǤ



ץκ



fml8 Υ᡼ƥ

  ʸƤ˱žѤ



/ޤȤ

  ޤȤϤļ¹ԤƤ褤Τ

  ޤȤΰ̷ΥǥեȤѹ

  makefml add λˤޤȤѥ᡼ꤷ

  ޤȤΥɤɤ̥ե˵Ͽ



ͥ



å(᡼)



ե륿



桼ϿˤĤ



ޥ(ޥɥ᡼롢makefmlCGI)



CGI ץ¤



ǥ쥯ȥ

  ǥ쥯ȥ̾ϤɤƤޤ



ϥǡθ



桼ǧ



HOOK(եå)

  HOOK ǿ侩ѿ̾ϡ

  HOOK ѹƤ褤ѿϤʤǤ



Сɥᥤμ갷ˤĤ



顼᡼ϥץ (libexec/error)



IO 󥿡ե



å



ǡ١Ϣ⥸塼



ǡ١ƥ(DBMS)ȤϢ



ǥ: ¾Σ̥ͣƥ fml8 Ѵˤϡ



IO ؤΥץ (IO::Adapter 饹)



Mail::Message ⥸塼



̤νؿ



Mail::Message::Encode 饹



: ץ

I. fml δŪʻȤ

ܥѡȤϽ鿴ԸꥬɤܻؤƤޤƤϴŪʥǥۤ
λˤĤƤǤ

ʤ᡼󥰥ꥹȤλȤߤʤɡŪƤˤĤƤϡfml Х֥
(饤꡼ѥ)  http://www.fml.org/software/fml/ ʤɤ򻲾ȤƲ


Table of Contents
1. ̤ͣȤϡ
2. fml8 γ



Chapter 1. ̤ͣȤϡ

Żҥ᡼

Żҥ᡼Ȥϡ͹ؤΥͥåȥǤǤ

ɤϥ᡼륽եȤˤäѤޤ᡼륵ФȤꤷƤƤ
Τ褦ʷΥƥȥե˲᤮ޤ

From: rudo@nuinui.net
To: kenken@nuinui.net
Subject: ܤ

ϡ󤱤󡣤ܤɤ衣

// 

Unix Ǥʤߤ : Ƕڤϡ󥿡ͥåȤΤޤޤʵʤǤȤ
ޤΥ᡼ǻȤƤ 822 ȸƤФ֥ե:͡פ
ɽǤ̣ϱѸʸɤǡե From () ͤԤΥ᡼
륢ɥ쥹Ȥäˤʤޤ

᡼εʤ RFC822 줿Τ̾ 822 ǰ̣̤ޤ [2]



᡼󥰥ꥹ(ͣ)

᡼󥰥ꥹ(ʲͣ)Ȥϡֵʸ̤λȤߡפΤ褦ʤΤǤ
ñʲ¤פȤΤۤʬ䤹Ǥ礦

äȤΤǹԤʤȤȡï񤤤̤˥ԡ
ˤĤᡢڼŽꡢ͹ؤ롣⤫뤷֤äǤ


Żҥ᡼ʤ㥳Ȥ̤˥ԡ [3] ǤޤۤΤ(̤ͣΥ
ɥ쥹)˥᡼(θ)ȡʸͧβפΥСˤΥ᡼
ԡ()ۤޤ

줬̤ͣλȤߤǤ



̥ͣɥ饤ФΥǥ

̥ͣɥ饤ФΥǥϼΤ褦ʤΤǤ

[ml]



Chapter 2. fml8 γ

ʤfml4  fml8 ˤĤƤξܺ٤ϡ  Chapter 8 򻲾ȤƲ



fml8 ǽ뤳

fml4 κƼˤäƤλϱۤȻפޤ˥塼Ϣܰʳ RC
(Release Candidate) εʬǤ

  եʤޤ٤ Postfix եǤ

  ǤΥޥ(makefml ʤ fml)ˤ fml4 ƱͤǤ: 
    ̤κ/СϿ//ѹ(chaddr)⡼ȴԤϿ/
    򸫤롢СꥹȤ򸫤롢¾

    CUI λȤˤĤƤϡthe Section called fml4  fml8 ΰ㤤: 
    ޥɥ饤Ǥ (makefml) in Chapter 8٤򻲾ȤƲʤCUI 
    ѹϡޤͽŪʳǤưޤ

  GUI (CGI) ˤ: ̤ͣκ/СϿ//ѹ(chaddr)
    ⡼ȴԤϿ/򸫤롢СꥹȤ򸫤롣ե
    ǽǤ

  إåν񤭴ե륿( 4.0  Envelope Filter  Content Filter
     )

  ޥɥ᡼(̥桼) СϿ//ѹ(chaddr)ޥ򸫤롢
    ε󤻤롣

  ޥɥ᡼(⡼ȴ): СϿ//ѹ(chaddr)⡼
    ԤϿ/򸫤롣

  顼᡼μưϡ顼ˤʤ륢ɥ쥹μư

  SPAM ᡼γΥ (2008/08/17 ʹ)

  IPv6 ˤ

  åץƥ(CUI  CGI ޤ): ١äΤǤǽΥС
    Ϻ졢 2004/03 ľޤ

   HTML (ǥեȤ HTML Ǥ): ǥեȤǺäƤޤ
     fmlhtmlify  makefml  HTML ޥɤ⤢ޤ

  MTA ưᥤΥץ: distribute command error

  ٱ礹桼ƥƥ: fmladdr fmlailas fmlconf fmldoc makefml fml

  fml4 ߥ졼: fml4  fml.pl  fml8  fml.pl 촹
    fml8 ˰ܹԤǤ褦ˤ

    : ɽŪʵǽǡǽФߴ櫓ǤϤ
    

  2004 ưʹ: 塼ƥˤ¾ fml8  MTA Ǥ
    

  ݲ IO إСꥹȤʤɤμ갷ˤơե롢/etc/group
    NISMySQLPostgreSQLLDAP ʤɤƱ˰ޤ(եɲ
    ɬ)



󥹥ȡȤγά

    Important: 󥹡ˡ GNU autoconf Ȥǥեȥ
    (configure  make)ʤΤȤʤäƤޤfml4 ˤޤƤޤ󡣤
     OS °ΥѥåƥȤοϹ⤯ʤޤ

    fml8 Υ󥹥ȡˤ(fml4Ȥ)ϡroot Ǥκȡ
    configure λѡס/usr/local/etc/fml/ ʲˤեԽפ
     [4]

ơĤΤ褦 Unix  elena ͣ(elena@fml.org)륱
Ȥޤ礦󥹥ȡΤޤήϼΤ褦ˤʤޤ

 1. ɤơŸƲ

 2. 桼 root ǥ󥹥ȡ򤷤ޤ桼 root ˤʤä顢ޤϥ桼
    fml ȥ롼 fml ޤθ塢 configure  make install 
    ¹ԤƲ

    % su root
    # groupadd fml
    # useradd -m -g fml fml
    # ./configure
    # make install

    ǥեȤǤ /usr/local ǥ쥯ȥʲ 4.4 BSD Υ֥ǥ쥯ȥ꤬
    ޤǥ쥯ȥѥ configure ΥץѹǽǤ

    ǥեȤǤϡ󥹥ȡϥᥤ MTA ƤФץ /usr/
    local/libexec/fml/ ʲء makefml  fmldoc ʤ fml ǻϤޤ桼ƥ
    ץ /usr/local/bin ˥󥹥ȡ뤷ޤ¤ϡ /usr/
    local/libexec/fml βμΤƤӽФñʤ wrapper Ǥ

 3. 桼 fml  elena ̤ͣ롣

    % su fml
    % makefml newml elena

    ⤷ fml ޥ()Ȥä

    % su fml
    % fml elena newml

    ǤƱ̣Ǥ(: fml ޥɤ fml8 ˤޤ)

 4. MTA  fml8 ץʤɤư뤿ˡ MTA 򤷤Ƥ
    

 5. ̤ͣưƥȤ򤷤Ƥ

 6. ̤ͣΥޥ򤷤Ƥ


                                  Warning                                   

fml4 Ȱۤʤ桼 root ǥ󥹥ȡȤ򤹤뤳ȤդƲ     



̤ͣ

makefml ޥɤȤäƣ̤ͣޤǥեȡɥᥤ(: fml.org)ξ
硢 makefml λȤ fml4 λƱͤǤ elena@fml.org ̤ͣˤ

% su fml
% makefml newml elena

Ȥޤܤ  Chapter 5 򻲾ȤƤ

Сɥᥤ(nuinui.net) ξϡ̤ͣΥɥ쥹򤹤٤ƻꤷƲ
Ȥ elena@nuinui.net ϡΤ褦˼¹Ԥޤ


% su root
% makefml newdomain nuinui.net /some/where/nuinui.net
% su fml
% makefml newml elena@nuinui.net

ܰʹ
% su fml
% makefml newml elena@nuinui.net

ǶǤϡͤʣΥɥᥤĤȤϤդƤޤΤǡ̤ͣС
ɥᥤȤƺۤ촶Τ뱿ˤʤȻפޤº
fml.org Ȥ⤽Τ褦ʱǤ


                                  Warning                                   

Сɥᥤ(nuinui.net)Σ̤ͣ硢ǽΰܤˤϡ֤Υɥᨢ
Ȥפ(ޤʤ?)ɬפǤ路  Chapter 47 򻲾Ȩ
Ʋ                                                                



̤ͣΥСϿ

ǥեȤΥɥᥤ(: fml.org)ξϡ

% su fml
% makefml subscribe elena rudo@nuinui.net

ǣϣˤǤ(elena ǣϣˡĤޤ @fml.org ʤǤϣ)С
ᥤ(nuinui.net)ξϡ̤ͣΥɥ쥹򤹤٤ƻꤷƲ

% su fml
% makefml subscribe elena@nuinui.net fukachan@sapporo.iij.ad.jp



̤ͣΥС

ǥեȤΥɥᥤ(: fml.org)ξϡ

% su fml
% makefml unsubscribe elena rudo@nuinui.net

Ǥޤޤ󡣰Сɥᥤ(nuinui.net)ξϡɥ쥹ɥᥤ
ޤǴޤƤ٤ƻꤷƲ

% su fml
% makefml unsubscribe elena@nuinui.net fukachan@sapporo.iij.ad.jp



ͣΥޥ


                                  Warning                                   

makefml config ϼǡޤޥǤʤޤϡޤ   
config.cf եưԽƲ                                  



Υۥȶ̤

/usr/local/etc/fml/site_default_config.cf ϡΥۥȤư fml8 ٤Ƥ˱
Ϳޤ [5]

site_default_config.cf ΥեޥåȤϡconfig.cf ()ƱͤǡǤ
 config.cf ƱǤѿΥꥹȤ⻲ȤƲ



elena ̤ͣ

elena ̤ͣΥޥ /var/spool/ml/elena/config.cf Խ뤳Ȥ
Ԥʤޤ config.cf ΥեޥåȤ Postfix եȤʤƤ
 (fml4  config.ph  fml4  cf ˤᤤǤեޥåȤ㤦
ȤѤϤʤ)

fml8  HOOK (perl script)񤯾ϡ (perl script եΤ褦) /var/
spool/ml/elena/config.cf ե =cut ԰ʲ˽񤤤Ʋ

=cut Ԥˤ( ѿ =  )񤤤ƲŬɬפʹܤɲä
ƲꤷʤϥǥեͤȤޤǥեͤϥ󥹥ȡ
С˰¸Ƥꡢ

/usr/local/etc/fml/defaults/Сֹ/default_config.cf

ȤեƤޤ perl Υ饤֥꤬ /usr/local/lib/
perl/5.00503/ Τ褦˥СֹդΥǥ쥯ȥ֤ΤȾƤ


ޤ饤֥ʤɤΥ󥹥ȡ fml ΥС󤴤Ȥ̤Υǥ쥯ȥ
ʤäƤ뤳ȤդƲλȤߤΤǥåץ졼ɤƤ⸵
ΤñǤ fml8 ħǤ



쥷ԡs

1. ʤ fml4 μ fml8 ʤΤǤ
2. fml4  fml8 ϲǤ
3. current, stable, release ɤɤ٤Ǥ
4. ɥȤ ?

1. ʤ fml4 μ fml8 ʤΤǤ

礭¤Ѥ 1 bit 餹ΤǤ :-)

fml8  4 ΥɤƼΤƤư줫ʤ줿եȥǤ 4  5
ñʤ 4 Υåץ졼ɤȻפΤ 1 bit 餷 8 ˤޤ

2. fml4  fml8 ϲǤ

 Chapter 8 ˤޤȤƤޤΤǡȤƲ

3. current, stable, release ɤɤ٤Ǥ

ΤȤ fml8 ˤϤä㤤ޤ󡣥եդ򸫤ƿ
ǲ

ɤˤĤƤϡ  Chapter 3 򻲾ȤƲ

4. ɥȤ ?

ɥȤϥƥȤ HTML Ǥޤ HTML Ǥϥȥåסǥ쥯ȥˤ
 index.html.ja 餿ɤäƤäƤ

II. fml Υåȥåס̤ͣκ

ȥԥåȤˡޤȤޤåȥåפκݤ˹ԤʤǤɸŪʽ֤˱
äƲ⤷ƤĤǤ

Table of Contents
3. fml8 Υɤɤ
4. Unix Ǥ fml Υ󥹥ȡ
5. Unix ǣ̤ͣ
6. Microsft 2000/NT Ǥ fml8 Υ󥹥ȡ
7. fml4 Σ̤ͣ fml8 Σ̤ͣѴ
8. fml4  fml8 
9. fml8 Υåץ졼/󥰥졼
10. CGI 
11. apache 
12. ƥ



Chapter 3. fml8 Υɤɤ

ftp Фɤ롣

fml8 Υ ftp://ftp.fml.org/pub/fml8/  ftp Ǥޤ

ȯŬʶڤꤴȤˡ˺ƤޤߤΥե̾

fml-VERSION-DATA.tar.gz

Ǥ VERSION  8.0 ꡼ʤΤ 8.0 꾯 7.98.x ʤɤ
ʤäƤޤե̾դäƤޤΤǡդοΤǥ
ɤƲ



cvs ؤΥ

anoncvs.fml.org  fmlsrc ʲ fml8 ֥Ǥ

anoncvs.fml.org ˤ cvs over ssh ǤǤ⥢Ǥޤ

cvs -d anoncvs.fml.org:/cvsroot co fmlsrc

ǥǤޤ(: cvs over ssh ΤߤݡȤޤ)



cvsweb ˤ cvs ؤΥ

http://www.fml.org/cvsweb/fmlsrc/  cvs 򸫤뤳ȤǤޤ


                                  Warning                                   

ΥեΥСɤʤ餳ˡǤ
դˡޤȤƥΤɤ褦ʾˤϻȤʤǲ
                                                                      



Chapter 4. Unix Ǥ fml Υ󥹥ȡ

󥹥ȡν

configure ¹Ԥ()ˡ桼 fml ȥ롼 fml äƤ



% su root
# groupadd fml
# useradd -g fml -m fml



configure ¹Ԥ

configure (by GNU autoconf)  make ¹ԤƲ configure ˡ
 fml ȥ롼 fml äƤɬפޤΤդƲޤ
κȤޤȤƽ񤯤ȡΤ褦ˤʤޤ

% su root
# groupadd fml
# useradd -g fml -m fml
# ./configure
# make install

configure Ŭ script  .cf ѿ񤭴ޤ

make install ¹Ԥݤˤϡ configure  etc/fml/install.cf 򸵤
 configure  install.pl (perl script) 󥹥ȡԤʤޤ

桼̾Ūʥǥ쥯ȥ깽ʤɤ configure ΰѹƲѹ
ǤѿϰʲΤΤǤconfigure --help ɽޤ fml Ǥϳƥǥ
ȥˤ /fml Ȥä suffix ĤޤѹǤΤϡľ
prefix ʬޤǤǤ

ѿ            configure Υǥե    fml Ѥǥ쥯ȥ
--------------------------------------------------------
prefix          /usr/local                  /usr/local
exec_prefix     /usr/local                  /usr/local
bindir          ${exec_prefix}/bin          /usr/local/bin
sbindir         ${exec_prefix}/sbin         /usr/local/sbin
libexecdir      ${exec_prefix}/libexec      /usr/local/libexec/fml
datadir         ${prefix}/share             /usr/local/share/fml
sysconfdir      ${prefix}/etc               /usr/local/etc/fml
sharedstatedir  ${prefix}/com
localstatedir   ${prefix}/var
libdir          ${exec_prefix}/lib          /usr/local/lib/fml
includedir      ${prefix}/include
oldincludedir   /usr/include
infodir         ${prefix}/info
mandir          ${prefix}/man

ơѿ configure ΰǾ񤭤뤳ȤǤޤ

fmlconfdir      $sysconfidr/fml             /usr/local/etc/fml
mlspooldir      /var/spool/ml               /var/spool/ml
fml_owner       fml                         fml
fml_group       fml                         fml
default_domain  ¬                    ¬

Υץ

configure --help

ɽޤ



./configure --help

`configure' configures this package to adapt to many kinds of systems.

        ... snip ...

Installation directories:
  --prefix=PREFIX         install architecture-independent files in PREFIX
                          [/usr/local]
  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
                          [PREFIX]

        ... snip ...

Fine tuning of the installation directories:
  --bindir=DIR            user executables [EPREFIX/bin]
  --sbindir=DIR           system admin executables [EPREFIX/sbin]
  --libexecdir=DIR        program executables [EPREFIX/libexec]
  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
  --libdir=DIR            object code libraries [EPREFIX/lib]
  --includedir=DIR        C header files [PREFIX/include]
  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
  --infodir=DIR           info documentation [DATAROOTDIR/info]
  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
  --mandir=DIR            man documentation [DATAROOTDIR/man]
  --docdir=DIR            documentation root [DATAROOTDIR/doc/PACKAGE]
  --htmldir=DIR           html documentation [DOCDIR]
  --dvidir=DIR            dvi documentation [DOCDIR]
  --pdfdir=DIR            pdf documentation [DOCDIR]
  --psdir=DIR             ps documentation [DOCDIR]

Optional Packages:
  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
  --without-warning       run perl as perl without -w
  --with-fmlconfdir=DIR   use DIR instead of SYSCONFDIR/fml
  --with-mlspooldir=DIR   use DIR instead of /var/spool/ml
  --with-fml-owner=USER   use USER instead of fml
  --with-fml-group=GROUP  use GROUP instead of fml
  --with-default-domain=DOMAIN     use DOMAIN as the default ML domain
  --with-default-hostname=HOSTNAME use HOSTNAME as the default hostname
  --without-mime-component-filter  disable mime_component_filter
  --with-group-writable-fmlconfdir=DIR   instead of \$fmlconfdir/config.gw
  --with-ml-home-prefix-map=PATH   use PATH as primary_ml_home_prefix_map
  --with-group-writable-ml-home-prefix-map

 



: configure μ¹

: NetBSD  /usr/pkg ʲء

% ./configure --prefix=/usr/pkg

: FreeBSD  /usr/local ʲǤ

% ./configure

: main.cf ֤Ȥ /etc/fml Ȥʤ顢(Debian Ȥ
٤)

#  ./configure --with-fmlconfdir=/etc/fml
checking for perl... perl
checking for perl... /usr/bin/perl
"checking whether optional useful commands are available or not"
checking for cc... /usr/bin/cc
checking for install... /usr/bin/install
checking for cksum... /usr/bin/cksum
checking for sum... /usr/bin/sum
checking for md5... /usr/bin/md5
checking for digest... /usr/bin/digest
checking for ls... /bin/ls
checking for tar... /bin/tar
checking for gzip... /usr/bin/gzip
checking for zcat... /usr/bin/zcat
checking for gzcat... /usr/bin/gzcat
checking for gunzip... /usr/bin/gunzip
checking for lha... no
checking for ish... no
checking for bzip2... /usr/bin/bzip2
checking for bunzip2... /usr/bin/bunzip2
checking for uuencode... /usr/bin/uuencode
checking for compress... /usr/bin/compress
checking for sendmail... /usr/sbin/sendmail
checking for makemap... no
checking for newaliases... /usr/bin/newaliases
checking for postfix... /usr/sbin/postfix
checking for postalias... /usr/sbin/postalias
checking for postconf... /usr/sbin/postconf
checking for postmap... /usr/sbin/postmap
checking for nkf... /usr/bin/nkf
checking for kakasi... no
checking for namazu... no
checking for pgp... /usr/bin/pgp
checking for pgp5... /usr/bin/pgp5
checking for pgpe... /usr/bin/pgpe
checking for pgpk... /usr/bin/pgpk
checking for pgps... /usr/bin/pgps
checking for pgpv... /usr/bin/pgpv
checking for gpg... /usr/bin/gpg
checking for gpgv... /usr/bin/gpgv
checking for gpgsplit... /usr/bin/gpgsplit
checking for less... /usr/bin/less
checking for more... /usr/bin/more
checking for w3m... /usr/bin/w3m
checking for spamassassin... no
checking for spamd... no
checking for spamc... no
checking for bogofilter... no
checking for clamscan... /usr/bin/clamscan
checking for vi... /usr/bin/vi
checking for ng... /usr/bin/ng
checking for mule... /usr/bin/mule
checking for emacs... no
checking for xemacs... no
configure: creating ./config.status
config.status: creating install.pl
config.status: creating config.sh
config.status: creating fml/etc/install.cf
config.status: creating fml/etc/main.cf
config.status: creating fml/etc/default_config.cf.ja
config.status: creating fml/etc/default_config.cf.en
config.status: creating fml/etc/site_default_config.cf
config.status: creating fml/libexec/loader
config.status: creating fml/bin/fmladdr
config.status: creating fml/bin/fmlalias
config.status: creating fml/bin/fmlconf
config.status: creating fml/bin/fmldoc
config.status: creating fml/bin/fmlhtmlify
config.status: creating fml/bin/fmlsch
config.status: creating fml/bin/fmlproj
config.status: creating fml/bin/fmlpgp
config.status: creating fml/bin/fmlpgp5
config.status: creating fml/bin/fmlpgpe
config.status: creating fml/bin/fmlpgpk
config.status: creating fml/bin/fmlpgps
config.status: creating fml/bin/fmlpgpv
config.status: creating fml/bin/fmlgpg
config.status: creating fml/bin/fmlgpgv
config.status: creating fml/bin/fml
config.status: creating fml/bin/makefml
enabled: perl -w

fml has been configured with the following options:

                    prefix: /usr/local
               exec_prefix: ${prefix}
                    bindir: ${exec_prefix}/bin
                   sbindir: ${exec_prefix}/sbin
                   lib_dir: ${exec_prefix}/lib
               libexec_dir: ${exec_prefix}/libexec
                    mandir: ${datarootdir}/man
               datarootdir: ${prefix}/share
                   datadir: ${datarootdir}

         fml process owner: fml
         fml process group: fml
                fmlconfdir: /etc/fml
        ml_home_prefix_map: /etc/fml/ml_home_prefix
                mlspooldir: /var/spool/ml
            default domain: home.fml.org
          default hostname: elena.home.fml.org

         mime based filter: yes

Now you must run "make install" as user "root".

­: 䡢פ򤹤 OS ξ /usr/local ǤϤʤ /usr ľ
Ǥ͡

# ./configure --prefix=/usr --with-fmlconfdir=/etc/fml



­: ƥǥ쥯ȥ

줾Υǥ쥯ȥϼ̤ǤʤǥեȤǤ /usr/local 
˥󥹥ȡ뤵ޤ

Table 4-1. ǥ쥯ȥι¤


ǥ쥯                                                            
  ȥ                                                                  

/usr/   ե֤ꡣ fml4  /usr/local/fml/.fml      
local/  default_config.ph ֤ޤ /usr/local/etc/fml/  
etc/fml main.cf ǤϡѤ fml8 ΥС饤֥ξ(ǥ 
        쥯ȥ)ʤɤǽǤ                                   

/usr/                                                                   
local/  ¹ԥե ( fml4  /usr/local/fml )                     
libexec/                                                                
fml                                                                     

/usr/                                                                   
local/  perl module ֤ ( fml4  /usr/local/fml )         
lib/fml                                                                 

/usr/   åʤɤΥƥץ졼Ȥ֤( fml4  /usr/local/fml/     
local/  messages/ )β˸¸Υ֥ǥ쥯ȥ꤬ޤ 
share/                                                                
fml                                                                     

        ǥեȥɥᥤΣ̷ͣΥȥåץǥ쥯ȥꡣ fml4 ƱŪ
        ǻȤޤ: /var/spool/ml Υʤ configure ǻꤷ 
         owner ѿ(ǥեȤϥ桼 fml)ꤵޤʤɥ 
/var/   󤴤Ȥ̤ prefix ѰդƲȤ fml.org Ѥ / 
spool/mlvar/spool/ml ǡ nuinui.net Ѥˤ /var/spool/nuinui.net ʤɤΨ
        褦ˡΥɥᥤȥǥ쥯ȥбط                  
        ml_home_prefix_maps ( Сɥᥤ򻲾 )˵Ҥޤ
        ( makefml/fml  newdomain ޥɤꤵޤ)Сɨ
        ᥤξܺ٤  Chapter 47 򻲾ȤƲ                   




fml Υ󥹥ȡ: make install

configure ¹Ը塢桼 root ˤʤꡢmake install ¹ԤƲ

% su root
# make install


                                  Warning                                   

configure ϥ桼 root Ǽ¹ԤɬפϤޤ󤬡 make install ɬ樢
 root Ǽ¹ԤƲ                                                
                                                                            
% su root                                                                   
# ./configure                                                               
# make install                                                              
                                                                            
ְ㤨ʤ褦ˡϤᤫ configure  root Ǽ¹ԤۤΤ⤷ 
ޤ                                                                  



main.cf Խ

ɬפʤ /usr/local/etc/fml/main.cf ԽƲ configure ʤδ
˹碌 main.cf 񴹤ƤϤʤΤ configure Υץ꤬
СԽɬפϡޤʤϤǤ

mani.cf ȤκǤŪǤ٤ꡢȤХȶ̤ fml
ưʤɤ site_default_config.cf Ǥƣ̸ͣͭϡƣͣ
Υۡǥ쥯ȥˤ config.cf եԽƲ



: /usr/local/etc/fml/main.cf

main.cf ϥǥ쥯ȥץΥ桼λʤɺǤŪʾΤߤ񤫤
ƤեǤ

/usr/local/etc/fml/main.cf ϳƣ̤ͣǤϤޤ fml ΥСʤ
᥿٥ΰ¸褹뤿եǡ fml Υץෲư
ݤˡɤĤͤˡɻȤƤޤ

main.cf ΥեޥåȤ¾ .cf Ʊ [6] 

ѿ̾ = 

Ǥ

#
# $FML: main.cf.sgml,v 1.12 2010/03/18 20:28:04 fukachan Exp $
#

# fml version
#   This is important
# Example: fml 8.0
#          fml-current YYYYMMDD
#          fml-devel YYYYMMDD
fml_version     =       current-20020701

fml_owner       =       fml

fml_group       =       fml


###
### DIRECTORIES
###

# Example: /usr/local
prefix                  =       /usr/local
exec_prefix             =       ${prefix}

# $config_dir holds the global main configuration and
# several version-dependent default configurations
# Example: /usr/local/etc/fml
config_dir              =       /usr/local/etc/fml

# Example: /usr/local/etc/fml/defaults/$fml_version
default_config_dir      =       $config_dir/defaults/$fml_version

# defined for convenience, for example, we need this variable
# at include, include-ctl, which needs expansion of ../libexec/fml/fml.pl
# Example: /usr/local/libexec/fml
executable_prefix       =       ${exec_prefix}/libexec/fml

# Example: /usr/local/libexec/fml/$fml_version
libexec_dir             =       ${exec_prefix}/libexec/fml/$fml_version

# Example: /usr/local/lib/fml/$fml_version
lib_dir                 =       ${exec_prefix}/lib/fml/$fml_version

# Example: /usr/local/share/fml/$fml_version
share_dir               =       ${prefix}/share/fml/$fml_version

# site local library location
# which is prepared but not used by fml itself
local_lib_dir           =       ${exec_prefix}/lib/fml/site_local


# ml's home directories
# $ml_home_dir (e.g. /var/spool/ml/elena ) is taken from loader's @ARGV.
# This is compatible with fml 4.0.
# Example: /var/spool/ml
default_ml_home_prefix  =       /var/spool/ml



###
### CONFIGURATION FILES AND DEFAULT PARAMETERS
###


# default domain
default_domain          =       fml.org


# version dependent default_config.cf location
# whic holds
# Example: /usr/local/etc/fml/defaults/8.0/default_config.cf
default_config_cf       =       $default_config_dir/default_config.cf


# domain specific configurations
# Example: /usr/local/etc/fml/domains/fml.org/default_config.cf
domain_default_config   =       $config_dir/domains/$default_domain/config.cf


# virtual format: domain directory
# for example,
#   fml.org     /var/spool/ml/fml.org
#   nuinui.net  /var/spool/ml/nuinui.net
virtual_maps            =       $config_dir/virtual



site_default_config.cf Խ (ץ)

/usr/local/etc/fml/site_default_config.cf ϡΥۥȶ̤ե [7]
Ǥɬפ˱ԽƤ

󡢤ƣ̤ͣ(: /var/spool/ml/elena/config.cf) ͥ褵
ޤ

ǥեȤǤ fml4 ȹ碌뤿ˡӸܤȤ:) subject ΥĤ
ȥե륿ϢäƤޤ

# $FML: fml_on_unix.sgml,v 1.14 2010/03/28 10:48:08 fukachan Exp $
#
#               site default_config.cf EXAMPLE
#
# fml-devel loads .cf files in this order for elena ML.
#      1. ${prefix}/etc/fml/defaults/$VERSION/default_config.cf
#      2. ${prefix}/etc/fml/site_default_config.cf
#      3. ${prefix}/etc/fml/domains/$DOMAIN/default_config.cf
#      4. /tmp/dir/elena/config.cf
#
# This file overrides the default "default_config.cf" configurations
# in the following way.
#

# We want to disable the subject tag in articles by default.
article_header_rewrite_rules    -=      rewrite_article_subject_tag

# mime based comonent filter
use_mime_component_filter       =       yes


# [site specific options]
#   Example:
#       key  = value
#       key += value
#       key -= value


=cut

#
# you can write hooks here after.
#   Example:
#       $distribute_run_start_hook = q{ ... };



ե륿ɤ뤫

ǥեȤǤϤ٤ƤΥե륿ͭǤ fml4 ο侩Ƥޤ

֥ե륿ΤפȤ⤢뤫⤷ޤ󤬡ƥǥեȤϸ
ˤƤޤ

ե륿äƤΤϤ褤ΤǤ mime component filter ΥǥեȤ
ɤΤϴबۣǤǥեȤǤϣ̤ͣؤƤΤ text
/plain Υ᡼ΤߤȤƤޤ text/html äƤ뿲ܤ᡼
⡢źեեƤ륦륹ǥեȤǤ̤ޤ

ʤ(٤ƤΣ̤ͣ) mime component filter ̵ˤˤ
site_default_config.cf 

use_mime_component_filter       =       no

ȤƤ

mime component filter ͭˤ롼򥫥ޥȤ硢
site_default_config.cf Ǥ

use_mime_component_filter       =       yes

Τޤޤˤơ /usr/local/etc/fml/mime_component_filter 򥫥ޥƤ



                                  Warning                                   

ŻΥ᡼źեեʤϸ褦ʤΤǡ᡼ʤɻŨ
ѤΣ̥ͣФȤƻȤʤ顢󥹥ȡ塢                      
                                                                            
[/usr/local/etc/fml/site_default_config.cf]                                 
                                                                            
use_mime_component_filter       =       no                                  
                                                                            
ѹƤȤ褤Ǥ礦                                              



Сɥᥤξ

ǽ(ĤޤꡢΥɥᥤǣ̤ͣ)newdomain ޥɤ
ml_home_prefix_maps Ѥɥᥤ ml_home_prefix бط


[/var/spool/ml/etc/fml/ml_home_prefix]

nuinui.net /var/spool/nuinui.net

newdomain ޥɤˤĤƤϡ֣̤ͣκפǸҤޤ


                                  Warning                                   

ml_home_prefix_maps Υѥѹ /usr/local/etc/fml/main.cf Ԩ
Ʋ (äȤ⡢ƤԽפǤ)                         
                                                                            
ʤ site_default_config.cf ϥɥᥤ˴ؤ餺ŬѤ뤳ȤդƤ
ĤޤꡢϥСɥᥤˤŬѤޤ              



᡼륵Ф (Postfix)


                                  Caution                                   

[ʥӥ] Postfix ѹΤޤȤ                                 
                                                                            
[/etc/postfix/main.cf]                                                      
                                                                            
(1) allow_mail_to_commands      (ǽ˰)                            
                                                                            
(2) alias_maps  ɲ          (ɥᥤ󤴤Ȥ˰)                        
                                                                            
(3) virtual_maps ɲ         (Сɥᥤ󤴤Ȥ˰)              
                                                                            
̤ͣȤˤϡ̵פǤ(̤ͣοȼ Postfix ѹ) 


餫ἡΤ褦 Postfix ѹƤƲƤ
makefml newml (fml ML newml)¹Ԥǣ̤ͣưŪͭˤʤޤ


                                  Caution                                   

ʣΥɥᥤȤ硢ɥᥤ󤴤Ȥ Postfix  alias_maps            
virtual_maps ɲ꤬ɬפˤʤ뤳ȤդƲ                   
                                                                            
ǽΰǣϣˤǤĤΥɥᥤˤĤƤϡ Postfix  
򤹤СȤ makefml ʤ fml ޥɤǣ̤ͣκ諸
ǽǤ                                                              



Postfix ץ¹Բǽˤ롣

allow_mail_to_commands = alias,forward,include

Ʋϣ̥ͣɥ饤Ф¹Ԥ뤿ɬܤǤ



ǥեȡɥᥤ(: fml.org)ѤΣͣ

Ūˤ postfix  /etc/postfix/main.cf 򼡤Τ褦ˤƤ

[/etc/postfix/main.cf]

# Postfix ץ¹Բǽˤ롣
allow_mail_to_commands = alias,forward,include

# /etc/mail/aliases  OS ǥեȤ alias
# /var/spool/ml/etc/mail/aliases ϥǥեȥɥᥤѤ alias (fml )
alias_maps      =       hash:/etc/mail/aliases
                        hash:/var/spool/ml/etc/mail/aliases

hash:/var/spool/ml/etc/mail/aliases ϡ֥ǥեȤΣ̥ͣס/etc/mail/
aliasesפǤ( ǥեȤΣ̥ͣס롦ѥϥ󥹥ȡˤäѤ
) CUI  newml ޥɤ¹Ԥȡ̾ hash:/var/spool/ml/etc/mail/
aliases ե򥢥åץǡȤƤ뤳ȤɽΤǥѥǧƤߤƲ
 newml ޥɤλȤˤĤƤξܺ٤  Chapter 4 ξϤ򻲾ȡ


                                  Warning                                   

ޤ mydestination ˥ǥեȤΥɥᥤ(餯 $mydomain )ɲè
Ƥ뤳ȤǧƲ                                            
                                                                            
% postconf mydestination                                                    
                                                                            
¹ԤPostfix ǧ                                            



Сɥᥤ(: nuinui.net)

/etc/postfix/main.cf  alias_maps  virtual_maps ξɲäɬפǤ


[/etc/postfix/main.cf]

# Postfix ץ¹Բǽˤ롣
allow_mail_to_commands = alias,forward,include

# nuinui.net Ѥ alias ɲ
alias_maps      =       hash:/etc/mail/aliases
                        hash:/var/spool/ml/etc/mail/aliases
                        hash:/var/spool/nuinui.net/etc/mail/aliases

# nuinui.net Ѥ virtual (Сɥᥤΰλؼ)ɲ
virtual_maps    =       hash:/var/spool/nuinui.net/etc/postfix/virtual

makefml newml ¹Ԥ /var/spool/nuinui.net/etc/mail/aliases  /var/
spool/nuinui.net/etc/postfix/virtual  makefml ˤäƼưŪ˹ޤ(
̤ɽΤʬޤ͡)

Сɥᥤξ硢 ml_home_prefix_maps ꤬ɬפǤ
 ml_home_prefix_maps 

[/var/spool/ml/etc/fml/ml_home_prefix]

nuinui.net /var/spool/nuinui.net

Ȥ֥ɥᥤ󢫢ǥ쥯ȥפʤƤޤ newdomain 
ɤꤷޤܺ٤  Chapter 4 ξϤ򻲾ȡ


                                  Warning                                   

fml8  virtual_maps Υե Postfix  virtual_maps Ǥ
Ƕ Postfix ˤ sendmail ȤΤ⤢ޤfml8 ǤΤ餢
 postfix ȤäƤȤȤդƲ                 
                                                                            
mydestination ˤϡǥեȤΥɥᥤ(餯 $mydomain)뤳Ȥᨢ
̤ǤСɥᥤ(Ǥ nuinui.net) mydestination ɲä먢
ɬפϤޤ(Postfix  virtual_maps ͤ򸫤 mydestination Ǥ먢
ȤߤʤƤޤ)դƲ                                         
                                                                            
Сɥᥤ뤿Ӥ alias_maps ˤϿɥᥤ aliaes 򡢨
virtual_maps ˤ virtual եɲäɬפޤ                
                                                                            
ʤߤˡǶ postfix Ǥ virtual_alias_maps ȤΤѿ̾Ǥ 
ǥե(/etc/postfix/main.cf.default)                              
                                                                            
virtual_alias_maps = $virtual_maps                                          
                                                                            
ȤʤäƤ뤿ᡢ virtual_maps Ǥ virtual_alias_maps Ǥ⤫ޤޤ  



᡼륵Ф (qmail)


                                  Warning                                   

fml8  qmail ϡСɥᥤʤΤǥեȡɥᥤ(Τ)ʤΨ
鷺Ĥͤ /var/qmail/control/virtualdomains ѤȤƤ 
ޤ fml4 ήȤϰۤʤޤΤդƲ                        
                                                                            
[ʥӥ] qmail ѹΤޤȤ                                   
                                                                            
(1) ɥᥤȤϤ newdomain (makefml ⤷ fml ޥ)  
                                                                            
(2) newml ǡҤȤģ̤ͣƤߤ(makefml ⤷ fml ޥ)       
                                                                            
(3) 줿ܤ򸵤ˡ/var/qmail/control/virtualdomains Խ        
    ܤϡnewdomainǻꤷס̾/etc/qmail/virtualdomains      
                                                                            
(4) qmail-send  HUP ʥ롣                                            
                                                                            
̤ͣȤˤϡ̵פǤ (̤ͣοȼ qmail ѹ)
                                                                          


makefml newml ʤ fml ML newml ¹Ԥǣ̤ͣưŪͭȤʤ
ˡ餫 qmail ѹƤƲ /var/qmail/control/
virtualdomains 긫ܤ (ɥᥤ󤴤Ȥ) /var/spool/ml/etc/qmail ˺
ޤ

ʲΥɥᥤκǽΣ̤ͣݤɬפʼˤĤޤ



ǥեȤΥɥᥤ(: example.org)ξ

ǥեȤΥɥᥤ(: example.org)ϻȤʤȻפΤǤ

ǥեȥɥᥤǤϤʤ ml.example.org ʤɤȣͣѤΥ֥ɥᥤ
ƻȤΤɤȻפäƤޤ

:


                                  Caution                                   

ǥեȥɥᥤФƤ /var/qmail/control/virtualdomains θ(: / 
var/spool/ml/etc/qmail/virtualdomains)ɺޤɡ                



Сɥᥤ(: ml.example.org)

ml.example.org ǤκǽΣ̤ͣݤ qmail  virtualdomains ե
ܤޤ򸫤ơ

/var/qmail/control/virtualdomains

ԽƤޤΥɥᥤ /var/qmail/control/rcpthosts ˤɲ
Ƥ

[/var/qmail/control/rcpthosts]

ml.example.org

ƥɥᥤ󤴤Ȥˡ˰ /var/qmail/control/virtualdomains  /var/qmail/
control/rcpthosts ԽСȤưǣͣ̿Ԥʤ褦
ˤʤޤ

( qmail 1.03 on NetBSD/i386 5.0.2 ):

% su root
# makefml newdomain ml.example.org /var/spool/ml.example.org
# su fml
% makefml newml test@ml.example.org
  ...  ...
% exit
# echo ml.example.org >> /var/qmail/control/rcpthosts
# cat /var/spool/ml.example.org/etc/qmail/virtualdomains \
      >> /var/qmail/control/virtualdomains
# pkill -HUP qmail-send (qmail-send  HUP ʥ)

: /var/qmail/control/virtualdomains 椷ƤΤ qmail-send Ǥ
qmail-send ϥȤݤˤΤ virtualdomains եɤ߹ߤޤ
virtualdomains եɤ߹ߤ뤿ˤ qmail-send  HUP ʥ
ɬפޤ

makefml newml ե̾ˤĤƤ makefml newml  qmail ˴ؤ
ȤƤ

qmail 

/var/qmail/control/virtualdomains

ˡ餫ἡΤ褦

ml.example.org:fml-ml.example.org

ŹǤС makefml ʤ fml ޥɤΥСɥᥤ˳
 ~fml/.qmail-* ե뷲Τǡǣ꤬ͣͭˤʤ롢
ȤȤǤ

ޡroot  qmail ɬפΤ¾ΣͣԣȰʤΤǡȤꤿ
ƤƳڤȤȤϤʤǤ͡ .qmail-* ե뷲ư鵤ˤƤ
ɡ줫񤤤鵤(ԡ)Ǥ



쥷ԡs

1. 桼 fml ʳ(Ȥмʬ̾) fml Ȥ
2. 󥹥ȡȤκݡ桼 fml ˤʤ륿ߥ󥰤ϡ
3. ɥȴΥ󥹥ȡ򤷤
4. 󥹥ȡ perl Υѥꤷ
5. jperl  fml Ȥ
6. elena ML ()
7. /var/spool/ml/etc/ ʲ aliases եԽƤפǤ
8. ᡼륵Ф Unix ǲƯ fml  Windows 2000/NT4 ư
9. ̤ͣ(ƽ)
10. ְ㤨 rmml Ƥޤä̤ͣ褵
11. loader  Bootstrap() ɡäȤ顼Ф

1. 桼 fml ʳ(Ȥмʬ̾) fml Ȥ

fml ưץΥ桼 fml ¾Υ桼(Ȥ another)ˤΤǤ
С configure ץ --with-fml-owner ѹǤޤ

./configure --with-fml-owner=another

ʬΥȤǼ¹ԤΤϤޤ礦 fml ѥ桼Ѱդ뤳
侩Ǥ

aliases εưǤϤʤ̥桼θ¤Ȥƣ̤ͣ¹ԤΤǤ
procmail ѤͤƤߤΤĤμǤ礦 /var/spool/ml/etc/
procmail/procmailrc 򻲹ͤˤƲ

2. 󥹥ȡȤκݡ桼 fml ˤʤ륿ߥ󥰤ϡ

ɤ configure μ¹Ԥϥ桼 fml ǹԤʤäƤ⤫ޤޤ󤬡
ȡϥ桼 root ǹԤʤäƲ

դˡ٤Ƥκ(ɤ饤󥹥ȡޤǤ٤)桼 root ǹԤ
äƤꤢޤ

3. ɥȴΥ󥹥ȡ򤷤

ߡfml8 ϥɥȤ򥤥󥹥ȡ뤷ޤ󡣵դˡɥȤɬפʤ饽
 Documentation/ ʲŬڤʾ (Ȥ /usr/local/share/doc/fml8/С
ֹ/) ˥ԡƲ

4. 󥹥ȡ perl Υѥꤷ

configure ¹Ԥݤ˴Ķѿ PATH ŬڤꤷĤļ¹ԤƲ

% env PATH=/some/where/:$PATH sh configure

5. jperl  fml Ȥ

ưɤޤäʬޤ

6. elena ML ()

--force Ĥ newml ¹ԤƲ

% makefml --force newml elena

7. /var/spool/ml/etc/ ʲ aliases եԽƤפǤ

ϤԽƤ⤫ޤޤƤϼʬǴ褦ˤƲ
 makefml/fml ưԽȤǤΤǡ̤ͣäкޤ
ˣͣԤʤäƤ⸵ˤޤΤǡդƲ

8. ᡼륵Ф Unix ǲƯ fml  Windows 2000/NT4 ư

: ƥȤƤޤ

fetchfml  Windows 2000/NT4 ư MTA  Unix ưɤǤ礦

9. ̤ͣ(ƽ)

 rmml ơ⤦ newml ¹ԤΤñǤ

% makefml rmml elena
% makefml newml elena

10. ְ㤨 rmml Ƥޤä̤ͣ褵

reviveml ޥɤȤäƲ

11. loader  Bootstrap() ɡäȤ顼Ф

֡ȥȥåפΥɤޤ«ƤʤΤǡޤ fml  boot loader (/usr
/local/fml/libexec/loader) ؤɬפ뤳Ȥ⤢ꤨޤ

äϡmake install 

You must upgrade loader. Replace it ? [y/n]

ɽޤ y ȡ󥹥ȡ餬 loader 򿷤Τ촹
ޤ



Chapter 5. Unix ǣ̤ͣ

ޥɥ饤ٱġˤ makefml  fml ޤ makefml  fml4
Ʊ󥿥åǤ fml ϰ¤ӽ礬㤦ƱޥɤǤ

makefml COMMAND ML      (optional arguments)
fml     ML      COMMAND (optional arguments)

ʲǤ makefml ˤޤ



makefml newml ǣ̤ͣ (ǥեȥɥᥤξ)


                                  Caution                                   

ǥեȥɥᥤξ硢fml4 ƱǤ                                 
                                                                            
СɥᥤȤ硢fml4 Ȥϣͣ̾ΰۤʤޤС 
ɥᥤξܺ٤ˤĤƤ  the Section called makefml newml ǣ̤ͣ ( 
եȥɥᥤǤ"ʤ") 򻲾ȤƲ                          


̤ͣκ makefml ȤäƹԤʤޤȤ fml4 ƱͤǤ

% su fml
% makefml newml elena
   ... ͻҤϤ(ά) ...

ǥեȤ /var/spool/ml ʳΥѥȤϡΤŤ줫ˡȤ
Ʋ (1) 󥹥ȡ configure ץѹƤ (2) (С
ɥᥤλȤߤѤ) makefml newdomain ޥɤǻȤѥ
ꤹ롢

% su root
# makefml newdomain fml.org /var/spool/virtual/fml.org
# exit
% su fml
% makefml newml elena
   ... ͻҤϤ(ά) ...

: ܥɥȤ¾ξǤڤƤ褦ˡ (Ѥɥᥤ
ƤȲꤷ) ̤ͣСɥᥤǱѤƤľȹͤƤ


makefml newml elenaפ¹ԤȼΤ褦ʽԤʤޤ

  /var/spool/ml/elena 

            config.cf
            include
            include-ctl


    եʤɤ(Ŭͣ̾ɥᥤ̾Ѵʤ)

  /var/spool/ml/etc/mail/aliases  elena ̤ͣŹࡣ postalias 
    ɤ /var/spool/ml/etc/mail/aliases.db  (Postfix Ѥ)

  ~fml/.qmail-* ե뷲 (qmail Ѥ)

  procmailrc θܤ (ϸܤ)

  HTML 줿֤ȤưʲγؤѰդ/롣

            ~fml/public_html/fml/mlarchive/$domain/$ml/


    Ȥ elena@fml.org ʤ

            ~fml/public_html/fml/mlarchive/fml.org/elena/


    Ѱդ롣ǥեȤǤϡ HTML 줿ưŪ˺( 
    ǥեȤǤ apache ̵꤬ΤϤʤΤǥ󥿡ͥåȤˤϸ
    ʤ)

  CGI 󥿡եѰդ롣ɥᥤǰְΤ󥿡ե (Υ
    ᥤΣ̤ͣǤ)

            ~fml/public_html/cgi-bin/fml/$domain/admin/config.cgi


    ޤƣ̤ͣǰְΤ󥿡ե(Σ̤ͣǤ)

            ~fml/public_html/cgi-bin/fml/$domain/ml-admin/$ml/config.cgi




makefml newml ǣ̤ͣ (ǥեȥɥᥤǤ"ʤ")


                                  Caution                                   

ǥեȥɥᥤǤϤʤ硢fml4 礭ۤʤޤ (1) ǽ˨
newdomain ޥɤȤ (2) ͣ̾ˤϥɥᥤĤ롢 
                                                                        


̺ͣˤ makefml ȤޤȤ fml4 ƱͤǤʤ֣ͣ̾
ˤȥɥᥤޤǤĤפȤۤʤޤդƲ

(ɥᥤȤϤ)  newdomain ޥɤˤɥᥤ
ɬפǤ

: nuinui.net ɥᥤǤΣ̤ͣȤϤ

% su root
# makefml newdomain nuinui.net /var/spool/virtual/nuinui.net
# exit
% su fml
% makefml newml elena@nuinui.net

ܰʹߤ

% su fml
% makefml newml rudo@nuinui.net

ǣ̤ͣǤޤ

newdomain ޥɤǤϡ֥ɥᥤפȡֻȤ ml_home_prefix ǥ쥯ȥפΥ
ꤷޤϥϥåǽ񤱤

{ nuinui.net => /var/spool/virtual/nuinui.net }

̣ޤΥޥɤ /usr/local/etc/fml/ml_home_prefix եԽ
ԤޤǤ ml_home_prefix ե˼ιԤɲäޤ

nuinui.net /var/spool/virtual/nuinui.net

ʤߤˡбطä륳ޥɤ rmdomain Ǥ

newml ޥɤϡΣ֥ͣ̾ɥᥤ̾Ĥפˤʳǥեȥɥᥤ
ξˡƱǤ

ޤСɥᥤξ硢 makefml newml ϳ MTA ȤΥСɥᥤ
긫ܤޤȤ

/var/spool/nuinui.net/etc/sendmail/virtusertable
/var/spool/nuinui.net/etc/postfix/virtual
/var/spool/nuinui.net/etc/qmail/virtualdomains
/var/spool/nuinui.net/etc/procmail/procmailrc

ޤ MTA ѹλͤˤƲ

ʤߤ procmail ϡ( /var/spool/nuinui.net/etc/procmail/procmailrc )
ɥᥤ̾ĤʤΤḁ̇̄СɥᥤѤǤϤޤ󡣤ˤ衢
ܤ˸Ѳ

Ūʾܺ٤ϡСɥᥤξϤ򻲾ȤƲ



᡼륵Ф (Postfix)

    Important: оݤȤʤɥᥤ䤹ݡɥᥤ󤴤Ȥ /etc/postfix/
    main.cf ؤɲúȤɬפǤ

    ɥᥤ󤴤Ȥ˰ fml8 κ븫ܤ˽ä alias_maps (Сɥᥤ
    ξϡalias_maps  virtual_maps ξ) ѹƤС̤ͣκ
    ̤ʺȤϤޤ( fml8 ġˤ Postfix ϼ
    ưŪ˹ޤ)

    Postfix ˤĤƤ  the Section called ᡼륵Ф (Postfix)
    in Chapter 4 򻲾ȤƲ


                                  Warning                                   

fml8  OS  aliases (: /etc/mail/aliases)ѹ뤳ȤϤޤ   
                                                                            
fml8 ġϡƥɥᥤ󤴤ȤѰդƤ alias ե          
$ml_home_prefix/etc/mail/aliases ɬפɲäΥե뤫     
aliases.db ȤԤʤޤ (̤ͣκɬפʺȤ 
ġˤޤǤ)                                                     



­: /var/spool/ml/etc/mail/aliases Υեޥå

fml8 Ƥ̤ͣ aliases Υȥ $ml_home_prefix/etc/mail/aliases
ɲäޤ

### <ALIASES elena@home.fml.org ML> ###

# address for post
elena: :include:/var/spool/ml/elena/include
owner-elena: fukachan

# address for command
elena-ctl: :include:/var/spool/ml/elena/include-ctl
owner-elena-ctl: fukachan

# maintainer
elena-request: elena-admin
elena-admin: fukachan, elena-error

# error analyzer
elena-error: :include:/var/spool/ml/elena/include-error
owner-elena-error: fukachan

### </ALIASES elena@home.fml.org ML> ###

Сɥᥤξ硢 $ml_home_prefix ʬ $virtual_maps ˤä
ưŪѲޤ



᡼륵Ф (qmail)


                                  Warning                                   

qmail ϡͣѤ˰ĤΥɥᥤޤޤȤȤȤƤޤ


ͣѤΥɥᥤ䤹Ӥˡɲ꤬ɬפǤ fml ͭ qmail 
פǤ

ͣѤ˥ɥᥤ䤹ݤˤ /var/qmail/control/virtualdomains  /var/qmail/
control/rcpthosts ɲä qmail-send  HUP ʥɬפޤ


˰Ф褤ǡʹߣ̤ͣκ fml8 ġ
뤬ưǹԤʤޤޤǣϣˡ

ܺ٤ϡqmail ˤ̺ͣˡ  the Section called ᡼륵Ф
(qmail) in Chapter 4) 򻲾ȤƲ



ե config.cf Υޥ

makefml ϡ makefml newml ¹ԤݤˡΣ̤ͣ config.cf ʤɤե
뷲켰ꡢ MTA  fml ưݤ˻Ȥե켰Ѱ
ޤ MTA ѤեȤϡ Postfix/Sendmail Ѥ include ե뷲
 qmail Ѥ ~fml/.qmail-* ʤɤɬפե켰Ǥ

% su fml
% makefml newml elena
   ... snip ...
% ls /var/spool/ml/elena
config.cf include include-ctl include-error
        ... snip ...


                                  Warning                                   

˥塼ٱġ뤬̤ʤΤǡ̤ͣΥޥ      
config.cf 򥨥ǥԽƲ                                      


makefml newml  config.cf ˤϡۤȤɲƤޤ (Ĥޤǥ
ͤȤȤˤʤäƤޤ) config.cf Ƭ ml_domain  ml_name 
ȤˤʤäƤޤϥޥɤΰ鼫ưŪ˷ꤵΤǤ
(äơȤΤޤޤ OK)

Ȥ /var/spool/ml/elena/include ե

"| /usr/local/libexec/fml/distribute elena@fml.org"

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

"| /usr/local/libexec/fml/command elena@fml.org"

ʤɤȤʤäƤޤMTA 鵯ư줿 /usr/local/libexec/fml/distribute ޥ
ɤʤɤΥޥɰ elena@fml.org ʬ ml_domain  ml_name 
ưŪꤷޤ (Τ config.cf ǤϥȤΤޤޤꤢޤ)



쥷ԡs

1. newml ˣ̴ͣԤΥ᡼륢ɥ쥹ꤷ
2. Ȥʤ MTA Ѥθߤ᤿
3. ̥桼/ѤΥ֥ڡѰդΤǤ

1. newml ˣ̴ͣԤΥ᡼륢ɥ쥹ꤷ

newml ˡΣͣѤΥꥢޤΤ

${ml_name}-admin: ԤΥ᡼륢ɥ쥹

ʬˤ $newml_command_ml_admin_default_address ѿͤޤǥե
ǤϡɤΣ̤ͣǤ /usr/local/etc/fml/main.cf ƤԤΥɥ쥹
$fml_owner ȤޤʳΥɥ쥹ѹ硢
site_default_config.cf  $newml_command_ml_admin_default_address ˥᡼륢
쥹ꤷƲ

$newml_command_ml_admin_default_address = ᡼륢ɥ쥹

ޤ$ml_name ʤɡ¾ѿ˰¸ͤѹĤǤ

$newml_command_ml_admin_default_address = $ml_name-owner@$ml_domain

2. Ȥʤ MTA Ѥθߤ᤿

newml_command_mta_config_list ˥󥹥ȡ뤵 MTA ΥꥹȤƤ
פ MTA ȴƲ

ȤСqmail פǤ

[/usr/local/etc/fml/site_default_config.cf]

newml_command_mta_config_list -= qmail

ȤƤ~/.qmail-* եʤʤޤ

3. ̥桼/ѤΥ֥ڡѰդΤǤ

2008/09/09 ʹߤ fml8 ϡnewml ˡ̥桼/ CGI 
ޤ CGI  URL ƤߤƲ

ʤǥեȤǤ CGI Ȥʤ褦ˤʤäƤΤǡCGI   Chapter
10 ξϤ򻲾Ȥ CGI ͭ˲



Chapter 6. Microsft 2000/NT Ǥ fml8 Υ󥹥ȡ


                                  Warning                                   

ޤfml8 ưޤ󡣤ʤξϤϥߡǡ֤פäƤ 
ˤޤ                                                        



Chapter 7. fml4 Σ̤ͣ fml8 Σ̤ͣѴ

2004/03: fml4  $DIR ($ml_home_dirˤ)Ȥ /var/spool/ml/elena
ʲΥե뷲 fml8 ιؼưѴ륳ޥɤޤ
ޤեǽͽŪʤΤǡ缡ɤƤͽǤ

2004/11: fml4  fml.pl  fml8  fml.pl 촹ǽȤޤĤޤꡢ
fml8 ˤ fml4 ľܥߥ졼Ǥ fml4  fml.pl  fml8 
fml.pl 촹 fml4  fml8 ؤΥåץ졼ɤǽˤ褦Ȥ
ΤǤ



: fml4  fml8 ؤΰܹ(1) fml8 ؤѴ

褦 fml4  fml8 ؤΰܹԤȤȤǤfml4 μ¹ԥե
fml8 Ǿ񤭤СΤޤưפȤ櫓ǤϤޤ

 fml8 Ǥϡ˶ᤤȤޤκݤˤ⡢եμưѴ
ʤɡХå饦ɤǤϡޤޤʽԤʤƤޤ

⤽ 4  8 Ǿ񤭤ƤޤȡƤ˰ܹԤ뤳Ȥˤʤ뤷Ԥ
Υ顼ꥫХ꤬ѤǤϤꡢİܹԤƤǤ礦ޤ
İܹԤˤ⡢Ǥе꤬ǽǤ٤Ǥ

ʤ櫓ǡ̤ͣİİܹԤǤ褦ʻȤߤˤƤǤС
ХɤȤ⤦櫓Ǥ

ʤߤˡ޹ͤƤϡʴǤ

1. fml8 򥤥󥹥ȡ뤹

2. (Postfix ξ) alias_maps  fml8  aliases ɲ

   :
        alias_maps      =       hash:/etc/mail/aliases
                                hash:/var/spool/ml/etc/aliases (fml4)
                                hash:/var/spool/ml/etc/mail/aliases (fml8)


3. fml4  ML  fml8 إСȤ롣

   fml $ml mergeml fml4 $DIR
Ȥ
   fml elena mergeml /var/spool/ml/elena

fml8 ذܹԤ̤ͣФ 3. 򷫤֤

aliases  include μưѴϡmakefml mergeml ޥɤޤޤ
fml4 եȥСꥹȤ fml8 ѴȤ mergeml ޥ
ɤԤʤޤ

ˡ񤷤Ƥ config.ph ̵Ǥñ config.ph Ǥ
 fml8  config.cf ưѴǤƤĤǤ

ʤñȤϡSubject Υ¤ʤ fml4  makefml config
(˥塼)ѹǤ٥ΤΤꤷƤޤ



: fml4  fml8 ؤΰܹ(2) fml4 μ¹ԥե촹Τޤ޻Ȥ

2004/11: fml4  fml.pl  fml8  fml.pl 촹ǽȤޤС
Postfix  /usr/sbin/sendmail (sendmail ߴޥ) ƱͤΰȹͤƤ


ȤСΤ褦 link ĥäƤ

% su fml
% make configure
% su root
# make install
# mv /usr/local/fml/fml.pl /usr/local/fml/fml.pl.orig
# ln -s /usr/local/libexec/fml/fml.pl   /usr/local/fml/fml.pl
# ln -s /usr/local/libexec/fml/msend.pl /usr/local/fml/msend.pl
# ln -s /usr/local/libexec/fml/mead.pl  /usr/local/fml/libexec/mead.pl

Τˤ fml4 ե򤽤Τޤ޻ȤäƤ櫓ǤϤޤ fml.pl
(fml8) ư줿 config.cf Ĥʤȡ̤ͣΥۡǥ쥯ȥ
 config.ph  config.cf ưΥեɤ߹ fml8 ץ
ưƤޤ

եμưѴǽϰϤϸ¤Ƥޤ fml4 Υ˥塼
ǽ(ñ)Τʤ鼫ưѴƲȤʤ褦ˤʤäƤޤ



: fml4  fml8 

fml8  fml4 ö˺ơ줫߷סƥǥ󥰤줿եȥǤ
Τᡢfml4  fml8 Ǥľܤбطʤǽѿޤ

ޤбطäȤƤ⡢абǤϤʤΤ¿Ǥ

ʲĤ򤢤ޤ



ïǤƲǽˤ

Ͽ줿桼ΤƤǽפʤΤ fml4 Ǥ fml8 ǤǥեȤλ
ͤǤïǤƲǽפѹ硢fml4 ( config.ph ե)Ǥ

$PERMIT_POST_FROM = "anyone";

ȤƤޤfml8 ( config.cf)Ǥ

article_post_restrictions = reject_system_special_accounts
                            permit_anyone
                            reject

: fml8 2008/08/17 ʹߤΥСǤ isolate (SPAM γΥ)侩Ǥ

article_post_restrictions = isolate_system_special_accounts
                            permit_anyone
                            isolate

Ȥʤޤ



Subject 

ǥեȤǤϡSubjectΥʤס fml4  fml8 ƱͤǤ
ơfml4 Ǥ

$SUBJECT_TAG_TYPE = '[:]';

 fml8 

article_header_rewrite_rules += rewrite_article_subject_tag

article_subject_tag           = [$ml_name:%05d]

Ƥޤ



ΥޥɤȤʤ

members ޥɤʤɤȤʤפ fml8 ǤϥǥեȤǤ fml4 ΰʲ
ΥޥɤбΤפǤ

&DENY_PROCEDURE('member');
&DENY_PROCEDURE('active');
&DENY_PROCEDURE('members');
&DENY_PROCEDURE('actives');
&DENY_PROCEDURE('status');
&DENY_PROCEDURE('stat');

fml4  fml4 侩ξ֤Ǥϡ֥ե륿ϻȤʤפ褦ˤʤäƤ
fml8 Ǥϡ֥ե륿ȤפǥեȤǤ

ΤᡢˤäƤ /usr/local/etc/fml/site_default_config.cf ǰ١֥ǥ
ȤǤϻȤʤפѹξǡ餿ưʲ㳰롼Ŭ
ɬפޤ

fml4 Ȱۤʤꡢ subscribe, chaddr, unsubscribe  confirmation ɬܤȤʤäƤ
ޤconfirmation 뤳ȤϽޤ



: ֡ȥץѹ

Ѵ륳ޥ(makefml mergeml)ԤʤȤ򡢰ʲޤºݡư
ԤʤɬפϤޤ

ʤ顢ԤʤäƤȤˤĤ򤷤Ƥ餦ˡ aliases  include
եˤĤƤ򤷤Ƥޤ

ޤ᡼륵Ф fml4  fml8 ư褦ѹʤƤϤʤޤ
вϤɤ졢ǽŪ fml8 ư뤳ȤǤС fml4 
config.ph Ŭ᤹ȤäȤϤʤȤʤȤͤǤ

⤦ܺ٤ʲ򤷤ޤ礦̥ͣɥ饤ФλȤߤפФƤ

Ȥ Postfix Ȥ硢 Postfix  aliases ե뤫 include ե
ɤ٤ȤΤꡢ include ե뤫 fml8 εưλΤޤǽŪ
 Postfix  /usr/local/libexec/fml/distribute ޥɤ¹Ԥޤ

ư줿 distribute ޥɤ config.cf ɤ߹ߡ config.cf С
ꥹȤʤɤξΤꡢޤޤʽԤʤȤäǥ֡ȥȥåפ
Ƥs

Ĥޤꡢfml8 ưޤǤ

aliases ե (MTA )
include ե

ΣĤʳФ櫓Ǥ

ơaliases եʷˤˤƱ̤꤬ͣʣƤƤϤޤ󡣤
 /etc/postfix/main.cf ˤϡΤ褦 fml4  fml8 ξ񤤤Ƥ
ΤǤ

alias_maps      =       hash:/etc/mail/aliases
                        hash:/var/spool/ml/etc/aliases (fml4)
                        hash:/var/spool/ml/etc/mail/aliases (fml8)

fml4  fml8  aliases ե֤ǤνʣϺƤʤȤޤ

̤θ򤹤ȡ

MTA -> fml4  aliases -> fml4  include -> fml4 (fml.pl)ư

ȤʤäƤ뵯ưν֤򼡤Τ褦ѹ櫓Ǥ

MTA -> fml8  aliases -> fml8  include -> fml8 ư

Τˤ

fml4  aliases ե뤫鳺ͣʬ
fml8  aliases ե˳ͣʬɲ

ɬפǤ

դ aliases νʣʤСƱƥ fml4  fml8 ¸ߤƤ
ޤ󡣤Ʊ̤ͣ fml4  fml8 ¸ߤƤꤢޤ
ºݤưΤϡ󤤤Ť줫(MTA 鵯ư褦ˤʤäƤ)
Ǥ



Chapter 8. fml4  fml8 

ܾϤǤϡfml4  fml8 ˤĤƲ⤷ޤ



fml4  fml8 ΰ㤤: ᡼

fml4 vs fml8  sendmail vs postfix 롣

Ԥλ鸫С줬äȤûȹͤޤ



fml4  fml8 ΰ㤤: 饤

äѤ˸Сfml8 Υɤ GPL  BSD 򡢤⤷ Artistic 
Ť줫ˤʤäƤϤǤ

fml4 ϡۤȤɤΥ(.plΤ)ȼ˽񤫤ƤޤΥ饤
 GNU Public License Ǥjcode.pl 㳰ǡܤ jcode.plƬʬΥ
󥹤򻲾ȤƲޤperl module (.pm) ȤƤꡢϥ
ĥ꡼ module/βäƤޤβΥ饤󥹤ϳƥ⥸塼¸Ǥ
ơĥ꡼ξǡΥե뷲ϴ¤Ǥޤ

fml8 Ǥϡĥ꡼ȥåץǥ쥯ȥǥץȤ⤷ϥ饤󥹤
ʬ櫓ƤޤȤ fml8 Ѥ˽񤫤줿ɤ fml/ ʲˤꡢ
󥹤 Artistic License Ǥcpan/  gnu/ ⤢ޤ̤̾Ǥ
img/  BSD 饤󥹽Ǥܤϡ줾Υ饤󥹤ɤǲ

ǥ쥯ȥꤴȤʬƤ뤿ᡢΥ饤󥹤Υɤӽ뤳Ȥ
פǤ

fml8 ϡ󥹥ȡˡ餹٤Ƥ򥤥󥹥ȡ뤹뤿ᡢ󥹥ȡ뤷
Ǥϥ饤󥹤ޤΤդƲ

⤷饤󥹤򥯥ꥢˤϡɬפإ⥸塼Ѱդ󥹥ȡ
Ѥƽв٤Ƥ



fml4  fml8 ΰ㤤: ޥɥ᡼䥨顼å

ޥɥ᡼䥨顼᡼Ȥä᡼Ǥֻκݤˤϡ᡼
Accept-Language ʤɤ򻲹ͤ˸μư򤬹Ԥʤޤܤ  Chapter 37
򻲾ȤƲ

եå֤ݤδܷ MIME/Multipart Ǥ

fml4 ߷פ줿 Unix ̤ǤθΥ󥿡ͥåȤȯŸϡ
ޤޤ OS Ķо줵Ƥޤ󥿡ͥåȤžǽϤ㤤˹®
̲ޤ 45 ܤ餤ΨȤϻפޤɸಽƤ
MIME/Multipart ʳȤȡɤʤץ桼³ФǤ礦

桼Υ졼бΤۤôȤޤä fml4 ˤä tar.gz 
zip ʤɤͽϤޤ



fml4  fml8 ΰ㤤: ޥɥ饤Ǥ (makefml)

makefml ȥ󥿥åΰۤʤ fml Ȥޥɤޤ

makefml ޥ ͣ̾ ץ
fml     ͣ̾ ޥ ץ

㤤ϰν֤Ǥͣ̾ȥޥɤν֤㤦ǡ¹ԤƤϡ
äǤ

ưɽλۤʤޤfml8 Τۤ Unix ŪǤ

fml4 ΥޥɤϡǽʤͻҤɽǸ˽ѹɽ
褦ˤʤäƤޤդˡfml8 ΥޥɤϡǤŤưޤ [8] 
ϡΤۤ Unix ȤȤȡɬоݤեȤϸ¤ʤ
ẹʬɽǤ櫓ǤϤʤʤɤȤäȤ뤿Ǥ

makefml ¹Ԥƥޥɤϰʲ̤Ǥ

Table 8-1. fml4  fml8 ΰ㤤: CUI (makefml ⤷ fml ޥ)


                       fml4                      fml8             

                  makefml help ML ⤷                              
                   makefml info ML                                
                  ¹Ԥȥإפɽ                              
إפɽ      롣ɤǤƱ̤                        
                  ưɽκݤˡĶ                              
                  ѿ PAGER ꤵ                               
                  ƤСȤ                              

                  ȥåץǥ쥯ȥ  ȥåץǥ쥯ȥ configure
fml Υ󥹥ȡ먢make install (Τ   make install (Τ   
ˡ              makefml install)¹Ԩinstall.pl ץ)        
                                                                  

󥹥ȡ륹ꨢˡǥեȡˡǤϤʤǽ׹ܤϨ
ץȤεư        ǽ׹ܤŪߨconfigure ץǻꤹ먢
                  ꤬ǽ                                        

̤ͣκ        makefml newml ML ⤷ makefml newml ML              
                   makefml new ML                                 

newml ޥɤsendmail  (ߴ postfix, sendmail, qmail,     
륨ꥢ()뤿 postfix Ѥ procmail ٤Ƥ         
ե          ƤѲǽ)                                     

newml ޥɤ/var/spool/ml/etc/                                  
륨ꥢ()aliases               /var/spool/ml/etc/mail/aliases
եΥѥ                                                        

qmail Ѥmakefml qmail-setup ML (ǥեȤǺ)   
                                                                    

aliaes  makefml               ΤϤʤ            
                recollect-aliases ML                                

ML κ         makefml destructml ML makefml rmml ML               

顼᡼뼫ưmakefml mead ML ¹ԨסǥեȤꤵƤ
ϥġꤹ먢ꥢŬ                            
                  ѹ롣                                      

fml ΤΥƥȤmakefml test ML       ̤                        
Ƥߤ                                                              

LISTSERV  makefml fmlserv ML                                  
ΥޥɤΥåȨlistserv majordomo  ̤                        
åס          Ʊ                                            

                                        makefml subscribe ML ADDRESS  
                  makefml add ML ADDRESSʤ add subscribe adduser    
                  ⤷ adduser Ǥ useradd ޥɤƱ̣
ɥ쥹( 褤λ塢ե먢Ǥ롣顼ˤʤʤ¤ꡢ
ԥꥹξѹɽ롣ɽϤʤŤ˽롣Ǩ
)ɲä       ǥեȤоݤϨեȤоݤ          
                  actives  members  $primary_recipient_maps     
                  롣              $primary_member_maps ǡ 
                                        Ūˤ recipients  members  
                                        ե롣                    

                                        makefml unsubscribe ML ADDRESS
                                        ʤ bye unsubscribe deluser  
                  makefml bye ML ADDRESSremove resign signoff userdel 
                  ⤷ byeuser Ǥ ޥɤƱ̣Ǥ롣
ɥ쥹( 褤λ塢ե먢顼ˤʤʤ¤ꡢɽ
ԥꥹξѹɽ롣ϤʤŤ˽롣ǥեȨ
)     ǥեȤоݤϨоݤ                  
                  actives  members  $primary_recipient_maps     
                  롣              $primary_member_maps ǡ 
                                        Ūˤ recipients  members  
                                        ե롣                    

                  makefml chaddr ML     makefml chaddr ML OLD_ADDRESS 
                  OLD_ADDRESS           NEW_ADDRESS 顼ˤʤʤ¨
ɥ쥹ѹ먢NEW_ADDRESS λ塢ըꡢɽϤʤŤ˽먢
(ԥꥹȡ ѹɽǥեȤоݤ      
СꥹȤȤ˨롣ǥեȤ$primary_recipient_maps     
ѹ)         оݤ actives      $primary_member_maps ǡ 
                  members ե롣    Ūˤ recipients  members  
                                        ե롣                    

                  makefml addactives ML                               
                  ADDRESS         makefml addactives ML ADDRESS 
ԥꥹȤˤΤߨaddactive add2active  顼ˤʤʤ¤ꡢɽ
ɥ쥹ɲä먢add2actives ǤƱըϤʤŤ˽롣ǥեȨ
                ̣λ塢եΨоݤ                  
                  ѹɽ롣Ǩ$primary_recipient_maps ǡ
                  եȤоݤ  Ūˤ recipients ե롣
                  actives ե롣                                  

                  makefml addmembers ML makefml addmembers ML ADDRESS 
                  ADDRESS         顼ˤʤʤ¤ꡢɽ
СꥹȤˤΨaddmember add2member  ϤʤŤ˽롣ǥեȨ
ߥɥ쥹ɲäadd2members ǤƱоݤ                  
롣              λ塢եѹ$primary_recipient_maps     
                  ɽ롣ǥե$primary_member_maps ǡ 
                  Ȥоݤ      Ūˤ recipients  members  
                  members ե롣    ե롣                    

                  makefml off ML ADDRESS                              
                   skip Ǥ褤makefml off ML ADDRESS 顼 
ꥢ륿򨢽λ塢եѹˤʤʤ¤ꡢɽϤʤ
ߤ            ɽ롣ǥեŤ˽롣                
                  Ȥоݤ                                    
                  actives ե롣                                  

                  makefml on ML ADDRESS makefml digestoff ML ADDRESS  
ꥢ륿򨢽λ塢եѹ⤷ makefml digest ML    
Ƴ          ɽ롣ǥեADDRESS off 顼ˤʤʤ¨
                  Ȥоݤ      ꡢɽϤʤŤ˽먢
                  actives ե롣                                

                  makefml matome ML                                   
                  ADDRESS ޥɤ    makefml digeston ML ADDRESS ⨢
                  digest Ǥ褤λ  makefml digest ML      
ޤȤᤪب塢եѹADDRESS on 顼ˤʤʤ 
                  ɽ롣ǥեȨꡢɽϤʤŤ˽먢
                  оݤ actives                              
                  ե롣                                          

                  makefml addadmin ML   makefml addadmin ML ADDRESS 
                  ADDRESS λ塢ե顼ˤʤʤ¤ꡢɽϨ
⡼ȴԤɨѹɽ먢ʤŤ˽롣ǥեȤΨ
ä롣          ǥեȤоݨоݤ recipients-admin Ȩ
                   members-admin ե members-admin ե롣      
                  롣                                              

                  makefml byeadmin ML   makefml byeadmin ML ADDRESS 
                  ADDRESS λ塢ե顼ˤʤʤ¤ꡢɽϨ
⡼ȴԤ諸ѹɽ먢ʤŤ˽롣ǥեȤΨ
롣          ǥեȤоݨоݤ recipients-admin Ȩ
                   members-admin ե members-admin ե롣      
                  롣                                              

⡼ȴԤΥѨmakefml passwd ML è                              
ɤꤹ먢⡼ɤˤʤꡢɥ쥹makefml passwd ML ϥ顼ˤʨ
(1)               ȥѥɤϤ¥롣(̤?)                 
                  롣                                            

⡼ȴԤΥѨmakefml passwd ML     makefml passwd ML ADDRESS 
ɤꤹ먢ADDRESS å⡼ɤˤʨ PASSWORD ϤʤϨ
(2)               ꡢѥɤϤ򨢡å⡼ɤˤʤꡢѥɨ
                  ¥롣            Ϥ¥롣            

                  makefml passwd ML     makefml passwd ML ADDRESS     
⡼ȴԤΥѨADDRESS PASSWORD  PASSWORD 顼ˤʤʤ¤ 
ɤꤹ먢ͻҤɽ롣ǨɽϤʤŤ˽롣
(3)               եȤоݤ  ǥեȤоݤ etc/   
                  etc/passwd ե롣 passwd-admin ե롣       

˥塼ꨢmakefml config ML     Ƥ뤬ޤȾü
ѹ                                                            

                  makefml edit ML Ȥmakefml edit ML ǥ    
                  ǥϤ¥config.cf ԽǤ褦ˤ
եԽΥǥ config.ph롣ȤǥҤͤϤ
              ԽǤ褦ˤ먢ʤĶѿ EDITOR ꤵ
                  ǥΥǥեȨƤСͤȤ롣
                   vi               ǥΥǥեȤ vi   

                  makefml update-config                               
fml4 ͭ ML  update                                  
Ѵ( cf  config-update       ե config.cf  
 config.ph  update-config.ph  ʤᳺס  
)         ɤǤƱͨ                              
                  Ҥɽ롣                                    

˥塼Ȥcfmakefml                                             
Υƥץ졼ȥեconfig-template ML    ̤                        
Խ                                                        

                  makefml edit-template                               
newml κݤ˻Ȥ쨢FILE ʤ FILE ʤ                               
Ƽƥץ졼Ȩ¹Ԥȡǽʨ̤                        
եԽ먢եɽ쨢                              
                  롣                                                

̤ͣΥۡǥ쨢                      ס¸ߤʤ⤷֤ƨ
ȥˤإרmakefml               ʤ顢ϴԤĤè
ʤɤΥեƨcreate-doc-template ML֤ΤΤϤ          
                                                              

 SRC ե                                                     
 DST ءե makefml conv ML SRC   ̤                        
ѿѴDST                                                 
Ĥ롣                                                      

ߤ롣ǥեmakefml log ML [ץ                              
ȤǤϺǸ100 ]  makefml  makefml log ML ץ̤ 
Ԥɽ롣  tail ML ǤƱư˨                          
                  ʤ롣                                              

admin.cgi ΥåȨ                      Ⱦʬ̤Ⱦʬ (ר
å(ץ makefml admin.cgi ML  Ȥ makefml newml ˼ưŪ 
apacheꨢŪ˹Ԥʤ롣  ˺)                       
ٱ)                                                                 

ml-admin.cgi Υ makefml ml-admin.cgi  Ⱦʬ̤Ⱦʬ (ר
åȥå( ML makefml mladmin.cgiȤ makefml newml ˼ưŪ 
ץapacheΨML ǤƱŪ ˺)                       
ٱ)         Ԥʤ롣                                        

admin.cgi       makefml                                             
.htpasswd ꤹhtml_cgiadmin_passwd  ̤                        
                ML                                                  

                  makefml html_config ML                              
                  Υޥɤ                                      
html_config       html_config_set ǤƱ̤                        
                   CGI                                
                  ݤ˻ȤƤ먢                              
                  ѥޥɡ                                    

⡼ȴԤΥѨ                                                    
ɤꤷ                                                    
 ml-admin.cgi                                                     
 .htpasswd (ꨢmakefml html_passwd ML̤                        
⡼ȴΥѥ諸                                                    
ɤƱΤ)                                                     
ꤹ                                                              

ml-admin.cgi                                                        
.htpasswd ꤹmakefml htpasswd ML   ̤                        
                                                                    

pgp ޥ      makefml pgp ML        ̤                        
WRAPPER                                                               

pgp2 ޥ     makefml pgp2 ML       ̤                        
WRAPPER                                                               

pgpe ޥ     makefml pgpe ML       ̤                        
WRAPPER                                                               

pgpk ޥ     makefml pgpk ML       ̤                        
WRAPPER                                                               

pgps ޥ     makefml pgps ML       ̤                        
WRAPPER                                                               

pgpv ޥ     makefml pgpv ML       ̤                        
WRAPPER                                                               

gpg ޥ      makefml gpg ML        ̤                        
WRAPPER                                                               

admin-auth (PGP,                                                      
GPG KEY RING  makefml admin-auth ML ̤                        
)                                                                   

admin-encrypt     makefml admin-encrypt                               
(PGP, GPG KEY RINGML                    ̤                        
)                                                               

dist-auth (PGP,                                                       
GPG KEY RING  makefml dist-auth ML  ̤                        
)                                                                   

dist-encrypt (PGP,makefml dist-encrypt                                
GPG KEY RING  ML                    ̤                        
)                                                                   

popfml (POP MTA                                                     
ML򥨥ߥ졼makefml popfml        ⤽ popfml Τ̤  
󤹤 fml) Υ                                                    
åȥåפ򤹤                                                      

POP Υѥɤmakefml pop_passwd    ⤽ popfml Τ̤  
ꤹ                                                              

̤ͣưåmakefml lock ML       бΤʤ⤽  
                                    giant lock ʤ           

ХݡȤԽmakefml                                             
ƥץ졼Ȥ먢bug-report-template ML̤                        
                  send-pr Ǥ褤                                    

ޥɤμ¹    makefml command ML    ̤                        

⡼ɤ  makefml delivery_mode ̤                        
                  ML                                                  

makefml ѿmakefml setq ML       бΤʤ            
ѹ                                                              

fml ưƤĨmakefml showconfig ML                               
ˤĤƥޥshowconf Ǥ褤     ̤ / ͽʤ         
ɽ                                                              

show ޥɡ                                                     
 OS makefml show ޥ ̤ / ͽʤ         
ɽˡ                                                        

ե    makefml resend ML     ̤ / ͽʤ         

upgrade ޥ:                                                     
fml 2.0  3.0  makefml upgrade ML                              
ؤΥС                                                        




fml4  fml8 ΰ㤤: GUI (CGI)

fml4 ξ硢󥹥ȡˡ餿 GUI Ȥ .cgi ץȤ
apache Υåȥåפ򤹤ɬפޤ

fml8 Ǥϡnewml ¹ԻˡGUI ΥץȤ⼫ưŪޤϲ
򤹤Ǥºݤ WWW 󥿡եȤݤˤ apache ѹ
ɬפǡ fml4 ȰǤΤʤ֤˥󥿡ͥåȤ龡 GUI Ǥ
Ǥ褦ˤʤäƤ顢ӤäꤹǤ礦顢ɤǤ͡

󥿡եϡʤꤢޤ fml4 ϡŪʥ٥٥ʺ
Ǥ fml8 ϥơ֥١ΤΤˤʤäƤޤ

βȤƤϡGUI θɤ()٤褦ˤʤɤͤʤƤϤ
ʤǤ礦¹ԥե̾Ȥ˰ۤʤʣΥ󤬤ΤǤ
ưŪؤ뤳Ȥޤ(ƤʤȤϤʤΤǤΥ
¸ƤʤΤǡ󥢥ȸä㤤ޤ;-)䡢ʬ
Ū˽뤫ʡˤ衢ȾüǤ



ե̾Υ롼

ե̾̿̾롼ˤĤƤ  Chapter 16 򻲾ȤƲ

fml4  fml8 ˰ܹԤݤˤϡưѴġ뤬ĥäơե̾
ѹ򤹤ϤˤʤäƤޤȤѴ뤳ȤϡޤʤȤ⤤ޤ
ʲ fml4  fml8 Υե̾롼κʬҤ٤ޤ

̤ͣΥǥ쥯ȥ򸫤ΩĤǤ礦

ԤȥСꥹȤ̡˴ȤˤѤޤ󤬡ե̾
ۤʤޤ

ե̾ϴŪˡ֥١Ȥʤե̾-פǤ䤬ǥեȤΡñ
ʤ桼פǤоάĤǤ

actives  recipients Ȥʤꡢեΰ̣Ƥˤʤޤmembers
ϤΤޤޤǤ

members-admin ϡΤޤޤǤŪ recipients-admin ե⤢ޤ
ޤϻȤƤϤޤ

etc/passwd  etc/passwd-admin ˤʤꡢեޥåȤ㴳Ѥޤ



Chapter 9. fml8 Υåץ졼/󥰥졼


                                  Warning                                   

ܾϤǤ fml8 򥢥åץ졼/󥰥졼ɤˡˤĤƲ⤷ޤ   
                                                                            
fml4  fml8 ؤΥåץ졼ɤϡ  Chapter 7 ޤ             



fml8 Υåץ졼


                                  Warning                                   

󥹥ȡ뤹ǤϲѲϵޤ main.cf Խִ֤˥ 
åץ졼ɤͭˤʤޤ                                              


ޤϡñˡ⤦ fml8 򥤥󥹥ȡ뤷Ʋ

ơ󥹥ȡ塢/usr/local/etc/fml/main.cf  fml_version Ԥ򺣥
ȡ뤷СѹƲե򥻡ִ֤֤鿷 fml8
ڤؤޤ (: ǥԽϸŤ)

դ˸ fml_version ԤԽޤǥåץ졼ɤͭˤϤʤޤ



fml8 Υ󥰥졼

Υ󥹥ȡ뤷ľʤɤɬפޤ /usr/local/etc/fml/main.cf 
ԽǤ/usr/local/etc/fml/main.cf  fml_verison 򥢥åץ졼Τ
ΤᤷƲ

ե򥻡ִ֤֤˸Ť(Ĥƥ󥹥ȡ뤷ǤդΥС) fml 
ڤؤޤ(: ǥԽϸŤ)



Chapter 10. CGI 


                                  Warning                                   

CGI ¤ˤĤƤ  the Section called ᥽å in Chapter 42 򻲾Ȥ
Ʋ                                                                  
                                                                            
ǥեȤ fml8 Ǥϡ apache  suexec ȤȤȤƤޤĤި
                                                                          
                                                                            
                                                                            
http://mail.example.org/~fml/cgi-bin/fml/DOMAIN/admin/config.cgi            
http://mail.example.org/~fml/cgi-bin/fml/DOMAIN/ml-admin/ML/config.cgi      
                                                                            
Ȥä URL ȤǤ                                               


̤ͣȤδ CGIɥᥤΤ CGI ̥桼 subscribe/
unsubscribe ꥯȤƤ餦 CGI ( 2008/09/09 ʹ) ΣबѰդ
Ƥޤ

 CGI 󥿡եǤϡ桼ɲáСꥹȤα
ʤɤǽǤCGI ѹ󥿡ե( ե config.cf 
Խǽ)ȾüǤ

CGI ǽפʥޥɤϡ٤ CUI Ʊ̤ޤȤС
̤κ⥳ޥɥ饤ƱǤΤǡ CGI Ѥ̤ʺȤפǤ




makefml newml ϡĤͤ CGI ץȤ

makefml newml ML (fml ML newml)¹Ԥȡ ~fml/public_html/ ʲ CGI 
ץȤޤ


                                  Warning                                   

Ĥͤ CGI ץȤϺޤ apache ΥǥեǤ ~fml
/ ʲϸޤ                                                        
                                                                            
(¤줿)̣ˤơfml8 ǥեȤǤ CGI ̵פȸäƤި
                                                                        


 CGI ҤΤ褦ˣढޤѤˤϡ֥ɥᥤΤ
 CGIפȡ֤줾Σ̤ͣͣѤ CGIפꡢ줾졢Υ
˺ޤ

ΥɥᥤΤδ (Υɥᥤ󤹤٤ƤΣ̤ͣǽ)
~fml/public_html/cgi-bin/fml/ɥᥤ/admin/config.cgi

̤ͣȤδ (Σ̤ͣΤߤǽ)
~fml/public_html/cgi-bin/fml/ɥᥤ/ml-admin/ͣ̾/config.cgi

̥桼 CGI (̤ͣ˥塼)ϡ WWW Ф
ǥե륿񤭤䤹褦ˡ虜Ȱۤʤѥ˺Ƥޤ

~fml/public_html/cgi-bin/anonymous/ɥᥤ/ͣ̾/submit.cgi

ɬפ˱WWW Фǡ ~fml/public_html/cgi-bin/fml/ פȡ ~fml/
public_html/cgi-bin/anonymous/ פǰۤʤ륢ԤʤäƲ

ȤСelena@fml.org ̤ͣȼΣĤޤ

 fml.org ̤ͣ CGI ץ

http://lists.fml.org/~fml/cgi-bin/fml/ɥᥤ/admin/config.cgi

http://lists.fml.org/~fml/cgi-bin/fml/fml.org/admin/config.cgi

 elena@fml.org ML  CGI ץ

http://lists.fml.org/~fml/cgi-bin/fml/ɥᥤ/ml-admin/ͣ̾/config.cgi

http://lists.fml.org/~fml/cgi-bin/fml/fml.org/ml-admin/elena/config.cgi

 elena@fml.org ̤ͣؤѿ CGI ץ

http://lists.fml.org/~fml/cgi-bin/anonymous/ɥᥤ/submit.cgi

http://lists.fml.org/~fml/cgi-bin/anonymous/fml.org/elena/submit.cgi

[cgi]



ǧ: ɤФ褤ΤǤ

WWW Фǧڥƥˤ֤ˤäǤ

ϤȤƤ⡢⤦ fml8 Ǥ WWW ٱġ뤬٤Ǥ
礦͡



ǧ: .htaccess Խ

ǥեȤǤϡȤꤢ٤Ƥޤ(ǧڥ顼ˤʤ)ΤǡŬڤѹ


ǥեȤǤϡCGI Υݤ褦˥ɥᥤñ̤ .htaccess 
ޤ

http://lists.fml.org/~fml/cgi-bin/fml/ɥᥤ/.htaccess


http://lists.fml.org/~fml/cgi-bin/fml/fml.org/.htaccess

ǥեȤ .htaccess ϼΤ褦̵̣:)ʤΤˤʤäƤơǤޤ
(顼ˤʤޤ) [9]

AuthName ByPassword
AuthType Basic
require valid-user

 .htaccess ŬڤʤΤ˽񤭴 apache  suexec ͭˤƲ




AuthName ByPassword
AuthType Basic
AuthUserConfig "/usr/local/etc/fml/ɥᥤ/htpasswd"
require valid-user


                                  Warning                                   

(Ǥ) .htaccess եäȡïǤ⥢Ǥ褦 
ʤޤǥХåǤ΢ϻȤʤ褦ˤޤ稢
;-) ޤ֥ǥХå顢äȤġפȤˤäƨ
Τޤ޺ꤷ˺줿ꤹΤʤΤǡή˴ʤ褦ˤƤ
 .htaccess ꤷޤ礦                               



 CGI : ɥᥤޥ CGI β

 CGI ϡɥᥤΤǤ븢¤ͿƤޤ֣̤ͣ븢
¤ͿƤɤɡǤ Unix Υޥɥ饤ȤΤäȤĤ餤פ
ͤꤷΤǤäơ̤ͣκʤɤǤ櫓Ǥ makefml 
٤ƤεǽȤ櫓Ǥ⤢ޤ

CGI β̤򸫤Ȥ狼̤ꡢ CGI ǲǽʹܤ makefml ʬȤʤäƤ
ޤѲǽʥޥɤϺǽβ̤˥إפȤɽƤΤǤ

: CGI ȥåײ

                     @home.fml.org CGI for configuration

fml admin menu             fml CGI interface for @home.fml.org ML's
mailing list:
[elena]              ΥʥӥС顢ͣ(mailing list)ȥ
command:             (command)򤷡 submit ܥ򲡤Ʋ
[subscribe  ]        
[submit][reset]
                     subscribe   ɥ쥹ɲ
                     unsubscribe ɥ쥹κ
                     addadmin    ⡼ȴԥɥ쥹ɲ
                     byeadmin    ⡼ȴԥɥ쥹κ
options Language:    list        ɥ쥹ꥹȤ򸫤
[Japanese] [change]  log         򸫤
                     newml       ̤ͣκ
                     rmml        ̤ͣκ

ʤ̤κ⤷ϱ˥إץåɽΤκݤˤϡ
򻲹ͤˤƲ󥳥ޥɤȤ˥åϰۤʤޤ:)

[cgi]



 CGI λȤ: : ̤ͣκ

β̤Υޥɤ newml 򤷡 submit ܥ򲡤Ʋ ML ̾
ɬפϤޤ:)

ˡͣ̾Ϥ򤦤ʤ̤Τǡͣ̾Ϥ
submit ܥ򲡤Ʋ

[cgi]



 CGI λȤ: : СϿ

β̤Υޥɤ ML ̾ subscribe 򤷡 submit ܥ򲡤Ʋ

ˡɥ쥹Ϥ򤦤ʤ̤ΤǡϿɥ쥹Ϥ
 submit ܥ򲡤Ʋ

[cgi]



 CGI 

config.cgi Ǥ TABLE  SELECT ܤǤ⤦β̤ˤʤ顢
menu.cgi ΤۤȤäƤߤƲ

ΥɥᥤΣͣδ
~fml/public_html/fml/ɥᥤ/admin/menu.cgi

̤ͣȤδ
~fml/public_html/fml/ɥᥤ/ml-admin/menu.cgi

TODO: cookie ФƤ褦ˤ褦ȹͤƤޤ



̥桼 CGI

fml8 Ȥä̤ͣؤ/(subscribe/unsubscribe)ϡȤȥ᡼١
ƥǤ

Υޥɥ᡼ˤ/(subscribe/unsubscribe) κǽΥե
CGI Ǥ褦ˤޤ

CGI /񤬽ȥƥ̤ǤʤΤǡ

(1) ǽ CGI 鿽
(2) ᡼ confirmation 롢
(3) ᡼ confirmation ֤äƤ OK

ȤƤޤ (󡢤ʾ HTTP Ĥä٤ʤΤˤͽ⤢ޤ
)

ΤȤϤʤǽΤȤsubscribe Ȥ᡼ФƲפ֤
 CGI ǥ᡼륢ɥ쥹ϤƲפѤäǤ͡

ʤ CGI ˤϡSPAM 褱ΡɤޤʤɤȤơ᡼륢ɥ쥹ˡʸ
ΣĤ򥻥åȤϤƤ餦褦ˤƤޤ֤椬ʸǧ
ΤϵǤϤʤʹ֤˰㤤ʤ (image verification)Ǥ

ޡ٤Ǥɤ͡ɤΤȥ᡼ˤ confirmation ⤢Τǡ
Τޤʤ٤ϵˤʤǤ

礻 CGI ʤɡ᡼ˤ confirmation ƥ wrapper ˤʤȤ
դǤ CGI ñΤǤưޤ󡣤Τᡢ̥桼Ѥ CGI ϡ
٤ƤΤ image verification ǿФƤ餦褦ˤơѥǧ
ʤɤȤäݤʥƥѤƤޤ



: ̥桼ѥѥǧڤϡɤʤΤ

桼˥ѥɤ줵̥ͣƥ⤢ޤϥѥɤФ
ᤷޤ󡣤ʻͤϴʤǤ

̥桼̴ͣϢ򤹤뤳ȤϿǯ˰󤷤ޤ󡣤
顢ѥɤꤷƤ⼡ޤǳФƤ뤳ȤʤΤǤ

ޤäƥǤϡѥɤ˺줿˺ꤹȡ᡼
ʿʸѥɤƤꤹǤʬˤѥɤȤɡ
ƤĿ;򸵤ˤϢۤäꤷޤѥɤʿʸǤȤꤵ
ΤñΤǴȤФǤʤʳΥƥؤδޤ

Ĥ褦ʥƥ [10] Ǥʤꡢѥǧˡϥƥۡ
Ǥ



Chapter 11. apache 


                                  Warning                                   

fml8 CGI ¤ˤĤƤ  the Section called ᥽å in Chapter 42  
ȤƲ                                                            



apache  suexec Ȥ

suexec ǽѲǽ apache ɬפޤ configure ¹Ԥݤ


(apache 1.x ξ)
# ./configure --enable-suexec --suexec-caller=www (...¾Υץ...)

ʤɤȤޤ

    Important: Ǥ suexec ƤӽФȤǽʥ桼 www Ǥ CGI
    桼ˤϡCGI ѤΥ桼ѰդƲ

    suexec ƤӽФȤǽʥ桼 www Ǥ CGI 桼ˤϡCGI 
    ѤΥ桼ѰդƲ

󥹥ȡ塢~桼/cgi-bin/ 褦 httpd.conf ѹɬפ


:

<Directory /home/*/*/public_html>
    AllowOverride FileInfo AuthConfig Limit
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec ExecCGI
    <Limit GET POST OPTIONS PROPFIND>
        Order allow,deny
        Allow from Υۥ
    </Limit>
</Directory>

<IfModule mod_mime.c>
        ... ά ...

   AddHandler cgi-script .cgi

        ... ά ...
</IfModule>



Chapter 12. ƥ

ƥȤ


                                  Warning                                   

newml κݤΥ桼ʣå뤿ᡢƥȤ Postfix        
aliases (桼 root postmaster ʤ)򤭤ꤷƲ 
ʤ root ̤ͣȤƤޤޤ;-)                                 
                                                                            
qmail ᡼륵Ф˻ȤäƤͤäˤ뤳ȤϤʤȤ⤤ޤ        


ʲǤϡfml8  MTA ưƤۥ(ahodori.fml.org)᡼륵ФȸƤӤ




᡼륵мΤΥƥȤԤ

̤ͣưƥȤˡ᡼륵(Ǥ ahodori.fml.org Ȥ) Τ
ưƤ뤳ȤǧƲ

ޤ᡼륵Ф˸ĿͰΥ᡼륢ɥ쥹Ѱդޤ礦Ǥϡ桼
ɡפ rudo@fml.org ˤȤޤ [11]

ΥۥȾ rudo ˥᡼뤬ϤƲĤޤ ahodori ξ
rudo@fml.org إ᡼ФƤ

% echo test |Mail rudo@fml.org

⤷Ȥʤʤ顢⤽ Postfix ְ꤬äƤޤ

ˡ᡼륵аʳΥۥȤ rudo@fml.org إ᡼뤬Ϥ (ã)
ǧƲĤޤꡢ᡼륵аʳΥۥȤ rudo@fml.org ˥᡼
ФȼǤƤ뤫ǧƤ⤷Ȥʤʤ顢⤽
 Postfix ְ꤬äƤޤ

ʤȤ⡢

(1) ˥᡼뤬Ǥ()
(2) ⡼Ȥ᡼뤬Ǥ()

Υѥưʤ Postfix δ꤬ȤǤ礦 Postfix
δ꤬ǧǤ̤ͣΥƥȤ˿ʤǲ



̤ͣؤƥ

elena ML (Ǥ elena@fml.org) rudo@fml.org ϿƲ

% su fml
% makefml newml elena
% makefml add elena rudo@fml.org

Ʊͤˡۥȳ顢ƥۥȤξ夫顢줾 elena@fml.org إƥ
ȥ᡼ФƤߤƲλƥȥ᡼ From:  rudo@fml.org ˤʤ
Ƥʤ SPAM ޤСʳΥ᡼ϼդʤǤ
դƲ


                                  Warning                                   

SPAM Ǥ2008/08/03 ʹߤ fml8 Ǥϡ֥ isolated ɽ᡼
ϳΥפΤǥեȤǤ fml8 ǤϡԤˡ֤ʤϨ
̤ͣΥСǤϤʤΤƤϵݤ줿פȥ᡼뤬֤Ƥޤ    
                                                                            
SPAM ¿ΤǡֳΥפǥեͤѹƤޤ                   



ǧ

⤷ޤʤϰʲΤ褦ʹܤǧƲ

᡼륵ФΥǧ
fml Υ˥顼åʤ
fml ϥ᡼륵Ф٤᡼()Ϥ
᡼륵Ф



fml8 ΤΥƥ

fml4 ˤ makefml test Ȥޥɤޤ fml8 ˤϡΤȤ
ΤϤޤ

ʤ



ƥȤפäMLκƽ

ƥȤηפäˤϡ̤ͣäƺľɤǤ礦

% su fml
% makefml rmml test
% makefml newml test

ƥȤ̤ͣΥۡǥ쥯ȥ /var/spool/ml/@test.դ˻ĤäƤޤ
ƥȤǻȤäǤΤǡäƤޤäƤޤޤ

% su fml
% rm -fr /var/spool/ml/@test.

III. fml Υޥ

ȥԥåȤˡޤȤޤ

Table of Contents
13. ̤ͣΥСǤ뤳
14. ̥ͣоǥޥɤȤ(̴ͣԤ)Ǥ뤳
15. եѹ
16. [fml8 Ǥ] ե̾ˤĤ
17. ޥλ
18. إåν񤭴
19. ʸν񤭴
20. ޥɤγĥ
21. ե륿
22. åγĥ
23. WWW ǣ̤ͣε
24. ̤ͣäζ(å) (Thread Tracking System ?)



Chapter 13. ̤ͣΥСǤ뤳

ɤ󤻤

elena@fml.org ̤ͣξ硢ʸ guide Ƚ񤤤᡼ elena-ctl@fml.org 
äƲɤޤ

guide Ȥ̾Υե뤬̤ͣΥۡǥ쥯ȥˤСΥե
֤ޤʤʥǥեȡˤϡƥץ졼Ȥ guide ե뤬֤
ޤ

: ƥץ졼ȤΤޤޤǤϡޤ



̤ͣ˻ä

elena@fml.org ̤ͣ˻ä硢ʸ

subscribe ̾



subscribe Teresa Testarossa

Ƚ񤤤᡼ elena-ctl@fml.org äƲ

᡼Ф confirmation ޤ confirmation ᡼
Ͽޤ

ʤ fml4 Ǥ subscribe ³̾餷Τ񤫤ʤФʤȤˤʤ
Ƥޤfml8 ǤפǤ񤤤ƤäȤƤ⡢ fml8 ǤϤʬ
򲿤ˤȤäƤޤ



 (ץˤĤ)

elena@fml.org ͣ(fml.org  elena ͣ)ؤƤϡ̤˥᡼
elena@fml.org 뤳ȤǤ

᡼ MTA ǽŪ MTA  /usr/local/libexec/fml/distribute Ȥ
ޥɤ¹Ԥޤ distribute ϥ᡼ɸϤȤꡢ̤ͣȤɬ
ʽ(¸إåν񤭴)򤷤塢 MTA Ѥͤޤ



distribute ץब̤ͣȤƽ٤

subject ΥĤ롢⤷ϵֹʤɤ򹹿ʤ



Subject: [elena:00100] ʤŨ

(ǥեȤǤϤĤޤ)

¸(ƥȥե)

HTML 줿롣 ~fml/public_html/ ʲ˺ޤ

åץƥΥǡ١򹹿롣



Ƶο񤤤椹ѿ


                                  Warning                                   

󡢤ޤ񤤤Ƥʤ                                                    



: ֡ȤƤͻ

fml ֡ȥξϤǤ˾夲Ƥ褦ˡΤ褦˥֡Ȥޤ

/usr/local/libexec/fml/distribute /usr/local/libexec/fml/loader  symlink(2)
ǷФ졢ƱΥեǤ /usr/local/libexec/fml/distribute ư
Ĥޤ loader ưȡ/usr/local/libexec/fml/loader  /usr/local/etc
/fml/main.cf ɤߤߤޤ fml_version ѿȤ٤饤֥Υ
ޤȤ fml_vesrion  current-20010501 ȤʤäƤ /
usr/local/lib/fml/current-20010501/ ʲˤ饤֥ȤȤäǤ


@INC (Perl Υ饤֥ꥵѥ)ꤷ塢 loader (/usr/local/libexec/fml
/distribute μ)  FML::Process::Switch ɤ$0 (ץ̾)Ĵ٤
̾鼫ʬλŻϡפΤޤ

loader  /usr/local/etc/fml/defaults/С/modules եĴ١
٤⥸塼뤬 FML::Process::Distribute ΤޤǸˡΥ饹
ɤ˰ܤޤ



̤ͣΥإ: ̤ͣλȤΤꤿ

elena@fml.org ̤ͣξ硢ʸ

help

Ƚ񤤤᡼ elena-ctl@fml.org äƲإפ֤ޤ

help Ȥ̾Υե뤬̤ͣΥۡǥ쥯ȥˤСΥե
֤ޤʤʥǥեȡˤϡƥץ졼Ȥ help ե뤬֤




εɤ

elena@fml.org ̤ͣξ硢ʸ

get ֹ

Ƚ񤤤᡼ elena-ctl@fml.org äƲ׵ᤷ()ϰĤ
mime/multipart ֤ޤ

ֹʬǤ MH ν򤷤ƹޤ



get 100
get 1-100
get first:3
get last:3
get 1-100,first:3,last:3



᡼륢ɥ쥹ѹ

elena@fml.org ̤ͣξ硢ʸ

chaddr 쥢ɥ쥹 ɥ쥹

Ƚ񤤤᡼ elena-ctl@fml.org äƲ

쥢ɥ쥹ɥ쥹ɤΥɥ쥹äƤ⤫ޤޤ

ξΥɥ쥹 confirmation ޤ confirmation Ƥ
ܿͤǤȳǧȤСºݤ˥ɥ쥹ѹޤ



̤ͣ򼭤

elena@fml.org ̤ͣ򼭤᤿硢ʸ

unsubscribe ̾

Ƚ񤤤᡼ elena-ctl@fml.org äƲ

Υ᡼Ф confirmation ޤ confirmation Ⱥ
ޤ



ޥɥ᡼ (fml ᡼)

fml ˥᡼ʸ(ޥ)ळȤǡfml ν򤷤Ƥ餦
ȤǤޤȤССϿε󤻤Ȥä
Ǥ

    Important: fml δŪʻȤ CUI (makefml ⤷ fml ޥ) 
    äǤ

    makefml Ȥ׾ȤϡǤˣ̥ͣФΥۥȤΥ뤬Ƥ
    Ȥ̣ޤĤޤ SSH (Secure Shell) ʤǤΥۥȤ븢¤
    ǡΥФδԤǤǧںѤߤǤäơǤˡ֣̤ͣ
    ԡפȤøŪȤޤ

    ޥɥ᡼ʤɤḁְ̇̄桼󶡤뵡ǽפˤϡ
    򤫤٤Ǥºݡ桼󶡤Ƥ륳ޥ makefml ǲǽ
    ΤǤĤޤꡢޥɥ᡼Ȥ makefml Υޥɤΰ
    ȤʤŬ confirmation դäޥηϤȹͤޤ



ή

elena@fml.org ̤ͣˤȤޤ礦

elena@fml.org ̤ͣξ硢ޥɥ᡼ elena-ctl@fml.org Ƥ餦
Ȥˤʤޤ᡼ MTA ǽŪ MTA  /usr/local/libexec/fml/
command Ȥץ¹Ԥޤ command ϥ᡼ɸϤȤꡢ
̤ͣȤɬפʽ򤷤塢MTA Ѥͤޤ


                                  Warning                                   

fml4 Ȱ㤤fml8 Ǥϥޥɤη̤̤Υ᡼ ( MIME/Multipart )ˤޤ 
Ƥޤ                                                        
                                                                            
ʣΥޥɤη̤٤Ƥ̤Υ᡼˹ΤƤޤη̤⡢ꨢ
֤٤ʤɤ̤Ǥ                                                



⥸塼ˤĤ

fml8 Ǥ

᡼ˤ륳ޥɽ
makefml ˤ륳ޥɽ
CGI ǤΥޥɽ

餹٤Ƥεǽ FML::Command:: 饹Υ⥸塼Ȥ褦߷פƤ
ޤ



쥷's

1. ϿƤ᡼륢ɥ쥹ѹ
2. ̤ͣƤǤ᡼륢ɥ쥹䤷
3. Ĺ٤ߤʤΤǰߤ᤿
4. ߤƤ֤εɤߤ

1. ϿƤ᡼륢ɥ쥹ѹ

ץХѹȤҤѹˤȤʤ᡼륢ɥ쥹Ѥä
ɤˤϡ̤ͣϿƤ륢ɥ쥹ѹɬפޤ

äϡ (1) ȴ(unsubscribe)⤦ľ(⤦
subscribe)  (2) chaddr ޥɤȤޤ chaddr ޥɤȤϼ
褦ʥ᡼ elena-ctl@fml.org 뤳Ȥˤʤޤ

[᡼]

From: ᡼륢ɥ쥹
To: elena-ctl@fml.org
Subject: ʤǤ褤

chaddr Ťɥ쥹 ɥ쥹

ǡָŤɥ쥹פϺߣ̤ͣϿƤ륢ɥ쥹ΤȤǤ

᡼꡼ѹˤ餺 chaddr 褦ˡָŤɥ쥹
Ǥֿɥ쥹פǤ⡢Υ᡼뤳ȤǽǤĤޤ
From: ᡼륢ɥ쥹פϡFrom: Ť᡼륢ɥ쥹פǤFrom: ᡼
ɥ쥹פǤ⤫ޤޤ

chaddr ꥯȤդ confirmation ָŤ᡼륢ɥ쥹פȡֿ
᡼륢ɥ쥹פξޤɤΥɥ쥹ǤɤΤǡ
confirmation ֻ򤷤ƲֻϤ衢ϿƤ᡼륢ɥ
ѹȤԤʤޤ

2. ̤ͣƤǤ᡼륢ɥ쥹䤷

Ҥ⡢뼫𤫤̤ͣƤϲҤˤȤä
Ǥ

ϥɥ쥹Сꥹ(From:ǧڤ˻Ȥꥹ)ˤɲä뤳ȤǼ¸
ޤ桼ʬǹԤʤϡaddmeber ޥɤȤäƲ


[᡼]

From: ᡼륢ɥ쥹
To: elena-ctl@fml.org
Subject: ʤǤ褤

addmember ɲä᡼륢ɥ쥹

3. Ĺ٤ߤʤΤǰߤ᤿

ߤˤ off ޥɤ򡢺Ƴˤ on ޥɤäƲ
From: Υ᡼륢ɥ쥹б륢ɥ쥹ؤߤ⤷ϺƳޤ

[᡼]

From: ᡼륢ɥ쥹
To: elena-ctl@fml.org
Subject: ʤǤ褤

off

 

4. ߤƤ֤εɤߤ

Ƶ٤ߤ뤿 off ޥɤäȤλǼȤäƤǸε
123 äȤޤ礦Ƶ٤ˤϡޤ on ޥɤꡢƤ
褦ˤޤƵ٤ߤδ֤ε get Ǽ󤻤Ƥ

[᡼]

From: ᡼륢ɥ쥹
To: elena-ctl@fml.org
Subject: ʤǤ褤

get 124-last

 124 ǿ(last)ޤǤε󤻤Ȥ̣Ǥʤʣ
 MIME/Multipart ǤޤȤĤΥ᡼Ƥޤ



Chapter 14. ̥ͣоǥޥɤȤ(̴ͣԤ)Ǥ뤳

֣̥ͣоǥޥɤȤפȤΤϡ֣̥ͣСפ SSH (Secure Shell)
ǥ󤷡 makefml (/usr/local/bin/makefml) ޥɤ⤷ fml (/usr/
local/bin/fml) ޥɤȤ fml8 ѹ򤹤Ȥ̣Ƥޤ


makefml δŪʻȤ fml4  makefml ƱͤǤǤ fml4 Ʊ
ˤʤ褦ˡĤޤߴݤĤ褦ϤƤޤ

ˤĤƤξܺ٤ϡthe Section called fml4  fml8 ΰ㤤: ޥɥ饤
Ǥ (makefml) in Chapter 8٤򻲾ȤƤ



ۥȾǤǤ뤳ȡθ¤ˤĤ

makefml Ȥϡconfirmation ספǤȤССϿϡ
ޥɤ¹ԤȡΤޤ޽Ԥʤޤ줬Τ makefml 
ԤǤǡĤޤꤽΥФ˥ǤǡøŪʥ桼Ǥ뤳
ȤǧںѤߤǤ

ФۤƤפȤǤ ( fml8 Ȥľܤδط
ʤΤޤ)

̥ͣФΥۥȤ뤳ȤǤ(: ssh ƥ뤬)ͤϡ̤ͣˤ
äƺǶθ¤Ŀ̣ͤޤեľԽ뤳ȤǡɤʤȤ
Ǥ櫓Ǥ顢̵ŨǤøŪǤ櫓Ǥ

ʤ顢ʹ֤ޤȤΤǡĤեΥեޥåȤְ㤨
ޤ

ΤեľԽʤɤϤˡ̾ϡmakefml ( /usr/local/bin/
makefml )ޥɤȤȤ fml8 ѹƤפȤѥݥꥷ
侩ƤޤեԽƤ⤫ޤޤ󤬡ξ硢
¤ʤɤ褯򤷤ƤˤƤ

ʤfml ޥɤϰν֤ΰۤʤ makefml ƱʤǤ

makefml ޥ ͣ̾ ץ
fml     ͣ̾ ޥ ץ

ޥɤ/ưƱǤΤǡ󥿥åιǡɤ餫ǻ
äƤ



ޥɤѰդ

fml8 ǤϡǽȤ˸̤˥ޥɤѰդ褦ˤƤޤɤ⡢Υ
ꥷǤϡ䤿¿ʤΤ褦Ǥ֤ǤʬΥ makefml 
礹٤פǤ礦ǡʲΤ褦ʴ˴ŤѰդ뤳Ȥˤޤ(2003
/03 )makefml 礷Ƥ admin ޥɤ CGI ǤȤ褦ˤʤꤦ
Τǡ⤯ͭפǤ



Σ̤ͣܤޥ (read/write)

Σ̤ͣФ餫Υǡ򸫤Ǥʤѹ/񤭹򤹤ǽ
ʤ顢makefml (or fml) ΥޥɤȤƼޤ

makefml ޥ ͣ̾ ץ
fml     ͣ̾ ޥ ץ



Σ̤ͣΥǡ򸫤륳ޥ (read only)

Σ̤ͣФǡ(䲿Υޥ)򸫤Ǥ⡢ makefml (or fml)
ΥޥɤȤƼޤ礦

makefml ޥ ͣ̾ ץ
fml     ͣ̾ ޥ ץ



ǡ򸫤Υޥ (read only)

Σ̤ͣȴؤΤʤޥɤޤȤС⥸塼Υɥ
Ȥ򸫤ȤOS ΥȤ䥨ꥢɽΤΤǤ
fml ƬʸˤĤޥɤѰդޤ

fmladdr  [-n]
fmlalias [-n]
fmldoc   ⥸塼̾
fmlconf  [-n] $ml

( fmlconf ̣㤦)



̤ͣȤñʤ륳ޥɤ wrapper

PGP / GPG ޥɤޥ(: fmlpgp)ˤޤǤ⡢
δϡ

¤ϡΥޥɤϤץꤹɬפΤǡץ
ʳǺäƤޤޤ fml8 ΥץϲϤΥޥɤϤ
ץϲϤƤϤޤ󡣡֥ޥɥ饤󥪥ץʤɤڹͤʤ
üʥ⡼ɡפ makefml ˰ܤȤʤ櫓ǤϤʤϤǤ
ޤޤ



ܤޥɤΣ̤ͣȤδؤϤʤΤʤ (read /
write ?)

줬ֺ륱Τ褦ʵޤɤƤɬפʤ顢 fml 
ƬʸˤĤޥɤѰդޤ

: Υס HTML 롣Ǥ⡢fml ˸¤餺 MH եʤ
Ǥ⹽ʤ

fmlhtmlify [-I DIR] $src_dir $dst_dir



̤Υޥɥ饤󥪥ץ

libexec/  bin/ ˤץෲ(.cgi Ͻ)٤Ƥ˶̤륳ޥɥ饤
ץ

--debug
--help
-c file
-o key=value

ΣĤǤ -c ϥǥեȤǤϤʤ main.cf Υѥꤹݤ˻Ȥޤޤ
-o ˤѿ(config.cfǻꤹѿ)ξ񤭤ǽǤ -o ʣ󡢻Ȥ
Ƥꤢޤ

-o key1=value1 -o key2=value2



̤ͣκ

% su fml
% makefml newml ͣ̾

ͣ̾ϡȴξ硢ǥեȤΥɥᥤȤʤꡢɥ쥹˻ꤹХ
ɥᥤޤǴޤ makefml Ф뤳ȤˤʤäƤޤ
ǥեȤС뤫ݤˤ餺ˡɥᥤĤǻꤷƤޤ
ޤ󡣤षɤǤ礦ȤХǥեȥɥᥤ(fml.org)Ǥ
СĤƱ̣Ǥ

% makefml newml elena
% makefml newml elena@fml.org

路  Chapter 5 򻲾ȤƤ



̤ͣκ

% su fml
% makefml rmml ͣ̾

ͣ̾ @ ȴξǥեȤΥɥᥤ󡢥ɥ쥹˻ꤹХС
ɥᥤޤǴޤ makefml ưŪ˽ǤޤȤХǥեȥɥᥤ
(fml.org)ǤСĤƱ̣Ǥ

% makefml rmml elena
% makefml rmml elena@fml.org

Ǥ newml ȿФư򤷤ޤۡǥ쥯ȥäȤ MTA 
alias γȥäȤäȤʤɤǽʤƹԤʤޤ



̥ͣСϿȺ

̤Σ̥ͣСϿ useradd  userdel Ǥ

% su fml
% makefml useradd ͣ̾ ᡼륢ɥ쥹
% makefml userdel ͣ̾ ᡼륢ɥ쥹

ͣ̾ @ ȴξǥեȤΥɥᥤ󡢥ɥ쥹˻ꤹХС
ɥᥤޤǴޤ makefml Фޤ



% su fml
% makefml useradd elena rudo@nuinui.net
% makefml userdel elena rudo@nuinui.net
% makefml useradd elena@fml.org rudo@nuinui.net
% makefml userdel elena@fml.org rudo@nuinui.net

ʤʤ褦 useradd ޥɤ


useradd
adduser
subscribe
add

ɤȤäƤƱǤޤuserdel 

userdel
deluser
bye
remove
resign
signoff
unsubscribe

ɤȤäƤƱǤ (: BSD ɤ System V ɤɤήǤɤ褦 :-)




̥ͣСΥɥ쥹ѹ

% su fml
% makefml chaddr ͣ̾ Ť᡼륢ɥ쥹 ᡼륢ɥ쥹

ͣ̾ @ ȴξǥեȤΥɥᥤ󡢥ɥ쥹˻ꤹХС
ɥᥤޤǴޤ makefml Фޤ



% su fml
% makefml chaddr elena rudo@nuinui.net teddy@nuinui.net
% makefml chaddr elena@fml.org rudo@nuinui.net teddy@nuinui.net



ߤ



% makefml off elena ᡼륢ɥ쥹



Ƴ

off ȿ



% makefml on elena ᡼륢ɥ쥹



򸫤



% makefml log elena
% makefml log elena@fml.org



СꥹȤ򸫤



% makefml list elena

ϼԤΥꥹȤɽޤ



% makefml list elena member

СΥꥹ(ƲǽԤΥꥹ)

ºݤˤϡconfig.cf ѲǽǤդΥޥåפɽǽǤ

% makefml list elena MAP̾

ʤĹѿ̾ǤΤѤʤΤǡ primary_xxx_map  xxx_maps 

% makefml list elena xxx

ȾάƤɤȤˤʤäƤޤ



ѹ

2004/11 ߡٱ˥塼󥿡եΥƥǤưƤޤܸ
˥塼ǤʤޤޤߤɬפȤ֤Ǥե졼
ϺѤߤȤơǤ

ޤΤȤ config.cf ʤɤ򥨥ǥԽƲ _o_



⡼ȴԤϿȺ


                                  Warning                                   

makefml ȤԤְΤͤǤ:-) makefml ȤԤϡ
(긢¤μ夤)⡼ȴפΤνԤʤȤǤޤ      


̤Σ̥ͣСϿ addadmin  deladmin Ǥ

% su fml
% makefml addadmin ͣ̾ ᡼륢ɥ쥹
% makefml deladmin ͣ̾ ᡼륢ɥ쥹

ͣ̾ @ ȴξǥեȤΥɥᥤ󡢥ɥ쥹˻ꤹХС
ɥᥤޤǴޤ makefml ФޤȤ

% su fml
% makefml addadmin elena rudo@nuinui.net
% makefml deladmin elena rudo@nuinui.net
% makefml addadmin elena@fml.org rudo@nuinui.net
% makefml deladmin elena@fml.org rudo@nuinui.net

ʤʤ褦 addadmin ޥɤ


addadmin
addpriv

ɤȤäƤƱǤޤdeladmin 

byeadmin
byepriv

ɤȤäƤƱǤ



ǥ졼ϿȺ

̤Σ̥ͣСϿ addmoderator  delmoderator Ǥ

% su fml
% makefml addmoderator ͣ̾ ᡼륢ɥ쥹
% makefml delmoderator ͣ̾ ᡼륢ɥ쥹

ͣ̾ @ ȴξǥեȤΥɥᥤ󡢥ɥ쥹˻ꤹХС
ɥᥤޤǴޤ makefml ФޤȤ

% su fml
% makefml addmoderator elena rudo@nuinui.net
% makefml delmoderator elena rudo@nuinui.net
% makefml addmoderator elena@fml.org rudo@nuinui.net
% makefml delmoderator elena@fml.org rudo@nuinui.net



fml ޥɤ makefml ޥ

ν礬ۤʤ뤳ȤС fml (/usr/local/bin/fml) ޥɤ makefml 
ɤƱǤñˡιǻȤʬƲ

fml ޥɤǤ

% fml ͣ̾ ޥ [ޥɸͭΥץ]

Ȥʤޤmakefml Ǥ

% makefml ޥ ͣ̾ [ޥɸͭΥץ]

ǤƥޥɤλȤˤĤƤ makefml 򻲾ȤƲ



ɥ쥹ɽ (fmladdr ޥ)

fmladdr (/usr/local/bin/fmladdr) ϤΥۥȤƤƤΥɥ쥹(
桼ѡ)ɽޤΤˤϡ/etc/passwd Ƥ桼ȡ
postfix Ƥ alias Ƥɽޤ

% fmladdr


                                  Warning                                   

fmladdr  fmlalias ΰ㤤ϡ˥桼( /etc/passwd ƤΨ
)ޤफݤȤǤ fmladdr ϴޤߤޤfmlalias ϴޤߤޤ   
fmlalias Ͻ alias ɽޤ                                    




ꥢΰɽ (fmlalias ޥ)

fmlalias (/usr/local/bin/fmlalias) ϤΥۥȤƤƤ alias 
ɽޤΤˤϡpostfix Ƥ alias Ƥɽޤ

% fmlalias


                                  Warning                                   

fmladdr  fmlalias ΰ㤤ϡ˥桼( /etc/passwd ƤΨ
)ޤफݤȤǤ fmladdr ϴޤߤޤfmlalias ϴޤߤޤ   
fmlalias Ͻ alias ɽޤ                                    




ɽ (fmlconf ޥ)

fmlconf (/usr/local/bin/fmlconf) ϰˣͣ̾ȤꡢΣ̤ͣѿɽ
ޤ -n ĤȥǥեͤȰۤʤѿȤͰɽޤ

ѿɽ롣

% fmlconf elena

ǥեͤȰۤʤѿΤߤɽ롣

% fmlconf -n elena



⥸塼ΥɥȤɽ (fmldoc ޥ)

fmldoc λȤ perldoc ƱͤǤ fml ǤդΥ⥸塼ФΥɥ
Ȥɽޤ¤ΤȤ perldoc ؤ wrapper Ǥ

ȤСFML::Process::Kernel ΥɥȤ硢

% fmldoc FML::Process::Kernel



 HTML  (fmlhtmlify ޥ)

ǥեȤǤϡưŪ˵ HTML ƤޤΥޥɤϰپäƽ
䡢Ť̤ͣΰܹԻ˻ȤΤΤǤ

% fmlhtmlify Τǥ쥯ȥ Υǥ쥯ȥ

% fmlhtmlify /var/spool/ml/elena/spool /some/where/mlarchive/elena

 



쥷ԡs

1. а(ǧڥꥹȤΰ)
2. ԥꥹȤ
3. ְ̤ͣäƾäƤޤäᤷ (CUI,CGI,admin ޥ)
4. ƤǤ륢ɥ쥹䤹 (CUI,CGI,admin ޥ)
5. 襢ɥ쥹䤹
6. ϿƤ᡼륢ɥ쥹ѹ

1. а(ǧڥꥹȤΰ)

elena ML Υа򸫤硢

makefml list elena

⤷

makefml list member

2. ԥꥹȤ

makefml list elena recipient

⤷

makefml list elena active

3. ְ̤ͣäƾäƤޤäᤷ (CUI,CGI,admin ޥ)

makefml rmmlפǣ̤ͣäƤ

% makefml reviveml ͣ̾

᤻ޤ

CGI ǤƱͤǤrmml ǾäƤ reviveml Ǥޤ

⡼ȴ(admin ޥ)ǤϡϽޤ

rm -fr /var/spool/ml/elenaפʤɤȤƣ̤ͣõƤޤäƤи
᤹ˡޤ󡣥ХååפᤷƲ(ޤ˥ХååפȤ
礦)

4. ƤǤ륢ɥ쥹䤹 (CUI,CGI,admin ޥ)

̤ˡʤɤʤʤ顢̤˥桼ȤϿƤ

% makefml add ͣ̾ ᡼륢ɥ쥹

Ҥ⡢롢𤫤̤ͣƤϲҤˤʤ
addmember ޥɤȤäơƲǽʥɥ쥹䤷ơײ

̥ͣФξǤ makefml ȤäƲ

% makefml addmember ͣ̾ ᡼륢ɥ쥹

ΥޥɤϼΣĤɤǤǤ add2member add2members addmember
addmembers

⡼ȴ(admin ޥ)ǤƱͤǤ

To: elena-ctl@fml.org
Subject:

admin pass ѥ
admin addmember ͣ̾ ᡼륢ɥ쥹

ޤΤȤ CGI ǤϤΥޥɤȤ褦ˤʤäƤޤ

5. 襢ɥ쥹䤹

̤ͣƤϽʤμԤȤ䤹ǤȤХ᡼ޥ
Τ褦ʥǤ

̥ͣФξǤ makefml ȤäƲ

% makefml addrecipient ͣ̾ ᡼륢ɥ쥹

 recipient_maps ˤΤߥɥ쥹ϿޤΥޥɤ
add2recipient add2recipients addrecipient addrecipients ΤɤǤƱ̣Ǥ


⡼ȴ(admin ޥ)ǤƱͤǤ

To: elena-ctl@fml.org
Subject:

admin pass ѥ
admin addrecipient ͣ̾ ᡼륢ɥ쥹

ޤΤȤ CGI ǤϤΥޥɤȤ褦ˤʤäƤޤ

6. ϿƤ᡼륢ɥ쥹ѹ

̥ͣФξǤ makefml ȤäƲ

% makefml chaddr ͣ̾ ᡼륢ɥ쥹 ᡼륢ɥ쥹

⡼ȴ(admin ޥ)ǤƱͤǤ

To: elena-ctl@fml.org
Subject:

admin pass ѥ
admin chaddr ͣ̾ ᡼륢ɥ쥹 ᡼륢ɥ쥹

CGI Ǥ chaddr ޥɤѲǽǤ



Chapter 15. եѹ

ΥۥȤΤ٤ƤΣ̤ͣΥǥեѹ

 /usr/local/etc/fml/site_default_config.cf ˽񤤤ƲեޥåȤ
.cf Ĥޤ config.cf ƱͤǤ

Υեϡfml4  site_force.ph ΤǤ



쥷's

1. elena ̤ͣ򸫤

1. elena ̤ͣ򸫤

ѿɽ

% /usr/local/bin/fmlconf elena

ǥեͤȰۤʤѿɽ

% /usr/local/bin/fmlconf -n elena



Chapter 16. [fml8 Ǥ] ե̾ˤĤ

ɤʤȤȤ󡣤ޤǤե̾ѤŪȤ
äǤ: fml-devel 205



ե̾δܹ

ܷϤ

ե̾-

ǤȤСꥹȤϼΤ褦ˤʤޤ

recipients-
members-

ꥹȰʳǤƱ롼ŬѤޤȤ

passwd-admin
passwd-moderator
passwd-cgiadmin

ȤäǤ

Ʊͤˡʡ٤ߤ뤴Ȥ

members-
recipient-

뤳ȤˤޤǤ⡢Ƥ recipient-* ϥߡ˲᤮ʤʤȤ¿
Ǥ礦:)

ȤʬĤǤºݡɤΩĤΤϤ褯狼ʤ
ǺȤϡŪѤ뤳ȤˤƤޤ



: ̤ͣΥСԥꥹ

primary_recipient_maps  =       recipients

# ߴΤ actives 򤤤Ƥ
recipient_maps  =       recipients
                        actives

[TODO] warning ФȤΤǡʤȤ



: ⡼ȴԤΥꥹ

recipients-admin
members-admin



ǥ졼Υꥹ

recipients-moderator
members-moderator



⡼ȴԤΥѥ

etc/passwd-admin


                                  Warning                                   

4.0 Ǥ etc/passwd Ǥ                                                
                                                                            
ѥǧڰʳξ⤢Τǡȡ֥ե̾-פȤ 
äȤ櫓Ǥ                                                        



Chapter 17. ޥλ

ǥ: ưե֤

ץ( /usr/local/libexec/fml/distribute )¤ɤʤȤǤ /some
/where/help ե֤ȤͤޤȤ help@fml.org ̤ͣ
Υɥ쥹˥᡼ (򤤤蘆:-)إץե֤Ȥ
ΤǤ

ξ config.cf (e.g. /var/spool/ml/help/config.cf)ϡΤ褦ˤʤ


article_post_restrictions = permit_anyone

config.cf ե =cut ԰ʹߤ hook 񤭤ޤ

$distribute_run_start_hook = q{

        $curproc->reply_message( {
                type        => "text/plain; charset=iso-2022-jp",
                path        => "/some/where/help",
                filename    => "help",
                disposition => "help example",
        });

        $curproc->stop_this_process();

};

Ǹ

$curproc->stop_this_process();

 fml4  $DO_NOTHING ѿˤޤfml8 Ǥϥ᥽åɤǤǡ
HOOK ʹߡν̵뤵褦ˤʤޤĤޤꡢʤˤ¹Ԥʤʤ
Ȥ櫓Ǥ

ΤˤϡֿȤΤϲ¹Ԥޤפ reply_message() ᥽åɤǥ
塼줿åϹԤʤΤǡå
ϹԤʤޤ



쥷ԡs

1. ӥư֤
2. ɤ֤ոդѣͣ

1. ӥư֤

ޥɥ᡼ guide Ȥޥɤȥɤ֤ޤλȤ
ѤɤǤ礦

ǥեȤǤϥåƥץ졼ȤΥɰ⤬Ȥޤ fml4 Τ褦ˣ
̤Υۡ guide ե뤬櫓ǤϤޤ󡣤äȤ fml4 Ȥθߴ
Τˡƣ̤ͣΥۡǥ쥯ȥ guide ե򤪤С֤
Ƥޤ

֥᡼Ƥˤ餺˥ɤ֤פˤϡ⤦ҤȤҤͤɬפǤ

ΤˤϼΤ褦 HOOK Ǿ guide ޥɤ¹Ԥ褦ˤȤ褤Ǥ
礦ʤǤ̾νϹԤʤʤ褦ˤƤޤ

$distribute_run_start_hook = q{

        # guide ޥɤƤӽФޤ
        # guide ޥɤƤѤΥ᡼륭塼ƥϤޤ
        use FML::Command;
        my $dispatch = new FML::Command;
        my $context  = $curproc->command_context_init("guide");
        $dispatch->guide($curproc, $context);

        # ̾νԤʤޤ
        $curproc->stop_this_process();

};

# ޥɥ᡼ǤƱɤ֤褦
$command_mail_run_start_hook = $distribute_run_start_hook;

fml4 ȰۤʤꡢѤȥޥɥ᡼Ѥ줾ΥץȤ HOOK ʬ
뤳ȤդƲΤǸƱƤΥޥɥ᡼Ѥ HOOK 
ɬפޤ(ԡƤ)

$command_mail_run_start_hook = $distribute_run_start_hook;

2. ɤ֤ոդѣͣ

ְոաѤΣ̤ͣͤƤߤޤ礦

쥷Ԥ˻Ƥޤ㤤ޤ

Σ̤ͣ˰ոäƤ줿ͤˤϡȤꤢֻ֤ո꤬Ȥ
ޤֻϤФ餯ԤäƤ͡פФƤ줿᡼طԤ
äơ (1) ǤƤǤơ (2) ˽Ф (3) ̤Σͣ
Ȥư롢褦ꤷޤ (3) ϡֻˡطԤ뤿פ
ǽȤǤ

[config.cf]

article_post_restrictions = permit_anyone

=cut

$distribute_run_start_hook = q{
    my $cred   = $curproc->credential();
    my $sender = $cred->sender();

    # ̤ͣΥСǤʤʤ饬ɤ֤ޤ
    # ̤ͣΥСФƤ̤Σ̤ͣȤʤޤ
    unless ($cred->is_member($sender)) {

        # guide ޥɤƤӽФޤ
        use FML::Command;
        my $dispatch = new FML::Command;
        my $context  = $curproc->command_context_init("guide");
        $dispatch->guide($curproc, $context);
    }

};



ǥ: ïǤ⥳ޥɥ᡼뤬Ȥ

command_mail_restrictions ϥޥɥ᡼ѤСƤޤ


command_mail_restrictions = permit_anyone

ǡ̤ͣΥСݤ鷺ïǤ⥳ޥɥ᡼뤬Ȥޤ

ꤷƤΤĻȤȤΤϤޤ塢ϲǽ
Ǥ



쥷ԡs

1. ïǤ⥳ޥɥ᡼뤬Ȥ
2. ƥॢȤïǤ⥳ޥɥ᡼뤬Ȥ
3. ޥɥ᡼ïȤʤ褦ˤ

1. ïǤ⥳ޥɥ᡼뤬Ȥ

command_mail_restrictions = permit_anyone

2. ƥॢȤïǤ⥳ޥɥ᡼뤬Ȥ

command_mail_restrictions = isolate_system_accounts
                            permit_anyone

:  reject_system_accounts Ǥ fml8 2008/08/17 ʹߤΥСǤ
isolate (SPAM γΥ)侩Ǥ

3. ޥɥ᡼ïȤʤ褦ˤ

command_mail_restrictions = isolate

:  reject Ǥ fml8 2008/08/17 ʹߤΥСǤ isolate (SPAM
γΥ)侩Ǥ

ʳˤˡޤ路  the Section called ǥ: 
ɥ᡼ïȤʤ褦ˤ򻲾ȤƲ



ǥ: ޥɥ᡼ïȤʤ褦ˤ

Ȥaliases ԽơԤΤֳμ¤Ǥʳ
ˡȤƤϡΤ褦ʤΤͤޤ

ޥɥ᡼ΥץưƤ⡢¨ǽλ褦ˤ뤳ȤǤޤ
줬(aliases Խ뤳ȤΤ)ֳμ¤ˡǤ

use_command_mail_function       =       no

ץưƤޤΤǤ̲ȤƼΤ⥢Ǥ礦

use_command_mail_function = yes

command_mail_restrictions = reject

ꤹ(Сʳο֤ͤϤ) guide 줺򤷤
֤ʤϥСǤʤפȤĥ֤Ǥ

ϡֳƹԤɾƤޤפĤޤ̵̤ư򤷤ƤޤȤ
ȤǤ

: βϡ֥ޥɥ᡼뤬ȤʤȤ򶵤ƤפȤꤷƤ
̤ͣʤɤǤϡʤȻפޤ̤Σ̤ͣǤϡ SPAM ᡼
ФƱƤޤڤˤʤޤǡ fml8 2008/08/17 ʹߤ
СǤ isolate (SPAM γΥ)̿᤬侩Ǥ

use_command_mail_function = yes

command_mail_restrictions = isolate



ǥ: ᡼ޥ (1)


                                  Warning                                   

Ǥϥ᡼إåˤǧڤ夲Ƥޤ󤬡Τᡢäȸ
򤷤Ƥ                                                    
                                                                            
ȤС⤽⥤󥿡ͥå¦ SMTP 󥿡եʤ褦ʥШ
ꡢӥФ־ʤɤԤʤ٤Ǥ                  
                                                                            
fml8 ñΤǽǤ PGP ǧڤۤǤξ硢᡼ޥôԨ
 PGP/GPG Ȥ뵻Ϥ׵ᤵޤ PGP äΥͥåǤ        


᡼ޥϡƲǽʥСꥹȤ򥫥ޥפ뤳ȤǹԤʤޤ


$member_maps  $primary_member_map ȴƲǽʥСΥꥹ
(Ǥ $ml_home_dir/members-mailmag եȤޤ礦) $member_maps
ɲäޤ

member_maps     =       $ml_home_dir/members-mailmag

Υեˡ᡼ޥƼԤΥɥ쥹񤤤Ʋ

ʤ subscribe ޥɤˡϥǥեȤΤޤޤǤޤޤ [12] Ȥ
Τ subscribe  unsubscribe ޥɤϡ $primary_member_map 
$primary_recipient_map ФѹäפȤͤǤ
ǧڻõˤ member_maps  recipient_maps ȤΤǤʤ줾
ǥեͤϼΤ褦ˤʤäƤޤ

member_maps             =       $primary_member_map
                                $admin_member_maps

recipient_maps          =       $primary_recipient_map
                                file:$ml_home_dir/actives

$recipient_maps  actives ե뤬äƤΤϸߴΤǤ( fml8 Ǥ
actives եȤޤ󤬡fml4 Υǥ쥯ȥ깽¤ΤޤޤǤư
ˤ뤿θߴǤ)äơͤ򤦤ޤꤹСä
ưפȤˤʤäƤ櫓Ǥ

ơҤ

member_maps     =       $ml_home_dir/members-mailmag

Ȥ򤷤硢ưϼΤ褦ˤʤޤ

桼 subscribe ȡΥɥ쥹 recipients ե
($primary_recipient_map)  members ե($primary_member_map)ɲäƤ
ޤǧڤ members-mailmag ˤƹԤʤΤǡ members եǧ
ڻõ˻Ȥޤ󡣤Τᡢ̥桼ƤǤޤƲǽʥ桼
 members-mailmag եˤ륢ɥ쥹Υ桼Ǥ

 recipients ե($primary_recipient_map)򸵤ˡ subscribe 
桼ˤƹԤʤޤʬ̤Σ̤ͣȰǤ

̲ȤƤϡդˡǽǤ

primary_member_map      =       $tmp_dir/members-dummy

ʤɤꤷСꥹȤοʬɲѹưǤƤǤ members 
Ʋǽʥɥ쥹񤭤ޤΤۤ fml4 ʬ䤹Ǥ礦




ǥ: ᡼ޥ (2)

2004/06 Ⱦʹ: 塼󥰥ƥβѤˤꡢ֤虜ȥ顼ˤƥ᡼
塼᡼ȤǧƤ flush ()׵ǽˤʤ


ˤꡢ (1) ޤƥ塼졢 (2) 塼ȤǧΤ
Ϥ롢ȤޤĤޤְäƤΥ᡼Фǽ
㤯ʤޤ

ϼΤ褦ˤƤ

config.cf ǤϡΤ褦¸ߤʤݡȤǤꤷƤޤ

smtp_servers = ̵̣ʥȥ󥹥ݡ

[]

smtp_servers = 127.0.0.1:2025

ƤȡƤˤ顼ˤʤꡢfml8 Υ᡼륭塼
ޤ

᡼Ȥְ㤨ʤäȳοꡢɤȽǤ硢
ȥ󥹥ݡȤꤷƥ塼եå夷Ƥ

% fml -o smtp_servers=ȥ󥹥ݡ ͣ̾ flushq

[]

% fml -o smtp_servers=127.0.0.1:25 ͣ̾ flushq

ʤߤ flush  flushq ޥɤƱ̣Ǥ flushq ǤŤ餤Τ flush
ޥɤäƤߤޤ

äȤ⡢󡢤ΥޥɷǤΤݤʤΤǡ륹
ץȤäƤɤǤ礦

ˡ̤ͣΥ塼ե WWW ФǸ褦ˤƤ OK ʤ顢
Υ륹ץȤ CGI Ǽ¹ԲǽˤƤȤˡ褤Ǥ礦Υ
塼ե̾ƤޤäơˤʤȤϻפޤʥƥʤ
֤Ǻޤ͡

ˡ OK פФΤԤȰۤʤ͡פˤƤСͥ줿᡼
ޥαѤˤʤޤȤΤϡԤʬǼʬ OK Фȡ
Ťʤ뤫Ǥ



ǥ: ïǤƲǽʣͣ

article_post_restrictions ѿϡֵƤСפƤޤ
 permit_anyone ȤȡǤƲǽˤʤޤ

article_post_restrictions = permit_anyone

fml4 ȰۤʤꡢΤ褦˽񤯤ˡïǤƲǽפȤʤ뤳ȤդƲ
 *_restrictions ѿˤ reject_system_special_accounts Ȥ root ʤɤ
Ƥ롼뤬ӤޤǥեȤǤϡŪ˻ꤷƤޤ(fml4
ǤϡΤۣǤ)

fml4 Τ褦ˡroot ʤɥƥ̤ʥȤƤʳΥ桼
Υ᡼ϼդȤ硢Τ褦ˤޤ

article_post_restrictions =     reject_system_special_accounts
                                permit_anyone

:  reject Ǥ fml8 2008/08/17 ʹߤΥСǤ isolate (SPAM
γΥ)侩Ǥ

article_post_restrictions =     isolate_system_special_accounts
                                permit_anyone

ʤߤ 2008/08/17  article_post_restrictions ΥǥեȤ fml4 ߴ
ᡢΤ褦ˤʤäƤޤ

article_post_restrictions =     reject_system_special_accounts
                                permit_member_maps
                                reject

ΰ̣ϡroot ʤɥƥ̤ʥȤƤסmember_maps ˤ桼
ǤƤפŤˤޥåʤʤƤݤפȤʤޤ

ʤreject_ʤˤʤˡפӡpermit_ʤˤʤˡפȤ̿ϡޥåȤ
ǽˤʤޤޥåʤˤϼξޤ

2008/08/17 ʹߤΥСǤ SPAM ΥΤǥեȤǤ

article_post_restrictions =     isolate_system_special_accounts
                                permit_member_maps
                                isolate

: reject ǤϤʤ isolate ȤʤäƤ롣



쥷ԡs

1. ɥᥤʤïǤƤǤ ML

1. ɥᥤʤïǤƤǤ ML

fml4 Τ褦 HOOK ǥХѿ򤤤󤹤ȤäʤȤϽ褻

IO::Adapter  pcre ݡȤѤ example.co.jp ɥᥤ󤫤Ƥ
ʳƤݤ restrictions 񤱤ޤ

[/var/spool/ml/elena/config.cf]

article_post_restrictions       =       reject_system_special_accounts
                                        permit_member_maps
                                        reject

member_maps                     =       pcre:$ml_home_dir/sender.pcre

[$ml_home_dir/domains]

\S+\@example.co.jp

: fml8 2008/08/17 ʹߤΥСǤ isolate (SPAM γΥ)侩Ǥ

[/var/spool/ml/elena/config.cf]

article_post_restrictions       =       isolate_system_special_accounts
                                        permit_member_maps
                                        isolate

member_maps                     =       pcre:$ml_home_dir/sender.pcre

[$ml_home_dir/domains]

\S+\@example.co.jp

 



ǥ: եʤïǤƲǽʣͣ

֥СʳơפơƤݤץ빽ޤ

ʬλȤäƤ륢ɥ쥹ѹΤ˺줿Ȥ֥ɥᥤ󤬤ä
ʤäʤɡŬʻȤ򤷤ƤΥ顼⤢Сžɤǡ
ֻ񤤤ƥ顼ˤʤ륱⤢ޤ

ǡ2004/10/28 ʹߤ article_post_restrictions ˤϡξ
û֤ From: Υɥ쥹(ǧڤ˻Ȥ᡼륢ɥ쥹)˴ؤ餺Ʋǽʥץ
ǽɲäƤޤ

ߤμϡܣ̤ͣεƤơεФƤΥץ饤򤹤ΤǤ
̤ƤפȤΤǤ¤ĤǤŪˤϡ
In-Reply-To: ⤷ References: ǲ(콵ְ)ε message-id: 򻲾
Ƥ᡼ФƤϡ(From: Υ᡼륢ɥ쥹˴ؤ餺)Ƥ




쥷

1. եʤïǤƲǽʣͣ

1. եʤïǤƲǽʣͣ

ϼΤ褦ˤʤޤ check_article_thread ΥץǤ

article_post_restrictions       =       reject_system_special_accounts
                                        check_article_thread
                                        permit_member_maps
                                        reject

ǥեˤƤۤʵ⤷ޤޤΤȤ
ˤʤäƤޤ󡣤εǽѤ硢Ū
article_post_restrictions ѹƲ

: fml8 2008/08/17 ʹߤΥСǤ isolate (SPAM γΥ)侩Ǥ

article_post_restrictions       =       isolate_system_special_accounts
                                        check_article_thread
                                        permit_member_maps
                                        isolate





ޡ褦 cookie ߤʤǤ͡ǤϿޤ

1) ֤Ĺ򡢤ɤΤ餤ޤûΤŬ

article_post_article_thread_lifetime = 86400

$article_post_article_thread_lifetime ȤѿǤ褦ˤƤߤޤ
ǥեȤǤϰǤ

ꡢ¤äơĤ餤ĤޤǤåɤλϤޤäá
Ȥ⥹åɤǺǸƤ줿áɤ餬ʤΤǤ礦

2) subject: ȥåɤΰ¸طξåȡʤ굶¤ΤѤ
ʤȤϻפ [13]

äȤ⡢Ƥ message-id ĹȤ¿顢From: ¤ꤳä
ۤˤ񤷤Ǥ͡

ǤǤ⡢ܤ message-id Ĥ mailer ȡդ˼夯ʤ뤱ɤͤ
UNIX@ۥ(FQDNʤ) ߤʤؤܤĤȡͽ¬ϰϤ
䡣



쥷

1. 꾯οͤåɤ򤿤Ƥ̡ͣ

1. 꾯οͤåɤ򤿤Ƥ̡ͣ

졢ǥ졼ƥȻפΤǤɤǤ礦

ȤмΤ褦ǤȡŪˡ֥åɤ򤿤Ƥ뾮ο(
) + åɤؤΥץ饤򤹤԰ʳοͤפȤѤˤʤޤ͡

member_maps                     =       $tmp_dir/members-thread-init

article_post_restrictions       =       reject_system_special_accounts
                                        check_article_thread
                                        permit_member_maps
                                        isolate

: fml8 2008/08/17 ʹߤΥСǤ reject ǤϤʤ isolate (SPAM γΥ)
侩Ǥ

ޤ members-thread-init ϿƤͤϡ֤ĤǤơפǤޤ
ʳΥСϡ̾ƤݤޤƤ줿᡼ֿ
ˤ check_article_thread ̿ƤȤȤߤǤ

Ĥޤꡢǽ˴Ԥοͤդ롣ؤΥեϣ̤ͣή롣
褦ˡԤοֿͤҲ𤹤פȤȤߤǤ
ǥ졼ɡ㤦ųݤǤ

Τۤǥ졼ñȻפǤɤǤ͡

ޤͥդ򤹤ͤǧڤ PGP ȤȤɤǤ

member_maps                     =       $tmp_dir/members-thread-init

article_post_restrictions       =       reject_system_special_accounts
                                        check_article_thread
                                        check_pgp_signature
                                        isolate

: fml8 2008/08/17 ʹߤΥСǤ reject  isolate (SPAM γΥ)
Ǥ



ǥ: PGP/GPG Żҽ̾¤򤹤ͣ


                                  Caution                                   

εǽȤˤ Crypt::OpenPGP ⥸塼뤬ɬפǤ OS °Υѥå
ƥʤɤǥ󥹥ȡ뤷ƲΥ⥸塼뤬¸Ƥ⥸塼먢
󤢤Τǡ OS °ΥѥåƥबȤʤȡ󥹥ȡϨ
ʤݤǤ                                                          



쥷

1. PGP/GPG Żҽ̾¤򤹤ͣ

1. PGP/GPG Żҽ̾¤򤹤ͣ

ϼΤ褦ˤʤޤ check_pgp_signature  PGP/GPG ǧڥץ
ʬǤŻҽ̾ʥ桼Ƥޤ

article_post_restrictions       =       reject_system_special_accounts
                                        check_pgp_signature
                                        reject

ǥեȤǤϻȤޤѤϡŪ
article_post_restrictions ѹƲ

: fml8 2008/08/17 ʹߤΥСǤ isolate (SPAM γΥ)侩Ǥ

article_post_restrictions       =       reject_system_special_accounts
                                        check_pgp_signature
                                        isolate





PGP Υ󥰤ϡư老Ȥ̤¸褦ˤʤäƤޤȤе
ѤΥ $ml_home_dir/etc/pgp-article-post-auth/ ǥ쥯ȥʲˡ
ȴѤΥ $ml_home_dir/etc/pgp-admin-command-mail-auth/ ǥ쥯ȥ
֤ȤäǤ

Υ pgp2 pgp5 gpg ޥɤƤǥեȤΥǥ
쥯ȥǤϤʤȡ⡼ɤȤ˰ۤʤǥ쥯ȥȤᡢfmlpgp ʤɤΥ
ƥƥץ( wrapper )ѤǤ

: elena ML ǵƤǻȤ

fmlpgp elena --article-post-auth -kg

ޥɥ饤󥪥ץ

--article-post-auth       (ƻŻҽ̾ǧ)
--command-mail-auth       (ޥɥ᡼Żҽ̾ǧ)
--admin-command-mail-auth (⡼ȴΥޥɥ᡼Żҽ̾ǧ)
--article-post-encrypt    (Ź沽(̤))

ʤɤȻѤꤷƤ줾ξФưۤʤ륭󥰤
ǥ쥯ȥ꤬Ȥޤ

ѰդƤ륳ޥ(wrapper)ϼ̤Ǥ

pgp2 : fmlpgp

pgp5 : fmlpgp5 fmlpgpe fmlpgpk fmlpgps fmlpgpv

gpg : fmlgpg fmlgpgv



ǥ: PGP/GPG ǥޥɥ᡼ǧڤ

1. PGP/GPG (桼⡼ɤ)ޥɥ᡼ǧڤ
2. PGP/GPG  admin ޥɥ᡼ǧڤ

1. PGP/GPG (桼⡼ɤ)ޥɥ᡼ǧڤ

command_mail_restrictions       =       check_pgp_signature
                                        isolate

:  reject Ǥ
fml8 2008/08/17 ʹߤΥСǤ isolate (SPAM γΥ)侩Ǥ

 fmlgpg fmlgpgv fmlpgp fmlpgp5 fmlpgpe fmlpgpk fmlpgps fmlpgpv ޥɤ
äꤷƲ

: ͣ̾ѤΥ

% fmlpgp --command-mail-auth ͣ̾ -kg

 the Section called ǥ: PGP/GPG Żҽ̾¤򤹤̤ͣ
ͤˤƲ

2. PGP/GPG  admin ޥɥ᡼ǧڤ

admin_command_mail_restrictions =       check_pgp_signature
                                        isolate

:  reject Ǥ
fml8 2008/08/17 ʹߤΥСǤ isolate (SPAM γΥ)侩Ǥ

 fmlgpg fmlgpgv fmlpgp fmlpgp5 fmlpgpe fmlpgpk fmlpgps fmlpgpv ޥɤ
äꤷƲ

: ͣ̾ѤΥ

% fmlpgp --admin-command-mail-auth ͣ̾ -kg

 the Section called ǥ: PGP/GPG Żҽ̾¤򤹤̤ͣ
ͤˤƲ



ǥ: ̤ͣγز

С¤򤹤̤Σ̷ͣäȤơγزͤޤ ( fml
Х֥ˤ褦) ȤбĶ˱Ķ 1 2 3 ݤ礬˳
ޤ

ޤ줾βѤ sales-1 sales-2 sales-3 ̤ͣꡢƣ̤ͣΥС
ϡ줾βݤǴƤ餦ȤˤޤޤӡĶΤϢѤ
sales ̤ͣꡢ sales ̤ͣإ᡼ȡ sales-1 sales-2 sales-3 
Сˤ褦ˤޤ礦

ϴñǡsales ̤ͣ䤹Ǥ sales ̤ͣ config.cf 

recipient_maps  +=      $ml_home_dir/../sales-1/recipients
recipient_maps  +=      $ml_home_dir/../sales-2/recipients
recipient_maps  +=      $ml_home_dir/../sales-3/recipients

ȤСsales-1,2,3 ٤ƤΥСޤ

ƲǽʥСƱͤ

member_maps     +=      $ml_home_dir/../sales-1/members
member_maps     +=      $ml_home_dir/../sales-2/members
member_maps     +=      $ml_home_dir/../sales-3/members

ȤƤ

ѣ̤ͣξïǤƤǤ褦ˡ $member_maps ѹΤǤϤʤ

article_post_restrictions       =       permit_anyone

ꤷơïǤƲǽפȤƤޤΤ⥢Ǥ礦

ǤϥեǴ夲Ƥޤϴñǡ˼¹ԤǤ
ȤΤ褤ȤǤ

ʤ顢MySQL ʤȿޤȥ᡼ΥꥹȤۤŪǤ
Ǥ礦ݼ⡢ʤɬפȤʤޤǤˤäǧڥ
ƥबʤ顢ϢȤ褦߷פƤߤƤ

ʤߤ fml8  MySQL PostgreSQL LDAP Ȥ̿ǽǤ



ʬΥȤǣ̤ͣԤʤ (Procmail )

(ʬ)ȤǡĿͤƤΥ᡼̤ͣƤΥ᡼ɬפ
礬ޤȤСISP ΥСɥᥤ󥵡ӥˤϤ
ӥޤ

Τ褦ʾˤϡ᡼Υإå To:  Cc: 򸫤ơɤΣ̤ͣʤΤȽ
ꤷŬڤ fml ¹Ԥɬפޤ

ä硢 fml8 Ǥϥ桼 procmail ʤɤοʬġȤȴ
Ƥޤ:-) Τᡢfml8 ˿ʬġѰդƤޤ OS Υѥå
ƥʤɤȤäƿʬġ򥤥󥹥ȡ뤷Ʋ

ʤ makefml  newml κݤˡ~/.procmailrc θܤ /var/spool/ml/etc/procmail
/procmailrc ˺ޤѤƤߤƲ



~/.procmailrc 

PATH=$HOME/bin:/usr/bin:/usr/ucb:/bin:/usr/local/bin:/usr/pkg/bin
MAILDIR=$HOME/Mail      # You'd better make sure it exists
DEFAULT=$HOME/Mail/mbox
LOGFILE=$MAILDIR/procmail.log
LOCKFILE=$HOME/.lockmail
VERBOSE=on

:0
* To.*elena@fml.org
| /usr/local/libexec/fml/fml.pl /var/spool/ml/elena

:0
* To.*elena-ctl@fml.org
| /usr/local/libexec/fml/fml.pl /var/spool/ml/elena --ctladdr

# last resort, mail for me et. al.
:0
inbox/.



Сɥᥤξ

ʬ褦˥ɥᥤ̾ĤΥ롼뤬ҤƤΤǡ procmail 
ǥСɥᥤݤϴطޤ󡣤 procmailrc θܤǽʬ
Ǥʾ̤ɬפޤ

äȤ⡢ӡСɥᥤ󰸤Υ᡼桼 fml ž꤬
MTA ɬפʤΤǤ ISP ʤ᡼륵ФδԤԤʤäƤɬפ
ޤ



ǥ: ե (1)

ʲ /usr/local/etc/fml/site_default_config.cf ˽񤭡̤ͣȿǤ
ƤΥե񤱤С̤ͣ⺣뤹٤ƤΣ̤ͣƱ
ͤˤʤޤ

إåϢǤϡޤSubject: ˥Ĥʤ [14] Ȥˤޤ

article_header_rewrite_rules    -=      rewrite_article_subject_tag

ϡ֥إå񴹤Υ롼פ֥Ĥ̿ȴǤ

ơX-ML-Name: ʬ mlname ˥ե̾Ĥ(prepend )פĤޤ
mlname  office#mlname ѹ褦ˤޤ

outgoing_mail_header_x_ml_name          =       office#$ml_name

ŻѤǤ顢ϡïǤƲǽפȤޤ礦

article_post_restrictions               =       permit_anyone

Ǥ root 󤫤Υƥ᡼ʤɤƤ뤳ȤդƤ
(root ʤɥƥफΥ᡼Ƥ reject_system_accounts
permit_anyone Ǥ)

ơּӤΣ̤ͣʤΤǥե륿¿ספǤΤˤϡ֥ե륿
Ȥ餱פˤʤޤ;)

use_article_filter                     =        no

ȤơƤΥե륿ڤäƤޤΤɤǤ礦̤˥ե륿
ˤϡΤ褦˸̤ no ꤷƤ

use_article_body_filter                 =       no
use_article_non_mime_filter             =       no
use_article_mime_component_filter       =       no
use_article_text_plain_filter           =       no

ΥסͤޤŻΥ᡼Ͽ¿ΤǡĹŪŸ˾դޤ
顢ñ̤ǵ¸Ȥ꤬ɬפǤäơΥס
subdir Ȥޤ

spool_type                      =       subdir

ʤޥɥ᡼ϻȤʤƤޤ

use_command_mail_function       =       no

ޥɥ᡼뤽ΤΤػߤˤϡaliases 鳺륨ȥʤȤ
μ¤Ǥ̤ͣ뤿Ӥˡaliases 뤳ȤϥߥͶפ
Ǥ礦ޤCGI ξ硢CGI Ԥ aliases κ٤򤹤Τ
Ǥǡޥɥ᡼ѤΥץब٤ϵưƤ⡢Ȥ
ˤƤ櫓Ǥ



ǥ: ե (2)

ʲ /usr/local/etc/fml/site_default_config.cf ˽񤭡̤ͣȿǤ
ƤΥե񤱤С̤ͣ⺣뤹٤ƤΣ̤ͣƱ
ͤˤʤޤ

ޤֵ subject ˤϣͣ̾ʸˤפĤޤ

article_subject_tag = (\U$ml_name\E %05d)

Ȥ support@example.co.jp ̤ͣǤ

Subject: (SUPPORT 10000)

Ȥ櫓Ǥ (  [ ¿ǤüʸϹʤΤȤäƤޤޤ
(ɽǤΤǡŬʥפɬפǤ)

ơ򻲾Ȥ뤿ˡޥɥ᡼λѤޤ
ɥᥤ( : example.co.jp )ΥꥯȤФƤΤߡޥɥ᡼λ
ȤȤޤϡHOOK Ǽ¸ޤ

$command_verify_request_end_hook = q{
        my $cred = $curproc->credential();
        my $from = $cred->sender();

        unless ($from =~ /\@example\.co\.jp/i) {
                $curproc->stop_this_process();
                $curproc->logerror("deny command request from $from");
        }
};



쥷ԡs [ǧ]

1. ᡼륢ɥ쥹 From ǧڤ򸷤
2. ᡼륢ɥ쥹 From ɥ쥹ǧڤԤʤʤ

1. ᡼륢ɥ쥹 From ǧڤ򸷤

ǥեȤ From ɥ쥹ǧڤǥɥᥤӤ٥ѹϡ
config.cf  $address_compare_function_domain_matching_level ꤷƲ
[15]

[/var/spool/ml/elena/config.cf]

address_compare_function_domain_matching_level = 4

ȤСuser@mail.example.co.jp Ȥɥ쥹Фơ 3 ʤ example.co.jp
ޤǤӤоݡ 4 ʤ mail.example.co.jp ޤǤӤоݤȤȤˤʤ
ǥեȤ 3 Ǥ

From ɥ쥹ǧڰʳ PGP/GPG ǧڤȤȤޤ路  the
Section called ǥ: PGP/GPG Żҽ̾¤򤹤̤ͣ򻲾
Ƥ

2. ᡼륢ɥ쥹 From ɥ쥹ǧڤԤʤʤ

[/var/spool/ml/elena/config.cf]

use_address_compare_function = no

Ȥ From ɥ쥹ǧڤκݤˡ᡼륢ɥ쥹˴ؤ餺ʥɥ쥹Ȥߤ
ޤ(ǧڤޤˡ

󡢤 From ɥ쥹ǧڤˤޤĤʬǡPGP/GPG ǧڤʤɤȤ
äǤ(Ĥޤꡢѿ no ˤƤ PGP/GPG ǧڤȤȤޤ)

ޤ restrictions  permit_anyone ꤹȡ¼ǧڤ򤷤ƤʤΤǡ
ɥ쥹ǧڤƤʤˤʤޤ



쥷ԡs [ϿϢ]

1. subscribe ϿȤϼưǤ (fml4  closed + confirm )
2. unsubscribe ޥɤǤ confirmation Ȥ
3. unsubscribe ϿȤϼưǤ (fml4  closed + confirm )
4. chaddr ޥɤǤ confirmation Ȥ
5. chaddr ϿȤϼưǤ (fml4  closed + confirm )
6. ưϿȼʾҲƱ˹Ԥʤ
7. Υ᡼륢ɥ쥹ΤߤưϿǽˤ롣
8. fml 3.0  auto_regist Ȥ³

1. subscribe ϿȤϼưǤ (fml4  closed + confirm )

fml8  subscribe  confirmation ĤμưϿǥեȤǤ

[config.cf Υǥե]

subscribe_command_auth_type      = confirmation

subscribe_command_operation_mode = automatic

ּưʻˤˤϡΤ褦꤬ޤ

[config.cf]

subscribe_command_auth_type      = confirmation

subscribe_command_operation_mode = manual

ꤷϡΤ褦ʵưˤʤޤ (1) fml8  confirmation Ԥʤ
ꥯȤǧޤǧפȤԤعԤʤ
ޤ (2) ɥ쥹ϿȤϼưǤϹԤʤޤ󡣴ԤؤϿ
ꤹ᡼뤬 fml8 ФޤΥ᡼򸫤顢ԤϿ
(admin ޥɡCUIGUI)ưǤƲ

褦ϿκǽʳּưפּưפѤäǤ

confirmation ϿԤԤʤϼΤ褦ˤƲξ硢
̥ɥ饤ФȤյʤ褦ʵ⤷ޤ SPAM 褱ˤʤ뤫㴳ΰ
̣Ǥ礦

[config.cf]

subscribe_command_auth_type      = manual

subscribe_command_operation_mode = manual

2. unsubscribe ޥɤǤ confirmation Ȥ

fml8 Ǥ confirmation ǥեȤεưǤ

 

3. unsubscribe ϿȤϼưǤ (fml4  closed + confirm )

unsubscribe  confirmation ĤμưϿǥեȤǤ

[config.cf Υǥե]

unsubscribe_command_auth_type      = confirmation

unsubscribe_command_operation_mode = automatic

[config.cf]

unsubscribe_command_auth_type      = confirmation

unsubscribe_command_operation_mode = manual

ꤷϡΤ褦ʵưˤʤޤ (1) fml8  confirmation Ԥʤ
ꥯȤǧޤԤغȰΥ᡼뤬 fml8 Фޤ
 (2) ɥ쥹ϿȤϼưǤϹԤʤޤ󡣴ԤؤϿȤ
ꤹ᡼뤬 fml8 ФޤΥ᡼򸫤Ͽ(admin ޥɡ
CUIGUI)򤷤Ʋ

褦ϿκǽʳּưפּưפѤäǤ

confirmation ϿԤԤʤϼΤ褦ˤƲξ硢
̥ɥ饤ФȤյʤ褦ʵ⤷ޤ SPAM 褱ˤʤ뤫̣
ޤ͡

[config.cf]

unsubscribe_command_auth_type      = manual

unsubscribe_command_operation_mode = manual

4. chaddr ޥɤǤ confirmation Ȥ

fml8 Ǥ confirmation ǥեȤεưǤ

 

5. chaddr ϿȤϼưǤ (fml4  closed + confirm )

chaddr  confirmation ĤμưϿǥեȤǤ

[config.cf Υǥե]

chaddr_command_auth_type      = confirmation

chaddr_command_operation_mode = automatic

[config.cf]

chaddr_command_auth_type      = confirmation

chaddr_command_operation_mode = manual

ꤷϡΤ褦ʵưˤʤޤ (1) fml8  confirmation Ԥʤ
ꥯȤǧޤ (2) ɥ쥹ϿȤϼưǤϹԤʤ
ޤ󡣴ԤؤϿȤꤹ᡼뤬 fml8 ФޤΥ᡼
Ͽ(admin ޥɡCUIGUI)򤷤Ʋ

褦ϿκǸ夬ּưפּưפѤäǤ

confirmation ϿԤԤʤϼΤ褦ˤƲξ硢
̥ɥ饤ФȤյʤ褦ʵ⤷ޤ SPAM 褱ˤʤ뤫̣
ޤ͡

[config.cf]

chaddr_command_auth_type      = manual

chaddr_command_operation_mode = manual

6. ưϿȼʾҲƱ˹Ԥʤ

̤Ǥ

 

7. Υ᡼륢ɥ쥹ΤߤưϿǽˤ롣

̤Ǥ

 

8. fml 3.0  auto_regist Ȥ³

fml4 Ǥ auto_regist ꤷ fml 3.0 εưˤʤޤϥ
ꥹȤˤΥꥹȤˤ members եȤȤΤǤ

ޤ顢εǽμפȤϻפޤ󤬡⤷ޤ

򥨥ߥ졼󤹤ˤϡȤꤢ

primary_recipient_map = $primary_member_map

ȤФ褤ȤˤʤޤưϿ˥顼Ǥޤ(Ǥ˥СǤ
)顼򤹤뤿ϿоݤǤ primary_recipient_map ϤΤޤޥ
ΥեȤƻĤºݤꥹ(recipient_maps) members ˤʤ褦
ƤޤΤ褤Ǥ礦

recipient_maps = $primary_member_map

ξ recipients ȤեˤϿȤԤʤƤޤºݤεư
ˤϴطޤꥹȤˤ members Ȥޤ



쥷ԡs [Ϣ]

1. MAINTAINER  elena-admin ʳˤ
2. ⡼ȴԤϣ̤ͣΥСǤʤƤƤ
3. Subject: ˱ꥹȤѹ
4. ꥹȤѹ
5. /etc/group ȿǤͣ
6. (Ƽ)ˤϣ̤ͣεʤ
7. μԤƤѹ

1. MAINTAINER  elena-admin ʳˤ

config.cf  maintainer ѿꤷƲ

maintainer = ɥ쥹

[EXAMPLE]

maintainer = admin@example.co.jp

ꤹ륢ɥ쥹( admin@example.co.jp )ǥ᡼Ȥ褦ˤƤƤ


ʤ᡼륵ФˤäƤϥ᡼Ԥɥᥤʳξ硢
뤳ȤΤդƲ

ñ˥顼᡼ʤɤμѤʤ顢 maintainer ( elena ML ʤ
elena-admin@fml.org ) ΥեѹñǤ /etc/
mail/aliases ѹ뤫 $maintainer_recipient_maps ǹԤʤޤ

Ԥ MTA եѹƤޤԤǤϰ elena-admin Υ᡼
 fml8  fml8  $maintainer_recipient_maps ˤäƺԤ
ޤ

ɥ顼᡼ɤ fml8 Ȥ̣Ǽ㴳԰¤ΤǤ
᡼ȤԥꥹȤ MTA ǤϤʤ fml8 ¦Ǵ뤿ɬפʤΤ
ƤޤϡȤ WWW 󥿡եǥ顼᡼Ȥ
ԥꥹȤꤹȤäꤷǽǤ

2. ⡼ȴԤϣ̤ͣΥСǤʤƤƤ

ʤˤ⤷ʤƤ OK Ǥ fml8 ΥǥեȤΤ褦ꤵƤΤǡ
Τ褦ưޤ

member_maps             =       $primary_member_map
                                $admin_member_maps

3. Subject: ˱ꥹȤѹ

Subject ΥɤˤäƼԤؤ뤳Ȥͤޤ

Ȥ Subject ˡֻפȤ᡼ǤС̥ͣɥ饤Фľܻ
ôͤإեɤƤȸΨ褤Ǥ

¸뤿ˤϡΤ褦 HOOK ͤޤ

$distribute_run_start_hook = q{
        my $config  = $curproc->config();
        my $header  = $curproc->incoming_message_header();
        my $subject = $header->get('subject') || '';

        use Mail::Message::String;
        my $sbj = new Mail::Message::String $subject;
        $sbj->charcode_convert_to_internal_code();
        $buf = $sbj->as_str();

        my $map = '';
        # : Υե EUC-JP ǽ񤤤Ʋ
        if ($buf =~ //i) {
            # 򤦤 info@example.co.jp ΥС
            $map = '$ml_home_dir/recipients.info';
        }
        else {
            # ǥե
            $map = '$ml_home_dir/recipients';
        }

        if ($map) {
            $config->set("recipient_maps", $map);
        }
};

 $ml_home_dir/recipients.info (/var/spool/ml/elena/recipients.info) ˤ
ôͤΥɥ쥹񤫤Ƥޤ

4. ꥹȤѹ

Υ쥷Ԥ⻲ȤƲŪʥåƱǡʸ֤ˤʤ


$distribute_run_start_hook = q{
        my $config  = $curproc->config();

        my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
               localtime(time);

        my $map = '';
        if ($hour > 9 && $hour <= 17) {
            # οͤ
            $map = '$ml_home_dir/recipients.daytime';
        }
        else {
            # οͤ
            $map = '$ml_home_dir/recipients.night';
        }

        if ($map) {
            $config->set("recipient_maps", $map);
        }
};

5. /etc/group ȿǤͣ

fml8  IO  IO::Adapter ˤݲ򤷤ƤޤȤмԤ򥰥롼
fml ˴ޤޤ桼ˤˤϼΤ褦ˤǽʬǤ

[config.cf]

recipient_maps = unix.group:fml

¾ɥᥤˤʤΥФ˥Ȥꥢ꤬ʤ
ǤʤΤդƲ

6. (Ƽ)ˤϣ̤ͣεʤ

εǽɬפʤΤϡ᡼εϿĤ᡼꡼ȤäƤ硢
̤ͣäƤ뵭ɬפʤȻפͤ뤫Ǥ

fml8 ǤϡޤΤȤޤ̤Ǥ

7. μԤƤѹ

fml4 Ǥޤ fml8 Ǥޤ

⤽̤ͣƤ줿̤ͣΥСΤʤΤǰμԤ
ƤѹΤ񤷤ȤǤ



Chapter 18. إåν񤭴

إå FML::Header 饹Υ֥Ȥ˼ǼƤޤʤ
FML::Header  Mail::Header ѾƤΤǡ Mail::Header Υ᥽åɤϲ
ѲǽǤ



쥷ԡs

1. Subject:  [elena:00100] Τ褦ʥĤ
2. Subject: [elena:00100] οʬ(00100)ηѤ
3. Subject: Υο(00100)0ѥǥ󥰤ʤ (strftime(3) 򻲾)
4. Subject: Υʸˤ
5. Subject: Υʸˤ
6. Subject  [] ȤĤ
7. Reply-To: ѥɥ쥹˶ѹ롣
8. Reply-To: Ԥꤹ롣
9. Reply-To: ԡܣ̡ͣפꤹ롣
10. ̥ͣСƤǤС Reply-To: ԡܣ̡ͣפꤹ롣
11. To:  Cc: ˤ fml8 Ƥ̤ͣΥɥ쥹 Reply-To: 
    ꤹ롣
12. פʥإåե X-Face: ä
13. Sender:  X-Sender: ˥ԡ롣
14. Received:  X-Received: ذư롣
15. Υ᡼ Reply-To: ʤСΤޤޤˤ
16. To: Cc: Reply-To: Τޤ̤ˤ롣
17.  Message-ID: ϸͤΤޤ̤
18.  ML ȼ Message-ID: Ĥ
19. X-ML-Info: Ƥꤹ롣
20. ݡȥ᡼ Reply-To: ꤹ롣
21. Υإå̤
22. In-Reply-To:  References: 
23. ⤽⡢إå񤭴ߤ᤿

1. Subject:  [elena:00100] Τ褦ʥĤ

ǥեȤǤϥϤĤޤ󡣤ޤ fml8 Ǥϥ sprintf ʤɤǻȤ
ǻꤹ뤳ȤˤʤäƤޤ (strftime(3) 򻲾)

[/var/spool/ml/elena/config.cf]

# Ĥ롼ɲ
article_header_rewrite_rules    +=      rewrite_article_subject_tag

# ο7
article_subject_tag = [$ml_name:%05d]

 

2. Subject: [elena:00100] οʬ(00100)ηѤ

fml8 Ǥϥ sprintf ǻꤹ뤳ȤˤʤäƤޤ (strftime(3) 򻲾)
ȤУʤ %07 ʤɤȤФ褤Ǥ

[/var/spool/ml/elena/config.cf]

# Ĥ롼ɲ
article_header_rewrite_rules    +=      rewrite_article_subject_tag

# ο7
article_subject_tag = [$ml_name:%07d]

 

3. Subject: Υο(00100)0ѥǥ󥰤ʤ (strftime(3) 򻲾)

[/var/spool/ml/elena/config.cf]

# Ĥ롼ɲ
article_header_rewrite_rules    +=      rewrite_article_subject_tag


article_subject_tag = [$ml_name:%d]

 

4. Subject: Υʸˤ

# Ĥ롼ɲ
article_header_rewrite_rules    +=      rewrite_article_subject_tag

article_subject_tag = [\U$ml_name\E:%05d]

(: εǽȤˤ 2002/10/29 ʹߤ snapshot ȤäƤ)

5. Subject: Υʸˤ

Unix ǤϡƤʸȤΤǡͣ̾⾮ʸǤ礦顢̤
⤷ʤƤ⾮ʸΤϤǤǰΤᡢʸʤ顢Τ褦
Ƥ

# Ĥ롼ɲ
article_header_rewrite_rules    +=      rewrite_article_subject_tag

article_subject_tag = [\L$ml_name\E:%05d]

(: εǽȤˤ 2002/10/29 ʹߤ snapshot ȤäƤ)

6. Subject  [] ȤĤ

YYYYMMDD (20060101) Τ褦դĤʤ顢ʲΤ褦ˤƲ

$distribute_verify_request_start_hook = q{

        use POSIX;
        my $yyyymmdd = strftime("[%Y%m%d]", localtime);
        $config->set('article_subject_tag', $yyyymmdd);

};

ʤ strftime(3) Ǥ͡ʥեޥåȤѤǤޤܤ Unix ޥ˥奢
strftime(3) 򻲾ȡ

7. Reply-To: ѥɥ쥹˶ѹ롣

 HOOK  config.cf κǸ(=cut Ԥ겼¦)˽񤤤Ʋ

$article_header_rewrite_end_hook = q{
    my $ml = $config->{ article_post_address };
    $header->replace('Reply-To', $ml);
};

ʤإå񤭴롼˰ʲ̿ɲäƤƱȤޤ

article_header_rewrite_rules += rewrite_reply_to_enforce_article_post_address

8. Reply-To: Ԥꤹ롣

 HOOK  config.cf κǸ(=cut Ԥ겼¦)˽񤤤Ʋ

$article_header_rewrite_end_hook = q{
    my $cred   = $curproc->credential();
    my $sender = $cred->sender();

    $header->replace('Reply-To', $sender);
};

 

9. Reply-To: ԡܣ̡ͣפꤹ롣

 HOOK  config.cf κǸ(=cut Ԥ겼¦)˽񤤤Ʋ

$article_header_rewrite_end_hook = q{
    my $ml     = $config->{ article_post_address };
    my $cred   = $curproc->credential();
    my $sender = $cred->sender();

    $header->replace('Reply-To', "$ml, $sender");
};

 

10. ̥ͣСƤǤС Reply-To: ԡܣ̡ͣפꤹ롣

 HOOK  config.cf κǸ(=cut Ԥ겼¦)˽񤤤Ʋ

$article_header_rewrite_end_hook = q{
    my $ml     = $config->{ article_post_address };
    my $cred   = $curproc->credential();
    my $sender = $cred->sender();

    if ($cred->is_member($sender)) {
        $curproc->log("member");
        $header->replace('Reply-To', "$ml, $sender");
    }
};

 

11. To:  Cc: ˤ fml8 Ƥ̤ͣΥɥ쥹 Reply-To: 
ꤹ롣

ˤưǤ褦˵鼫ʬΤʤɥ쥹Ȥ
ȤǤ

إå˽񤤤ƤƤΥɥ쥹ֿͤ¿ΤǡäưͭѤ
뤳Ȥޤ

ϡʣǤ HOOK Ǽ¸Ǥޤ HOOK  config.cf κǸ
(=cut Ԥ겼¦)˽񤤤Ʋ

$article_header_rewrite_end_hook = q{
    my $to   = $header->get('to');
    my $cc   = $header->get('cc');
    my $addr = "$to, $cc";

    use Mail::Address;
    my (@addrlist) = Mail::Address->parse($addr);

    my $reply_to = '';
    for my $a (@addrlist) {
        my $_addr = $a->address;
        if ($curproc->is_fml8_managed_address($_addr)) {
            $reply_to .= $reply_to ? ", $_addr" : $_addr;
        }
    }

    $header->replace('Reply-To', $reply_to) if $reply_to;
};

 

12. פʥإåե X-Face: ä

unsafe_header_fields  += x-face

13. Sender:  X-Sender: ˥ԡ롣

Ƥ줿᡼ Sender:  X-Sender: ˥ԡƤޤ塢ɤ
Sender: ѹ줿ȤƤ⡢ꥸʥԤʬȤȤǤ

äȤ Sender: Ĥʤͤ⤤Τǡä᡼ФƤбǤޤ
 Sender: ʤʤ From:  X-Sender: ˥ԡƤȤäʸɬ
⤷ޤ

$article_header_rewrite_end_hook = q{
   my $header   = $curproc->article_message_header();
   $header->add('X-Sender', $header->get('Sender'));
};

14. Received:  X-Received: ذư롣

X-Received: إԡ Received: äޤ

$article_header_rewrite_end_hook = q{
   my $header   = $curproc->article_message_header();
   $header->add('X-Received', $header->get('Received'));
   $header->delete('Received');
};

 

15. Υ᡼ Reply-To: ʤСΤޤޤˤ

config.cf 

article_header_rewrite_rules    -=      rewrite_reply_to

ȤƤ

ǥեȤǤ Reply-To: Τʤ᡼إåФReply-To: ѥɥ쥹פ
ɲäޤ $article_header_rewrite_rules ˤ rewrite_reply_to ̿
ˤޤäơ롼뤫ƤޤСReply-To: Ф񤭴
롼뤬̵ȤʤפȤ櫓Ǥ

16. To: Cc: Reply-To: Τޤ̤ˤ롣

쥷ԤƱǤ

To:  Cc: ϸ̤ǤΤ config.cf 

article_header_rewrite_rules    -=      rewrite_reply_to

ȤǽʬǤ

17.  Message-ID: ϸͤΤޤ̤

̤ǥեȤεưǤΤǡʤˤ⤹ɬפϤޤ

18.  ML ȼ Message-ID: Ĥ

üʼפǤǽǤ

 

[/var/spool/ml/elena/config.cf]

$article_header_rewrite_end_hook = q{
        my $header = $curproc->article_message_header();

        # Message-Id  (ŬǤ)
        my $ml_name   = $config->{ ml_name };
        my $ml_domain = $config->{ ml_domain };
        my $new_id    = sprintf("%s-%d\@%s", $ml_name, $$, $ml_domain);

        # X-Message-Id ˥ꥸʥ Message-Id ХååפƤ
        $header->add('X-Message-Id', $header->get('Message-Id'));

        # Message-Id 촹
        $header->replace('Message-Id', $new_id);
};

ȤȤ˿̤ͣͷӿǻϤ᤿äͥ

19. X-ML-Info: Ƥꤹ롣

褦˥᡼إåͤꤷޤ

$article_header_rewrite_end_hook = q{
        my $header = $curproc->article_message_header();
        $header->replace('X-ML-Info', "oresama id");
};

 

20. ݡȥ᡼ Reply-To: ꤹ롣

̤Ǥߤ fml8 Ǥ

outgoing_mail_header_reply_to = ɥ쥹

ǥݡȥ᡼ Reply-To: ǤΤǤϺμְäƤ
 _o_

21. Υإå̤

 fml8 ǤϡΤ褦 HOOK Ǽ¸뤷ޤ

    $article_header_rewrite_end_hook = q{
        my $header       = $curproc->article_message_header();
        my (@tags)       = $header->tags();

        # ̤إåեɤ
        my (@valid_tags) = qw(to from reply-to subject date message-id);

        for my $tag (@tags) {
            my $valid = 0;
          SCAN:
            for my $v (@valid_tags) {
                if ($tag =~ /^$v$/i) {
                    $valid = 1;
                    last SCAN;
                }
            }
            unless ($valid) {
                $header->delete($tag);
            }
        }
    };

ѿ椷ۤɡפǤ礦йͤޤ

22. In-Reply-To:  References: 

ؤֿǤˤؤ餺 In-Reply-To:  References: ʤ᡼ä
ͤ¤ˤޤ򤵤ȡĤ꤬ޤ

ˡ᡼֤ΥåɴطʬʤʤΤǸŤ餤Ǥˡ̾綠
ä᡼̵(ʤ)Τǡä᡼ϡ̤Υ᡼פǤϤʤ
SPAM ᡼פʤɤβǽ⤤Ȥߤʤޤ

Subject ֻΰ( Re: ʤ)ʤIn-Reply-To: ޤ References: إå
ʤݤ HOOK Ǥ

    $article_post_verify_request_end_hook = q{
        my $header      = $curproc->incoming_message_header();
        my $subject     = $header->get('subject')     || '';
        my $in_reply_to = $header->get("In-Reply-To") || '';
        my $references  = $header->get("References")  || '';

        my $_subject = new Mail::Message::Subject $subject;
        if ($_subject->has_reply_tag()) {
            unless ($in_reply_to || $references) {
                $curproc->log("reject invalid reply message");
                $curproc->stop_this_process();
                $curproc->policy_reject_this_message();
            }
        }
    };

ݤݤΥ᡼ԤäƤޤ⤷顼åԤ֤
ñ̵뤹Ǥʤ policy_reject_this_message 
policy_ignore_this_message ˤƤ

23. ⤽⡢إå񤭴ߤ᤿

use_article_header_rewrite  no ˤƽ񤭴ǽΤߤƲ

[/var/spool/ml/elena/config.cf]

use_article_header_rewrite = no

 



Chapter 19. ʸν񤭴

쥷ԡs

1. ᡼ʸˡ֢ءפȰ̾ʸ򤤤줿

1. ᡼ʸˡ֢ءפȰ̾ʸ򤤤줿

̤ͣϡְĤε̤ͣμפ륵ӥǤ

̥ͣɥ饤ФϰĤεȼԤΥꥹȤ MTA ϤѤͤޤΤ
İĤεۤʤΤˤȤȤǤޤ

ۤʤ¿εΤϰ̤ĥ᡼뤳ȤѤޤ󡣤ʤ
̤Σ̥ͣɥ饤ФȤʤɤǤ

äȤСꥹȤδ fml8 ǹԤʤȤˤϰ̣뤫⤷ޤ


̤Ǥ



Chapter 20. ޥɤγĥ

ǥ: ȼ help ޥɤ

elena ̤ͣȼ help ޥɤ뤳Ȥͤޤ

ȼ help ޥɤϡȼΥ⥸塼 help.pm Ѱդơ̥ͣΥ饤
֥ѥؤ OK ǤƱ̾Υ⥸塼ʤĤޤƱޥ)Ǥ⡢
ѥ̤ͥˤäơȼ⥸塼ΤۤȤޤ

⥸塼ϡꥸʥ help.pm 򻲹ͤˤơȼ help.pm äƤ
ơʲΥѥˤƤ

: elena ̤ͣξ

/var/spool/ml/elena/local/lib/FML/Command/User/help.pm

⥸塼ɤݤˤϡ local/ ѥΥ⥸塼뤬ͥ褵Τǡ
help ޥɤαˤϡΥ⥸塼 help.pm Ȥޤ


                                  Caution                                   

¾Υե뤫饫åȡڡȤݤˤϡ package ֤̾˵Ĥ 
                                                                  



쥷ԡs

ޥɰ

1. ޥɥ᡼ʤɤֻ Reply-To: ǤϤʤ From: 
2. help ʤɤΥå򥢥åץ졼ɤ
3. help åθե򥫥ޥ롣
4. confirmation å򥫥ޥ
5. news Ȥե֤ޥɤ
6. mget ޥɤΥե⡼ɤΥǥեȤѹ
7. get ޥɤ mget mp Ʊ̣ˤ
8. command status report 
9. ޥɥ᡼Ƥƻ뤷

1. ޥɥ᡼ʤɤֻ Reply-To: ǤϤʤ From: 

ޥɥ᡼(From:)ֻ֤ΤǥեȤεưǤ

2. help ʤɤΥå򥢥åץ졼ɤ

fml8 򥢥åץ졼ɤмưŪ˥åץ졼ɤޤ fml4 Ȱۤʤ fml8
Ǥ help ޥɤΥåƥץ졼ȤϼΤ褦ʥѥ¸ߤ뤫Ǥ

/usr/local/share/fml/$VERSION/message/euc-jp/user/help
/usr/local/share/fml/$VERSION/message/us-ascii/user/help

̤ͣΥۡǥ쥯ȥ help ե뤬Ϥ줬 help ޥ
ֻ˻ȤƤޤä help եʬѰդƤʤ鼫ʬԽ
Ƥ

3. help åθե򥫥ޥ롣

fml8 Ǥ help ޥɤΥåƥץ졼ȤϼΤ褦ʥѥ¸ߤޤ
ԽƤޤȤΤơ򤹤ȥС󥢥åפ򤷤
ݤѹ̵ˤʤäƤޤޤ

/usr/local/share/fml/$VERSION/message/euc-jp/user/help
/usr/local/share/fml/$VERSION/message/us-ascii/user/help

ͣȼ help åϣ̥ͣۡǥ쥯ȥβˡlocal/share/message/
/פꡢβˤͭˤʤޤ

[Example]

/var/spool/ml/elena/local/share/message/euc-jp/user/help
/var/spool/ml/elena/local/share/message/us-ascii/user/help

ˤΥե뤬ȤΤǡС󥢥åפƤƤѤޤ󡣤
Ǥ

ʤ̤ͣΥۡǥ쥯ȥ help ե뤬Ϥ줬 help ޥɤ
ֻ˻ȤƤޤ(ͥ褵ޤ)ä help եʬѰդƤ
鼫ʬԽƤξ⡢ˤΥե뤬ȤΤǡС
󥢥åפƤƤѤޤ󡣵դ˸С줬Ǥ

4. confirmation å򥫥ޥ

help åΥޥƱͤǤΤǡ路쥷Ԥ򻲾ȤƲ


/usr/local/share/fml/$VERSION/message/euc-jp/command/confirm
/usr/local/share/fml/$VERSION/message/us-ascii/command/confirm

5. news Ȥե֤ޥɤ

Σ̤ͣκǿ󤬽񤭹ޤƤ $ml_home_dir/news Ȥե뤬Ȥ
ޤ礦̤ͣΥСʤïǤ󤻤褦ˤä
ͤޤ

ִñʺ help ޥɤѤ뤳ȤǤ:) Ȥ
FML::Command::User::help ⥸塼( /usr/local/lib/fml/$VERSION/FML/Command/
User/help.pm )򥳥ԡ FML::Command::User::news ( /usr/local/lib/fml/
site_local/FML/Command/User/news.pm ) ⥸塼ĤäƤơ
news.pm  help Ȥʸ news ѤǤ

[]

... ά ...

sub process
{
    my ($self, $curproc, $command_args) = @_;

    $self->send_user_xxx_message($curproc, $command_args, "news");
}
... ά ...

 the Section called ǥ: ȼ help ޥɤ  the Section
called ޥɤγĥ: ޥɥ᡼ξ in Chapter 41 ⻲ȤƤ

6. mget ޥɤΥե⡼ɤΥǥեȤѹ

ޤΤȤǤޤ

ĤΤȤget ޥɤ mget ޥɤƱǤơޤΤȤ get
ޥɤΥե⡼ɤѹǤޤ

7. get ޥɤ mget mp Ʊ̣ˤ

fml8 ǤϥǥեȤǡΰ̣(MIME/Multipart ⡼)ˤʤäƤޤ

Τˤϡget  mget Ʊޥɤǡget ޥɤΥե⡼ɤ (ޤ
Ȥ) MIME/Multipart ޤ

8. command status report 

ޤΤȤե륿ˤĤƤ off/on Ǥޤ̤ˤϽޤ

9. ޥɥ᡼Ƥƻ뤷

(1)  perl ǲù롣

(2) ޥɥ᡼뼫ΤΥԡȤ롣ȤСޥɥ᡼Ȥ
ΤȤ˴ԤɲäƤȤäǤ

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



admin ޥ

1. admin ޥɤǣ̤ͣκƽ򤷤
2. admin ޥɤǣ̤ͣΥСꥹȤ쵤˺/Ͽ
3. admin add  welcome 
4. admin add ϿǤ᡼륢ɥ쥹ϰϤ¤
5. ѤΥޥɤ˺줿

1. admin ޥɤǣ̤ͣκƽ򤷤

ʤȤϽޤ makefml (CUI) ¹Ԥ븢¤Τͤǲ


2. admin ޥɤǣ̤ͣΥСꥹȤ쵤˺/Ͽ

ޤΤȤʥޥɤϺäƤʤΤǡadmin useradd ɥ쥹פ
admin userdel ɥ쥹פϢͤˡޤ _o_

뵤ϤޤͤǤ

褦ϡ֥ꥹ.xls ե򡢤ڤäȤϤȤפǤ͡

3. admin add  welcome 

̤Ǥ

 

4. admin add ϿǤ᡼륢ɥ쥹ϰϤ¤

᡼륢ɥ쥹ΤɽϰϤ¤Ƥޤ FML::Restriction::Base ߤ


subscribe ǽʿͤΥɥᥤ˸¤ꤿȤäǽ̤Ǥ( 
HOOK Ȥнޤ)

5. ѤΥޥɤ˺줿

̤ˡϤʤΤǤƤ fml8 ΥɥȤɤǲ :-)

http://www.fml.org/software/fml8/



Chapter 21. ե륿

쥷ԡs

1. ե륿ƥȤʤȼΥե륿ꤷ
2. Υ᡼륢ɥ쥹ݤ
3. message/partial ե륿
4. ʤźեե뤬ĤƤ᡼ϵݤ HOOK
5. ե륿Ƥˡ顼᡼ɤ֤
6. spamassassin  SPAM ᡼̵뤹롣
7. spamassassin  SPAM ᡼Ƚꤷ顢إå X-Spam-Status: Yes Ĥ
    롣
8. SPAM кȤơTo:  Cc:  ML ̾ɬܤȤ
9. ͣȼ Message-ID: Ĥƶ

1. ե륿ƥȤʤȼΥե륿ꤷ

fml8 Υե륿ƥѲǽʥե륿

/usr/local/etc/fml//defaults/$VERSION/default_config.cf.ja

ɤʬޤ

¢ե륿ǼƤʤƤΥե륿
article_post_verify_request_end_hook article_filter_start_hook
article_filter_end_hook article_post_run_start_hook ΤŤ줫 HOOK Ǥ
Ф褤Ǥ礦

$article_filter_start_hook = q{
        my $header = $curproc->incoming_message_header();
        my $body   = $curproc->incoming_message_body();

        if () {
                $curproc->policy_reject_this_message();
        }
};

Τ褦˽񤱤ɤȤ⤤ޤե륿νˤĤƤϥΤ䡢
ʲΥ쥷Ԥ⻲ȤƲ

2. Υ᡼륢ɥ쥹ݤ

ȤΥɥᥤ(\S+\@example.co.jp)ϤȤäե륿Τ
ȤǤ¢ե륿ΰȤƼ褦ȹͤƤޤǰʤ̤
 _o_

3. message/partial ե륿

mime component filter ǡmessage/partial * rejectפꤷƲ

[/usr/local/etc/fml/mime_component_filter]

# allow only text/plain messages.
message/partial *               reject
text/plain      *               permit
text/html       *               reject
multipart/*     !text/plain     reject

: Υե륿̤ͣȿǤޤ

4. ʤźեե뤬ĤƤ᡼ϵݤ HOOK

fml8 ϡ餫Ϥ줿åϤ˺ Mail::Message
֥ȤηǻäƤޤǡMIME/Multipart γʬΥإå
ơɽǽ˳ǧФ褤Ǥ

HOOK ǤʤȤ/ޤϼ̤ǤɤǤ⡢ޥå硢
stop_this_process() ̿ǡʾνߤƤޤޤǤϲ
顼å֤ȤƤʤᡢ̤ȤơΥå̵뤵
ƽˤʤäƤޤ

ֻ򤷤Ƥʤ顢 reply_message() ǡֻ֤ƤƤĤ
֤󥦥륹ȤʤΤֻ򤷤ʤۤɤǤ礦

.exe ʤΥեĥҤ˥ޥå뤫Ĵ٤㡣Τ fml8 (2004/12/08
)ʤ顢ʴ

$distribute_verify_request_start_hook = q{
    my $msg = $curproc->incoming_message() || undef;
    for (my $m = $msg; $m ; $m = $m->{ next } ) {
        my $hs = $m->message_fields() || '';
        if ($hs =~ /filename=.*\.(com|vbs|vbe|wsh|wse|js|exe|doc|rtf)/o) {
            $curproc->log("attachment \.$1 found");
            $curproc->stop_this_process();
        }
    }
};

2004/12/08 ʹߤ fml8 ʤ顢ʤ󤸡

$distribute_verify_request_start_hook = q{
    my $msg  = $curproc->incoming_message() || undef;
    my $list = $msg->message_chain_as_array_ref();
    for my $m (@$list) {
        my $hs = $m->message_fields() || '';
        if ($hs =~ /filename=.*\.(com|vbs|vbe|wsh|wse|js|exe|doc|rtf)/o) {
            $curproc->log("[new] attachment \.$1 found");
            $curproc->stop_this_process();
        }
    }
};

̲ȤƤϡ

Content-Disposition: attachment;

Ȥɽˤʤ뤳ȤˡäȤƤ⤢ޤ

$distribute_verify_request_start_hook = q{
    my $msg = $curproc->incoming_message() || undef;
    for (my $m = $msg; $m ; $m = $m->{ next } ) {
        my $hs = $m->message_fields() || '';
        if ($hs =~ /Content-Disposition:.*attachment;/o) {
            $curproc->log("attachment \.$1 found");
            $curproc->stop_this_process();
        }
    }
};

2004/12/08  fml8 ʹߤʤ顢ʤ󤸡

$distribute_verify_request_start_hook = q{
    my $msg  = $curproc->incoming_message() || undef;
    my $list = $msg->message_chain_as_array_ref();
    for my $m (@$list) {
        my $hs = $m->message_fields() || '';
        if ($hs =~ /Content-Disposition:.*attachment;/o) {
            $curproc->log("[new] attachment \.$1 found");
            $curproc->stop_this_process();
        }
    }
};

5. ե륿Ƥˡ顼᡼ɤ֤

ǥեȤǤ

use_article_filter_reject_notice        =       yes
article_filter_reject_notice_recipient  =       maintainer sender

ȤʤäƤޤĤޤꡢ (1) 顼᡼֤(yes) (2) ֤ϣ̤ͣδ
Ԥξ(maintainer sender) Ǥ

( From: Υɥ쥹 )ˤˤ

article_filter_reject_notice_recipient  =       sender

ȤƤ

̤ͣδԤ( From: Υɥ쥹 )ξ֤ˤ

article_filter_reject_notice_recipient  =       maintainer sender

ȤƤ

⤽⥨顼᡼֤ʤ褦ˤˤϡ

use_article_filter_reject_notice        =       no

ȤƤ

6. spamassassin  SPAM ᡼̵뤹롣


                                  Caution                                   

⤽ spamassassin Ӥ¢ե륿ΤǤ򤢤ƻȤ諸
ʤǤ                                                                


1. ¢ե륿Ǥ

use_article_spam_filter         =       yes
article_spam_filter_drivers     =       spamassassin

2. HOOK ǤʤȤ/ޤϼ̤Ǥ

$distribute_verify_request_end_hook = q{
        my $spamassassin = '/usr/pkg/bin/spamc -c';

        use FileHandle;
        my $wh  = new FileHandle "| $spamassassin";

        if (defined $wh) {
                $wh->autoflush(1);
                my $msg = $curproc->incoming_message();
                $msg->print($wh);
                $wh->close();
                if ($?) {
                        $curproc->log("spam: (code = $?)");
                        $curproc->stop_this_process();
                }
        }
};

7. spamassassin  SPAM ᡼Ƚꤷ顢إå X-Spam-Status: Yes Ĥ
롣

$distribute_verify_request_end_hook = q{
        my $spamassassin = '/usr/pkg/bin/spamc -c';

        use FileHandle;
        my $wh  = new FileHandle "| $spamassassin";

        if (defined $wh) {
                $wh->autoflush(1);
                my $msg = $curproc->incoming_message();
                $msg->print($wh);
                $wh->close();
                if ($?) {
                        $curproc->log("spam: (code = $?)");
                        my $hdr = $curproc->incoming_message_header();
                        $hdr->add('X-Spam-Status', 'Yes');
                }
        }
};

äȥȥåǤưޤ

8. SPAM кȤơTo:  Cc:  ML ̾ɬܤȤ

HOOK ǹԤʤʤ鼡Τ褦ˤʤޤ

$article_filter_end_hook = q{
        my $header = $curproc->incoming_message_header();
        my $addr   = $config->{ article_post_address };
        my $to     = $header->get('To') || '';
        my $cc     = $header->get('Cc') || '';
        my $to_cc  = "$to, $cc";
        my $found  = 0;

        use Mail::Address;
        my (@addrlist) = Mail::Address->parse($to_cc);
        for my $a (@addrlist) {
                my $_addr = $a->address();
                if ($_addr =~ /^$addr$/i) {
                        $found = 1;
                }
        }

        if ($found) {
                $curproc->log("article_post_address found in header");
        }
        else {
                $curproc->log("article_post_address not found in header");
                $curproc->policy_reject_this_message();
        }
};

9. ͣȼ Message-ID: Ĥƶ

̤Ǥ

HOOK ǤʤȤ뤳ȤϽޤֵ ML ȼ Message-ID: Ĥ
Ȥ쥷Ԥ򻲾ȤƲ

fml4 ǤϡIn-Reply-To:  References: ĤƤʤ MUA 뤿˥
ɤޤʤפȤ褹뤿ˡͣȼ Message-ID: Ĥ
ȤǽޤǤϡä MUA 䤨Ǥ礦
 fml8 ǤϹθʤȤˤޤ



Chapter 22. åγĥ

ǥ: ͣȼΥå

elena ML (ML Υۡब /var/spool/ml/elena)ξ硢

/var/spool/ml/elena/local/share/message/euc-jp/饹

˥եĤäƲ

줬åΥƥץ졼ȤǤեեޥåȤ /usr/local/fml/
share/fml/ β򻲹ͤˡԡڡȤԽƤ

­: ƴؿǤϡ_arg_ѿ̾פͤƥϥååؿ
ޤơåǤϡ$_arg_ѿ̾פȤüѿ̾Ȥ
Ϥ줿ϥåִͤΤ֤åǤ

ʤƥץ졼Ǥϡ config.cf ѤǤѿ(e.g. $ml_name )Ȥޤ




Chapter 23. WWW ǣ̤ͣε

ǥեȤ fml8 ϥ桼 fml θĿΰ

~fml/public_html/fml/mlarchive/ɥᥤ̾/ͣ̾/

ʲ˵ HTML Ƥޤ

WWW Ф򤹤У̤ͣεǤޤĿͥǥ쥯ȥǤ
褦 apache  suexec 򤹤ʤꡢΥǥ쥯ȥʤꡢ
ʤꤷƲ



쥷ԡs

1. HTML 줿ʤ
2. HTML 줿 URL  ~fml ʤǤ
3. Ѥ椫 html ʤä
4. HTML ʤ
5.  HTML  WWW Ф fml8 ΥФ㤦ΤǤ

1. HTML 줿ʤ

apache  suexec 򥵥ݡȤ뵡ǽʤ ~fml/public_html/ ʲϥ󥿡
ͥåȤ鸫ʤϤʤΤǡǥեȤǤʤȤ⤤ޤ

Ǥ⡢⤽⵭ HTML ʤۤǤ

        [config.cf]

        use_html_archive        =       no


2. HTML 줿 URL  ~fml ʤǤ

apache  Alias 

        Alias /mlarchive/ "/home/fml/public_html/"


Ȥ OK ȻפΤǤ줸ܤǤ͡

3. Ѥ椫 html ʤä

Ϥᤫ HTML 줿ѰդƤޤ⤽ǥեȤ HTML 
ƤΤǡ HTML ǽ̵ˤƤʤС뤿 WWW 
ФꤹɤǤ

 HTML ̵ˤƤơդͭˤʤä礬Ǥ
fmlhtmlify ޥɤǵ HTML 򤹤뤳ȤǤޤ

% fmlhtmlify Τǥ쥯ȥ HTML֤ǥ쥯ȥ



% fmlhtmlify /var/spool/ml/elena/spool ~fml/public/fml/mlarchive/ɥᥤ/ͣ

4. HTML ʤ

fmlhtmlify ޥɤȤäƲ

% fmlhtmlify Τǥ쥯ȥ HTML֤ǥ쥯ȥ



% rm -fr ~fml/public/fml/mlarchive/ɥᥤ/ͣ
% fmlhtmlify /var/spool/ml/elena/spool ~fml/public/fml/mlarchive/ɥᥤ/ͣ

5.  HTML  WWW Ф fml8 ΥФ㤦ΤǤ

 1 Ū˵ž뤳ȤǤ

% rsync -av ~fml/public/fml/mlarchive/ɥᥤ/ͣ ¾Υޥ:/ѥ/

rsync over ssh ưǼ¹ԤˤϾü ssh ꤬ɬפǤΤդ


 2 ¾Υޥ¦ HTML ¹Ԥ륳ޥ(Ȥ mhonarc )ųݤƤ
ȤΤǤ

 3 Ȥ WWW ФΥե륷ƥ NFS ͳǥȤΤ⤢
ޤNFS Ф󥿡ͥåȤ鸫ˤ褦ʥͥåȥ
Ϥޤ󡣹ɤͤɬפޤ(΢ͥåȥͳǥ
߷פޤ礦)

 4  iSCSI Ȥǥд֤ĤʤܤϤäȤޤ(NetBSD 4.0
 iSCSI target ˤʤʤ)



Chapter 24. ̤ͣäζ(å) (Thread Tracking System ?)

fml8 ռϡ֣̤ͣ餻顢åɤΤޤȤ᤯餤äߤ
ȤȤǤƤС knowledge database Τ褦ʤΤǤ

ĤޤڤǤ뤫˥Ǥ :-) 翿ܤ knowledge ǡ١
åȥƥȤȲΥƥƤ餷Τǡʤ
ߤޤ(ĿͤǻȤʤȤ櫓ʤ)

ȥ١ʤϱѥ١ǹͤʤ顢긽ŪˡϡΤѤ:)
thread tracking system ǥΥϥĤߡʬȿ˵Ƥѷϲ
򸫵뤳ȤǤʳäơϤŬ knowledge base 
ticket system /뤳ȤǤ˰㤤ޤ󡣤󡢤ʤ
ǽʬͭѤȤ⤢ꤨޤ:D

Problem Report System ΤޤȤˤĤƤϿ򻲾ȤƲ



̤ͣξ

̣ä򤷤̤̤ͣȤơ¿ξأ̤ͣ˥᡼ꤲ٤Ȥϡ֤
褷פȤ֤꤬뤱ɲˡʬʤΤꤿ
פȤȤǤäơΰ̣ problem report ȤޤơФ
ƥեåפʤ졢줿ꡢ̤Τޤ֤줿ꤹ뤳
ˤʤޤ

ǥ벽ȡ

open    ᡼뤬Ƥ줿
б  ïֻ򤷤顢б
closed  ˤĤƲ褵줿ȽǤ줿

᡼     open
                    
եåע  б
                    
Ƚ        closed

֤פȽǤϡʤ˼ưǤޤ٤Ͽʹ֤ʤ̵
礦餯ȽΥǥ졼ʤǤ̿ɬפޤ

ǤĤ餤 [16] ȤǤï(ʹ)ȽǤɬפ櫓Ǥ
οͤоݤΣ̤ͣǤβäƤˤĤơ٤򤷤Ƥɬפ⤢


ܸΤθƵۤääǧǤФ褤ΤǤۤɴñǤϤ
ޤ󡣤äȤŬʥɡֽλȤޤפʤɤˤȽ
Ǥ뤳ȤϤǤʤϤʤǤ礦Ͼ TODO Ǥ

λΡŪʡץڥ졼 WWW ᡼ǹԤʤȤꤷƤޤ
ޤ֥饦ξ뤫᡼ subject ʸ˽λ̣륭
ळȤǹԤʤޤ



fml8 (minimal_states ǥ)åȥƥ



open ... åֹ餷Τޤޤʤ᡼뤬Ƥ줿鼫ưŪ open

going ... ïֻ򤷤顢б

closed ... close ʤ줿顢



close ϰʲΤ줫μ¹ԤΤϤ

(1) Subject:  close ǤϤޤ롣

(2) ᡼ʸιƬ close ǤϤޤ롣

Ƭζ̵뤵ޤɽǤ \s*close Ǥ multipart ᡼ξ
ǽ text/plain ѡȤιƬ close ǻϤޤǤ

(3) ᡼إå X-Ticket-Pragma: close ꤵƤ



̤ʥإå

X-Ticket-Pragma: ignore

˥åȤƤޤ󡣤٤ƤΥåȤ˴ؤޤ

X-Ticket-Pragma: close

åȤ򥯥ޤ



åɥƥΥǡ١

ʲΤ褦ʥǡ١饹åɥƥΥǡ١ϹƤޤ


ե̾      Ƥ
----------------------------------------------
status          open / close
ml_name         elena
article_id      100
thread_id       elena/100
from            إå From: (᡼ɥ쥹η)
sender          إå Sender: (᡼ɥ쥹η)
x_sender        إå X-Sender: (᡼ɥ쥹η)

ȤСBSD Ǥ status.db Ȥä .db Υե뷲ΥåȤȤʤ櫓
Ǥ

Υե뷲ϳƣ̤ͣΥۡǥ쥯ȥǤϤʤ

$ml_home_prefix/@db@/ͣ̾/


/var/spool/ml/@db@/ͣ̾/

Ȥǥ쥯ȥ˺Ƥޤϡ(Υɥᥤ [17] ˤ)ͣ
ߤ˻ȤĥꤷƤޤȤСsupport/100 ε sales/98
ȯȤƤפȤäưŪˣ̤ͣ뵡ǽ뤿
Ǥǰʤ顢ߤΤȤ̤Ǥ

åɤΥǡ١ϡּ article_id  thread_id  primary keyפǤ
Ū˽񤯤ȰʲΤ褦ˤʤޤ

[thread .db]

        aritcle_id      =>      thread_id

[article .db]

        thread_id       =>      article_ids

        Example:        elena/100       => 100 101 103 105

[date .db]

        aritcle_id      =>      unix_time

[sender .db]

        article_id      =>      from

[message_id .db]

        mesasge_id      =>      thread_id

[status .db]

        thread_id       =>      status

[index .db]

        thread_id       =>      "$ml_name " *

        Example: support/100 => support sales

IV. 

Table of Contents
25. ΰ
26. ΥХåå
27. 
28. Фΰۤ



Chapter 25. ΰ

򸫤

% makefml log ͣ̾
% fml     ͣ̾ log

ǡǶΥ(ǥեȤǤ 30 ʬ)ɽޤ

GUI 򸫤뤳ȤǽǤ(΢Ǥ log ޥɤ¹ԤƤ)



Υɽ

fml8 ʳ̤Υޥɤȼ CGI ʤɤ fml8 CUI ƤӤ򤵤
 STDERR ʤɤ fml8 ΥȤꤿȤޤ

äϡ

% makefml --log-computer-output ޥ ͣ̾
% fml --log-computer-output     ͣ̾ ޥ

Ȥȡޥɤη̤ɸ( STDOUT )ء STDERR ؽϤޤ

ȤмΤ褦ˤʤޤ

% fml --log-computer-output elena@fml.org list
rudo@nuinui.net
1070109341  info lock channel=recipient_map_modify
1070109342  info unlock channel=recipient_map_modify

ʥǥեȡˤǤϡֻ(unix time)Υ٥(info,warning,error
)åפȤʤäƤޤ

ޥɥ饤󥪥ץ --log-computer-output ϡ config.cf ʤɤ

use_log_computer_output = yes

Ȼꤹ뤳ȤǤƱ̤Ȥʤޤ

ʤ顢ѿ yes ˤȡmakefml  fml Ǥʤ䥳ޥ
ɥ᡼Υץ STDERR ˥ϤƤޤޤΤդƤ

åΥ塼󥰤¤ϥեޥåȤϡ perl module Τʤ
˲ƤޤΥ⥸塼(ǥեȤ FML::Log::Print::Simple)
config.cf  log_computer_output_engine ѿȤѹǽǤϤ
ϡʬѤΥ⥸塼ꡢ򡢤ѿ˻ꤷƤ
塼 FML::Log::Print::Simple 򻲹ͤˡhack ƤߤƤ:)



쥷ԡs

1.  fml Υ顼Ф
2. Ť򸫤
3. ˽椵
4. ĥĤιԤ򸫤
5. ΥԡȤĤĸĥꡢĥ顼Ԥ
6. Ťեõ

1.  fml Υ顼Ф

fml4  daily.pl ˤΤ̤Ǥ

Ǥϥե grep Ƥ

2. Ť򸫤

fml8 ϥǥեȤǤϣ̤ͣΥۡǥ쥯ȥˤեˤҤ񤭹
Ǥޤ̤ͣϤޤäεϿ٤Ƥˤޤ

Unix Υϰָ˺ƤäƤޤΤǤޤŤɤ


newsyslog ʤ(OS ˤäƻȤߤϰۤʤ) OS °ΥƥबŤξõ
Ƥޤ餫ᡢΥѥ᡼Ĵ٤¸褦ˤ
ޤ礦

3. ˽椵

Unix Ǥ syslog Ȥᥫ˥ǥƤޤsyslogd Ȥä
å /etc/syslog.conf ˽եؤν񤭹ߤ¾ۥȤؤžʤ
ޤ

[/etc/syslog.conf]

# ٤ƤΥ /var/log/messages ؽϤ
*.*             /var/log/messages

fml8 ΥϥǥեȤǤϳƣ̤ͣΥۡǥ쥯ȥˤեؽ񤭹
ޤޤ syslog ؽϤ뤳Ȥޤ

[/var/spool/ml/elena/config.cf]

log_type        =       syslog

ҤΡƤϿ syslog Ȥ碌 /var/log/messages ˥ƥ
Υ fml Υ򽸤뤳ȤȤ櫓Ǥ

4. ĥĤιԤ򸫤

fml8 Ȥ Unix ޥɤλȤäǤ

֥ѥפ˥ޥååɽʤ鼡Τ褦ˤޤ

% tail -F /var/spool/ml/elena/log | grep 'ѥ'

 

5. ΥԡȤĤĸĥꡢĥ顼Ԥ

fml8 Ȥ Unix ޥɤλȤäǤ

 

% tail -F /var/spool/ml/elena/log | grep 'ѥ' | tee ե

 

6. Ťեõ

fml4  newsyslog ǽΤ̤Ǥ



Chapter 26. ΥХåå

fml8 ˤ󤷤Ƥϡ(Ǿǣ)Υǥ쥯ȥʲΥեХå
åפƤɤǤ

/usr/local/etc/fml/
$ml_home_prefix (Ȥ /var/spool/ml/ɥᥤ󤴤Ȥ˰ۤʤޤ)

ХååפȡեʤɤΤޤ
ƤΤդƲ

ޤMTA ХååפƤȤ褤Ǥ礦 Postfixʤ /etc/postfix
Ǥ

ޤȤȡΣ(Τˤϣ fml8 ɳƤɥᥤο)Υǥ쥯
ȤȤˤʤޤ

/etc/postfix/
/usr/local/etc/fml/
$ml_home_prefix (Ȥ /var/spool/ml/ɥᥤ󤴤Ȥ˰ۤʤޤ)

ʲǡ⤦ܤޤ



fml8 Хååפ

fml8 ˴ؤƤϡΣĤΥǥ쥯ȥʲΥեХååפƤ
ɤΤǤˡȵեʤɤΤޤޤ
ƤΤǡ礭Ǥ

/usr/local/etc/fml/
$ml_home_prefix (Ȥ /var/spool/ml/ɥᥤ󤴤Ȥ˰ۤʤ)

ǥΰ¤򺣤ǤϡⵤˤγؤХååפƤۤ
褤Ȥ⤤ޤݤʤե륷ƥΤХååפƤΤ
Ȼפޤ

ʤ顢ǤĤȤˤϡΥǥ쥯ȥ
̵뤷ƥХååפ뤫ʲγƥե̤˥ХååפƤ褦
ޤ



եΥХåå

̤˥Хååפ褦Ȥȷ빽ɤǤե̾̿̾롼
оݤʤȾϳڤˤʤޤ

ޤfml8 Ǥϡե̾ .cf ĤƤե뤬񤯥եǤ
Τˤ


key = value

եǤηΥեˤ

/usr/local/etc/fml/main.cf
/usr/local/etc/fml/site_default_config.cf
/̤ͣΥۡǥ쥯ȥ/config.cf

ʤɤޤ

ޤʳˤ⡢󥿥åΰۤʤ

/usr/local/etc/fml/mime_component_filter
/usr/local/etc/fml/ml_home_prefix

ʤɤΥե뤬ޤΥեη϶ڤǤ

/usr/local/etc/fml/ ʲ˥ȤϤʤΤǡͤХå
פƤɤȻפޤ



СꥹȤΥХåå

ɥ쥹ΥꥹȤ

/̤ͣΥۡǥ쥯ȥ/members*
/̤ͣΥۡǥ쥯ȥ/recipients*

Ǥ̾εˤĤƤϡrecipientsmembersˤʤޤ¾Ӥ
Ǥϡmembers-ӡפΤ褦ʳĥҤĤƤޤΤᡢmembers*
recipients* ХååפоݤˤƤɤ櫓Ǥ

ʤ⡼ȴǻȤѥɥե

/̤ͣΥۡǥ쥯ȥ/etc/passwd-

Ǥetc/ ʲХååפޤ礦



fml8 Хååפ: Υǥ쥯ȥʳ

оݤʤꡢʲΥǥ쥯ȥХååפȳڤɤϤ
Ǥ

spool   
tmp     ֥ե
var     ƼΥǡ

rsync ǥХååפʤ顢--exclude ץʤɤǡΥ
ȤȴȤǤϤǤ



쥷ԡs

1. եС

1. եС

ޤ fml8 ư cvs 餻褦ˤʤäƤޤΤǡȤɤưǹԤʤ
Ʋ



Chapter 27. 

̤Ǥ



쥷ԡs

1. Υס򰵽̤
2. סưǾä
3. ưǥ֤ꤿ
4. ֤鵭 get ޥɤǼФ
5. ֤ get 

1. Υס򰵽̤

̤Ǥ

2. סưǾä

̤Ǥ

3. ưǥ֤ꤿ

ֵǽ̤Ǥ

4. ֤鵭 get ޥɤǼФ

ֵǽ̤Ǥ

5. ֤ get 

ֵǽ̤Ǥ



Chapter 28. Фΰۤ

ǥ: FML.ORG дְۤ⻲ͤˤƤߤƲ



쥷ԡs

1. ᡼륵Фۤޤ IP ɥ쥹ѹ˴طΤ fml8 Υե
    Ϥޤ

1. ᡼륵Фۤޤ IP ɥ쥹ѹ˴طΤ fml8 Υե
Ϥޤ

ޤ

V. ȥ֥륷塼ƥ

ܥѡȤǤϥȥ֥륷塼ƥ󥰤ä򤷤ޤ

Table of Contents
29. ȥ֥륷塼ƥ



Chapter 29. ȥ֥륷塼ƥ

쥷ԡs

1. ȤäƤ fml ΥСΤꤿ
2. Postfix ΥСΤꤿ
3. Sendmail ΥСΤꤿ
4. qmail ΥСΤꤿ
5. Ƥ륢ɥ쥹򸫤
6. Ƥ alias 򸫤
7. С°Ƥ̤ͣ򤹤٤ɽ
8. fml 򥤥󥹥ȡ뤷ۥȾ夫ƤǤʤ
9. CGI ǣ̤ͣ᡼륵ФȿǤƤʤ
10. ˼ԤưǺ
11. ٤Ʊ᡼뤬
12. οͤƤʤ
13. ̤ͣΥСǤʤɥ쥹饨顼᡼뤬
14. aliases  fml ѹ 2 褦ˤʤä
15. flock ưʤ OS ʤΤǤ
16. ֹ椬ˤɤäƤޤä
17. ְ㤨ƾäƤޤä
18. ǥ­ʤ˾äƤ褤եϡ
19. ᡼ Reply-To: ĤƤʤ褦Ǥ
20. ֿ褬̤Ǥʤ褦Ǥ
21. References:  In-Reply-To: ĤƤޤ
22. ᡼꡼ǥåɤɽǤޤ
23. ̤ͣμԤΤοͤʸ뤽Ǥ
24. ɤƤ ISO-2022-JP äƤʤͤޤ
25. μԤܸ줬ɤʤĶˤ
26. ȾʸΥ᡼뤬Ƥ餽
27. help 󤻤ʸƤޤ
28. get Ǥʤ
29. get  ish ⡼ɤʤɤưʤ
30. subscribe 褦Ȥ̵뤵褦Ǥ
31. ' ޤॢɥ쥹ޤʤ
32. "xxx"@yyy.or.jp Ȥɥ쥹Ȥޤ subscribe Ǥޤ

1. ȤäƤ fml ΥСΤꤿ

fmlconf ޥɤƣ̤ͣѿɽƤޤɤΣͣ(¤Ŭʣ̤ͣ
ɤ)ꤷƤɤΤǡfmlconf ¹ԤƲȤ

% /usr/local/bin/fmlconf test |grep fml_version
fml_version                          = fml-devel current-20021029

2. Postfix ΥСΤꤿ

% postconf mail_version

3. Sendmail ΥСΤꤿ

% echo '$v' | sendmail -bt

4. qmail ΥСΤꤿ

ϡ֤ 1.03 + 褯ʬʤѥåǤ󥹥ȡ뤷ͤʤꡢȤ
ѥåƥΤޤ뤫Ƥ

¸ߤޤ DJB ϡ֥ѥå򤢤ƤפȤѤͤʤʸʤ
Ǥ礦ʤǤ

5. Ƥ륢ɥ쥹򸫤

fmladdr ޥɤ /etc/passwd Ƥ桼 aliases ե
Ƥɥ쥹ɽƤޤ

% /usr/local/bin/fmladdr


                                  Warning                                   

fmladdr ޥɤ fmlalias ޥɤΰ㤤ϡ˥桼( /etc/passwd ꨢ
Ƥ )ޤफݤȤǤ fmladdr ϴޤߤޤfmlalias 
ϴޤߤޤ fmlalias Ͻ alias ɽޤ                     


6. Ƥ alias 򸫤

fmlalias ޥɤ aliases ե()ꤵƤɥ쥹ɽƤ
ޤ

% /usr/local/bin/fmlalias


                                  Warning                                   

fmladdr ޥɤ fmlalias ޥɤΰ㤤ϡ˥桼( /etc/passwd ꨢ
Ƥ )ޤफݤȤǤ fmladdr ϴޤߤޤfmlalias 
ϴޤߤޤ fmlalias Ͻ alias ɽޤ                     


7. С°Ƥ̤ͣ򤹤٤ɽ

grep ޥɤȤפȸȤǤ grep ǤܤǤ礦
ΤϡСꥹȤեȤϸ¤ʤΤǡƽϤƤ grep 
ƤߤʤȤ狼ޤ󡣤Ȥ

% /usr/local/bin/fml ̥ͣɥ쥹 list|grep ɥ쥹

ƣ̤ͣˤĤƷ֤ȤȤˤʤޤ

ǤݤʤäݤɤҤѤ˹ԤʤȤȤΤǤСѤΥ
ɤѰդƤɤΤǤϤƤơ

8. fml 򥤥󥹥ȡ뤷ۥȾ夫ƤǤʤ

(1) fml8 Υե륿ƤƤǽޤfml8 Υ򸫤Ʋ
 Mail ޥɤ MIME إåޤΤǡfml8 Ǥʥ᡼Ȥߤʤ
ޤ(: ǥեȤ fml4 ǤϡޤǸƤʤΤǥ顼ˤʤʤäϤ
Ǥ)

(2) ޤǤ⤷ޤ󤬡Σ̥ͣФΥۥȤξ夫᡼
ȥ顼ˤʤ뤳Ȥޤ

[ޥɤ]

% echo test |Mail -s test elena@fml.org

äˤԴʾ󤷤ͿƤޤ󤫤顢᡼Τ
Τ Mail ޥ(⤷ Mail ޥɤ᡼Ϥ줿 MTA )ܤǤ
ä From: ʬ֥桼פȤ֥桼 FQDN פä
ꤷޤȡ֥桼ɥᥤפη褦ˤʤäƤʤ
 fml8 ȤƤʥ桼˸ޤ(ƥե륿Ƥޤ)

ɥᥤ󤬤Ĥ褦 MTA ľƲ

9. CGI ǣ̤ͣ᡼륵ФȿǤƤʤ

򸫤ƤߤƲ

ޤ WWW ¦˽ϤƤǧƲ fml Υ顼å
ϿƤǽޤ

:

/usr/local/apache/logs/error_log
/usr/local/apache/logs/suexec_log

/var/spool/ml ʲǧƤߤޤ礦̤ͣΥۡǥ쥯ȥꤹƤ
ʤ (Σ̤ͣΥե뤬ޤ󤫤) WWW Фνʳǲ
Ǥޤ WWW ФΥեϤɬפޤ

Ⱦüˣ̤ͣåȥåפƤ (ȤХۡǥ쥯ȥϤ뤬
aliases ȿǤƤʤ) ˤϡfml Υե(: /var/spool/ml/
elena/log)򸫤ƤߤƲ

10. ˼ԤưǺ

MTA ֤Ǥκ顼 MTA ߤޤ Sendmail Ūʥѥ᡼
֤ǤΤǡָ֤Ϻߤ MTA ¿Ȼפޤ

fml8  MTA ֤ǥ顼 fml8 Υ᡼륭塼ꡢ fml8  MTA 
κߤޤʬưˤ fml8  MTA Ǥ

Υߥ󥰤ϼ fml8 β餫Υץबư줿ǤΤᣵ
ʬʤɤȳϽޤ󡣣ʬȤ˺ߤˤϡ cron  makefml
ML flush ¹Ԥ褦ˤƤߤƤ

:  Chapter 35 ⻲ȤƤ

11. ٤Ʊ᡼뤬

 the Section called Ʊ᡼뤬٤Ƥ򻲾ȤƤ

12. οͤƤʤ

 the Section called Ʊ᡼뤬٤Ƥ򻲾ȤƤ

13. ̤ͣΥСǤʤɥ쥹饨顼᡼뤬

(1) ̤ͣμԤ˥᡼žƤͤȡž褫饨顼᡼
뤬Ԥ֤äƤǽޤ

(2) SPAM ᡼Ǥ

14. aliases  fml ѹ 2 褦ˤʤä

ХǤϤʤ MTA λ;塢ʤǽޤ

Ȥ aliases Τ褦ˤʤäƤȤޤ

elena: rudo, kenken, hitomi

 aliases Σ̤ͣ

From: rudo
To: elena
Cc: rudo

test

Ȥ᡼ƤȤ rudo ˤϰϤǤ MTA  elena ̤ͣ
ԤĴ rudo νʣʬΤƤޤ

elena ̤ͣ fml ѹȡ MTA ˤʣθ̤ʤʤޤ
Τᡢ elena ̷ͣͳ rudo ˤȤɤʬ rudo ľƤʬΣ
ˤʤȤ櫓Ǥ

15. flock ưʤ OS ʤΤǤ

fml8  flock(2) ɬܤǤΤǡfml8 ưޤ(֤ưưѤˤʤ)


flock(2) ȤäƤ⡢ºݤˤ perl  Fnctl ⥸塼ȤäƤơ
⥸塼뤬 OS ȤκۤۼƤޤޤfcntl(2)  POSIX.1 ǤΤ
줬ưʤ OS ϡۤѤ OS Ǥ

16. ֹ椬ˤɤäƤޤä

fml4 Ȱۤʤ fml8 ǤϡȤϵʤ褦˺äƤޤֹ
åץǡȤǤʤʤ顢⤽ fml8 νǻߤޤ褦ˤʤäƤ


ΥåȴäƵǽ뤫⤷ޤ󤬡ºݤˤ
ݤƤߤʤȤ褯狼ޤ

fml8 ѵץߥ졼ǤȯޤǤȥåưƤ
ޤޤΤȤפȿƤޤ

17. ְ㤨ƾäƤޤä

ְִ㤨 makefml rmml ¹ԤƤޤäפȤȤʤ顢 reviveml ޥ
ɤǤޤ

ְִ㤨 rm -fr ƤޤäפȤȤʤ顢 fml8 ǤϼưǥХåå
ʤɤƤʤΤǤļϤޤ

äߥڥ졼βǽͤơĤͤ˥ХååפȤäƤ
Ǥ

줬ֱѡפȤȤǤޤ

18. ǥ­ʤ˾äƤ褤եϡ

˾äΰϡۤȤɤޤ

ƤСͤΤᵭϿƤ᡼뤪᡼Υ
ƣ̤ͣΥۡˤ var/mail/incoming  var/mail/outgoing 餤Ǥ礦
ޤΥפǤ log äȤƤ⤢ޤޤꤪ
ޤ

19. ᡼ Reply-To: ĤƤʤ褦Ǥ

̤ˤĤƤɬפϤޤΤǥ顼ǤⲿǤ⤢ޤ

ޤ֤ĤƤʤפȤ̣ǧۤ褤Ǥ礦᡼꡼ɽ
ƤʤΤޤ󡣥᡼إå򤹤٤ɽ褦ˤƳǧƤ
餦褦ˤƲ

ʤǥեȤǤ fml8 ˤ Reply-To: ĤƤޤ⤷
Υ᡼ Reply-To: ꤬äϡΤޤ޸ Reply-To: ĤƤޤ
⤷Υ᡼ Reply-To: ʤʤ fml8 ŬڤʤΤĤޤȤС
ǤѤΥɥ쥹ޥɥ᡼ֻǤХޥɥ᡼Υ
쥹Ǥ

 fml8  Reply-To: Ĥʤ褦ꤷƤΤʤĤޤ󡣸Υ᡼
 Reply-To: СΤޤ Reply-To: Τʤ᡼뤬ޤ

20. ֿ褬̤Ǥʤ褦Ǥ

ޤֿפȤϲΤȤ򤤤äƤΤǧޤ礦

餯᡼꡼ֿ򥯥åѰդ줿ƥץ졼Ȥΰ褬
ǤʤäȤȤ򤤤äƤΤȤϤ⤤ޤ

դĤΥƥץ졼Ȥɽ밸ϸ᡼ Reply-To: ʤ From:
ȤƤϤǤ᡼꡼ǲùƤʤإåɽƤɤʤ
Ƥ뤫ǧƤäƲ

ʤReply-To: ˤĤƤ쥷Ԥ򻲾ȤƲ

21. References:  In-Reply-To: ĤƤޤ

ϸΥ᡼ˤĤƤʤǤΤԤΥ᡼꡼ĤƤ
ʤȤȤˤʤޤɤˤʤޤ

fml8  References:  In-Reply-To: ˤĤƤʤˤ⤷ޤ̤Ǥ

22. ᡼꡼ǥåɤɽǤޤ

fml8 ϤΥإåեɤФƲ⤷ޤ󡣸Υ᡼ In-Reply-To:
 References: ʤȹͤޤ

쥷Ԥ⻲ȤƲ

23. ̤ͣμԤΤοͤʸ뤽Ǥ

ʤ fml8 ꤬ǽ⤢ޤοͤʸΤǤ
СοͤΥ᡼ĶǤ

Υ᡼뤬üǰοͤɤʤȤǽ(Ȥ M$ ͤοͤ
Ǿ˸Ƥ褦ʥ᡼ȥ᡼꡼ȹ碌) ⤢ꤦΤǡ
쳵ɤ¦Ȥڤʤޤ

24. ɤƤ ISO-2022-JP äƤʤͤޤ

MIME إå򸫤ƥ᡼꡼ĥäƤޤΤǡǤȤ
Ȥ¿ʤäƤޤä⤷ޤ

̵ fml8 ¦ѴǤʤ櫓ǤϤޤ󤬡ȤʤʤΤǡ
᤿ۤǤ礦᡼꡼ˤޤǤ

25. μԤܸ줬ɤʤĶˤ

󤤳ȤȤǤ礦äɤ礦⤢ޤ󤬡֥᡼
ɤǽ⤤Ǥˤɤ¦ʤΤ fml8 ǲ򤹤뤳
񤷤Ǥ礦

gmail (gmail.com)ΥȤǤäƤ館¨褹Ȼפޤ

ѣ̤ͣξǤξϲҤǤɤäΥץХͭΥ᡼
륢ȤäƤ餦ȤƤäƤɴ/Ǥ礦

26. ȾʸΥ᡼뤬Ƥ餽

̤Ǥ

 

27. help 󤻤ʸƤޤ

fml8 Ǥ ISO-2022-JP ѴƤƤޤإåˤŬڤ
Content-Type: ĤƤޤ

褦ʤ顢νԤʤ⥸塼뤬ޤưƤʤǽ
ޤإåγǧȡΥ᡼ʸɤγǧ򤷤ƤߤƤ

ޤΥإץեȡإפ󤻤ȥꥬˤʤäޥɥ᡼
ƤȤ襤Ǥ

28. get Ǥʤ

֤줿顼åӥե򸫤ƤߤƲ

 no such file  get 褦Ȥե뤬ʤȤȤǤΥå
θ˥褦ȤեΥեѥ񤤤ƤΤǳǧƤߤƲ


 invalid argument ϻؼ줿ѥ᡼βǤäˤǤޤ
ޤꤷֹ椬¸ߤʤäˤ⤳Υ顼åФ뤳
ޤ

29. get  ish ⡼ɤʤɤưʤ

üʰ̷̤ݡȤǤ fml8  get  mget ֤ݤ MIME/
Multipart ݡȤƤޤ

30. subscribe 褦Ȥ̵뤵褦Ǥ

᡼륢ɥ쥹ɽ¤ƤޤɽϰϤ FML::Restriction::Base
饹ƤꡢΤ褦ˤʤäƤޤ

my $domain_regexp  = '[-A-Za-z0-9\.]+';    # domain of user@domain
my $user_regexp    = '[-A-Za-z0-9\._\+]+'; # user of user@domain

ʥɥ쥹ξ硢˼Τ褦˻ĤĤ̵뤵ޤ

error: unsafe From: ɥ쥹
error: ignore this request.

31. ' ޤॢɥ쥹ޤʤ

᡼륢ɥ쥹ɽ¤Ƥ뤿Ǥ쥷Իȡ

32. "xxx"@yyy.or.jp Ȥɥ쥹Ȥޤ subscribe Ǥޤ

⤽⡢Υɥ쥹ˤͭʥ桼ʬޤ󡣥ȤǤΤǥ
顼ˤʤäǤ

᡼륢ɥ쥹ɽ¤Ƥޤ쥷Ԥ⻲ȡ



ե륷ƥब顼ξưϡ

եɤ߽񤭤ǥ顼硢 MTA ˤԤʤ褦ˡ
fml8 ۾ｪλפfml8 ȤԤʤפνԤʤ
 fml8 Ȥĥä򽪤餻褦Ȥˤϡե䥵ޥ
ˤϷФǽޤƤ줿Ƥ뤳Ȥ
ϤʤĤǤ

ʲǥե륷ƥΥ顼ǽ񤭹ߤޤʤ
뤫ޤ



MTA  fml8 إ᡼뤬Ϥ

fml8  STDIN ɤߤ᡼٥ǥ˽񤭤ޤν񤭹ߤ
СʤޤԤ硢 MTA ˺ĩ路Ƥ餦ᡢexit
(EX_TEMPFAIL) ǥץ۾ｪλޤ路  the Section called fml8
᡼ɤߤݤΥ塼 in Chapter 35 򻲾ȤƤ

ΤȤfml8  incoming queue ˤȾü˥᡼뤬񤭹ޤ줿ե뤬
ޤ۾ｪλˤϡΥեä褦ˤƤޤĤäƤ
ޤäƤ⡢Ȥǥ塼ƥˤޤΤˤϸŤʤä
incoming queue ΥեäŪ˹Ԥʤ뤿ᡢλ˾õ
ȤߤǤ



ֹι˼Ԥ

ȿֹʡܣ줿Ρˤ󥹥ե(seq)˽񤭹᤿
(ե˽񤤤ơĤơƤӳơɤߤǤߤ) ǧ
СؽʤޤԤƤ硢exit(EX_TEMPFAIL) ǽλ
MTA  fml8 ƸƤӽФƤ餦褦ˤޤ

äơ(塢ʤϡ"ۤ"μ¤) fml8 Ǥϵֹʣϵʤ
褦ˤʤäƤޤ


                                  Caution                                   

ʤֹ򹹿Ǥ֤νװʹߡ exit(EX_TEMPFAIL) ǽλ 
˥ץ񤤤ƤϤޤ󡣽ʣƤޤΤ MTA ˺ 
ꤷƤϤʤΤǤ                                                



¸κݤ˥顼ˤʤä


                                  Caution                                   

ν򳫻ϤǤ˵ֹϹƤޤ                    


ν񤭹ߤϤǤޤ󤬡ꥸʥΥ᡼ϴ˥ǥ˽񤭹ޤƤ
ޤϡإåʬˤϿɲäޤʸϥꥸʥ᡼
ΤΤȰǤǡincoming queue ǥ쥯ȥ꤫spool/Ƥ줿
ֹץե link(2) 뤳ȤǡƤ¸褦ˤޤ
[18]

٤ǥ¸뤳ȤǤޤǤ
٤ݤƤΤǡȤäƵ򤳤ߤޤ

ΤȤ( outgoing )᡼륭塼˽񤭹ʤᡢ⤷ǥ
硢Ⱦü˽λȤʤޤ

ǥ˵ϿϻĤäƤΤǡԤοͤ͡ޤ(ޤ
ϺǰξǡƤƼԤˤ⤦ٺ򤪤ͤۤñǤ
礦)





٤Ƥ( outgoing )塼˽񤭡񤭹ˤϤ
Ԥʤޤ

塼˽񤭹ʤ硢Υǡߤޤǥ顼
硢Ⱦü˽λȤʤޤ [19]

outgoing 塼ˤĤƤξܺ٤ϡ  the Section called fml8 ᡼ֻ
֤ in Chapter 35 򻲾ȤƤ



Ʊ᡼뤬٤Ƥ

ԤʣΥ᡼ФƤȤȤ⤢ޤξ᡼
Received:  Message-Id: ۤʤޤ

Ʊ᡼(Ȥ Message-Id: Ʊ) [20] ϤȤ硢ñʤ
⤷ޤ

Żҥ᡼ȳǤϡֹˤʤ뤯餤ʤʣϤޤפȹͤ
Ƥޤǡ򼺤餤ʤĹǤʣϤƤޤɤǤ
 MTA ԤǽΤ硢ʣβǽäƤ⤢ƺ
ʤޤ

̤Ƥ褦ǤСϤꥷƥ˲ΰ۾郎ޤ

ˤĴ٤٤ݥȤϡ֤Ʊ᡼뤬ƤΤפǤ

̼ͣԤΰˤƤʤ fml8 ʳƥΤɤȿͤ
̼ͣƤʤ fml8 ȿͤǤ礦ޤ fml8 
Ĵ٤Ʋ

ɤξǤ⡢᡼إåϤɬפޤʣϤȤ᡼Υ
ץƲλ᡼إåάƤʤʷ
ΤʤỌ̇̄ޤ



᡼μ

ƱƤʣΥ᡼ʸǤʤ From:  Message-ID:  Received: ޤǤ
ƱǤ



ɤ MTA Ƥ롣

ƱƤʣΥ᡼ʸ From: ƱǤ Received: ۤʤޤ᡼
 A B C ̲ᤷƤȼΤ褦 Received: ĤƤϤǤ

Received: by C C
Received: by B B
Received: by A A

Ƥ륵аʹߤλϳƥ᡼ǰۤʤϤǤ顢ΰۤʤ
Received: ƤȤȿͤΥФǤȤ

Received: by C C'
Received: by B B
Received: by A A

ʤ B  C δ֤꤬ޤʤޤޤʤ B ȿ͡ˡ



Ʊ᡼뤬٤Ƥ(᡼Υ롼)

fml8  MTA ˤä MTA (⤷ƤäΤɤ̤ΥȤ MTA)
 fml8 ˺٥᡼뤬ǽʤ櫓ǤϤޤ

롼פʤ褦ˡ᡼롢fml8 ᡼
Message-Id: ϥå夵ƤΤǡΥ᡼뤬ä֤äƤƤ fml8
ϥ롼פȤߤʤޤ

ʤˤ衢κƤȤ᡼δʥإåʬϤɬ
פޤ

VI. ǥ

ܥѡȤǤϥǥä򤷤ޤ

Table of Contents
30. : fml8 (̾) Υǥ󥳥󥻥ץ
31. ץߥ󥰡



Chapter 30. : fml8 (̾) Υǥ󥳥󥻥ץ

fml-devel ץȤι

fml8 ץ(ɥ͡ fml-devel) ϡ fml4 κƹ(refactoring)


fml8 ϦǤǤǯΤꤷѤ³Ƥޤѿ̾⥢
ƥ㥢⡢͸ǤޤäȻפޤ

ʬȤˤʤΤǤ fml4 ȤθߴԽʬ⤷ޤ
fml4 ƤεǽɬפȤϻפޤ󤬡 fml4 бǽϡ
ˤʤʬ fml8 ˤޤ

ΤˤäƤ fml8 Ѥ˺줿⥸塼 fml4 ͢/͢ФƤޤ IPv6
ϤǤ͢ФޤȤ 4.0 ǤΩι⤤ mead (顼᡼ϥ
)ʤɤ͢вǽǤ礦

Υޡ 4.0 ΤΥɤݼ򤷤Ĥ 4.0  fml8 ¹Գȯ
ƤͽǤΤ 4.0 Ϥ stable ˶ᤤ current Ȥդˤ
ޤ 4.0  bug fix  4.0.x (4.0.1 4.0.2 )ȤƤޤȤ꡼
ƤͽǤդ fml8 γȯѤΥ( fml-current )ȤȤˤ
ޤ



ۡʾܺ)

  եȥ˥塼ץ٤򾯤ʤ

  ٤ perl module  ( perl 5.00504 ʹ)

  CUI (makefml) 󥿡ե CGI 󥿡ե

    Ͻ̤ΤΡ粽졢˥塼ʤɤ񤭤䤹
    ΤǤ褦 (ԤڤǤեΤޤ et.al.)

  ЪΥ

      С󥢥åפñˤǤ褦

      CPAN ⥸塼Ȥޤ (ǤľܻȤꡢ碌Ƥ
        ۤ褤)

      3rd party ѥǥ쥯ȥ

  첽줿СꥹȤʤɤؤΥǤݲ롣

      ե (Ѥ)

      /etc/group (Ѥ)

      NIS (Ѥ)

      SQL (MySQLPostgreSQL Ѥ)

      LDAP

    ºݤˤϸΨ⤢ꡢݲϽŤʤäƤޤ
    ʤäƤ褦

  IPv4/IPv6 ready (Ѥ)



fml ե󥰤륢ǥ

Table 30-1. ե TODO


status                                        ܺ                

done. 饤                  饤󥹤 Perl ѹ    

                                  fml4  fml8 ؤϡ sendmail  
done. ᡼/ƥ         postfix ؤΰܹԤΤ褦ʥ᡼ǡ
                                  ¤ config.ph СѰ 
                                  롣                              

done. ᥤץ wrapper  СǥХåñˤ먢
      (ЪΥ)                  ЪΥ                        

                                  ǽʸ¤ꤢ CPAN ⥸塼ʨ
      (糫ȯϤǤ ɤȤѤˤЪΥ
done. 򤱤)                   ؤߤ뤳ȡȤСFML::⥸ 
                                  塼뢪ЪΥآ CPAN/⥸塼ɤΨ
                                  褦ˡ                            

      եη cf                                       
      config.ph 粽褦ʨ                                    
      ΤǡɽǤ                                    
done. Ȥ롣˥塼ץब                                    
      ڤǤեޥåȤˤ                                    
      §Ȥơեɨ                                    
      Ȥ̾ΤΤϤɤƱը                                    
      ޥåȤȤ롣                                              

                                  USE_ۤɤӡɤۤ_TYPEɷ 
                                  ޤNOT_USE ʤɤ϶ػߤ(   
                                  default_config ˽񤯤)        
      ѿ̿̾§εʲ      attribute ˤΤˤʤäƨ
                                  ޤΤϤ礦ʤ
                                  ɽǽʤᡢߤ ifdef η 
                                  ɽ褦ʤȤʤʤϨ
                                                                  

      ؿ̾롼 main:: ʸ Perl Cookbook Ȥơ 
      ڡ˽ФƤΤϽ̨ˤ褦ʥ󥿥å侩먢
       X11 ˡ᥽åɤ : ᥽åɤʤ is_member() ǡ 
      ¾Υ⥸塼ˤ褦ʤؿʤMemberP() -> IsMember 
      äݤʸ̾Ĥ먢()                                
       lisp ŪǤѻߤ롣                                      

done.                                                                 
(Ǥ                                                                 
lmtp  queue manager               Τ (e.g. smtpfeed )     
                                                                
Ƥʨ                                                                
;-)                                                                 

                                  BSD make Ȥʤ C ǤϤʤ
                                  Τǡautoconf äˤɬפʤȻ 
                                  ʤ configure Ȥ̾ 
                                  ΥץȤʥեǤѰը
done. tools                       뤳ȤϤ褤Ȥ⤷ʤ (Ȩ
                                  ǽϤäƤɡɤĤäƨ
                                  ޤ:-) ΥץȤϡȤ  
                                  IPv6 ready ݤ뤿˻Ȥ 
                                  ( ߤμǤϻȤäƤϤ
                                  ʤIPv6 Ͼĩ路Ƥߤ )   



ƥ㥢᡼

[architectu]



꡼󥸥˥󥰤ˤĤ (ɸ)

ƥȤǤ⡢ǥ٥åѡФäƤ⤤ʤݲ˨᤮Ƥ⡢֥
ȻظʬϤǳ᤮Ƥ⤤ʤǤǤꡢ쥫ñ̤ǥեɥХå
ץȤηײȥɥӥ塼Ԥʤȡ

Table 30-2. ꡼󥿡Х


                                                              

ǽ 4ײľ꡼󥸥˥󥰥ץ 20 ٨
5       Ϥηײ䤹                                        

23  ɤ                                                  

ǽ    ɥȤľӥɥӥ塼                    

ڤܨޤޤפݤ snapshot ФƤߤ롣 alpha-0, alpha-1,  
          alpha-2, ...                                                  




Chapter 31. ץߥ󥰡

ܾϤϡץߥ󥰡˴ؤˤĤƤΥǤ

FML.ORG Υեȥǥ󥰡ξܺ٤ FNF (FML.ORG Natural
Form) 򻲾ȤƲ



ѿ̿̾§ʥ͡ߥ󥰥٥󥷥

default ȤñɤˤϤफǺޤǤ

̤ˡֺʤƤϤǽ _ ޤǤΡʸʬϡ礭ʡɤ
ǤΥ饹̣ȹͤޤ

Ȥ article_* ǤеϢѿ٤ article_* (article α¦ñ
줬³ѿ) ƤȴԤǤ礦

ͤȡ default_* (Ĥޤ default 饹¸ߤȹͤ)ꡢ֥
_default_ѿפʤϡ֥饹_ѿ_defaultפȤ󥿥åľ˻פ
ޤ



ѿγع¤

ꥷƥޥƥåѿ̿̾롼ͤƤȡǤ⡢쥯饹ȷѾ
Ȥͤʤ١Ƴ褤Ȼפ褦ˤʤޤȤС
褦ʤΤǤ

mail ϡ֤᡼פĤޤ messager/rfc822 ΤΤǤ fml ƥ
ϤΤ mail ФƤΤ mail Ǥ mail 
֥饹ȹͤ뤿ᡢPREFIX_mail_°׷줹ɤǤ
Τ̩˹Ԥʤȡդˡ櫓狼ʤΤǤۤɤۤɤˡ

mail_Ȥ
mail_default_Ȥ

use_incoming_mail_Ȥ
incoming_mail_Ȥ

use_outgoing_mail_Ȥ
outgoing_mail_Ȥ

use_report_mail_Ȥ
report_mail_Ȥ

Ǥ⡢̩ˤ outgoing_report_mail Ȥ٤ʤǤ礦ɡ
ǤϤʤΤۤɤۤɤäƤȤǤ͡

إåϢξ硢äˤʤǤ礦

header_ʤȤ
header_default_ʤȤ

article_header_ʤȤ
use_article_header_ʤȤ

command_mail_header_ʤȤ
use_command_mail_header_ʤȤ

饹γع¤Ǥ魯ȡʴˤʤȤ⤤ޤ

command {
        SOMETHING_command
        admin_command
}

directory {
        XXX_directory
}

file {
        template_file
}

mail {
        incoming_mail
        outgoing_mail
        report_mail
}

message {
        reply_message
}

article {
        article_digest (digestǤϤʤarticle  digest Ȥ狼̿̾)
        article_spool  (spoolǤϤʤarticle  spool Ȥ狼̿̾)
}



ɸѥ ( log.cf lock.cf)

use_ѿ                =       yes  no

# ǥ쥯ȥʤǸ _dir ĤȤ˾ޤ
ѿ_dir                =       ʸ

# եʤǸ _file ĤȤ˾ޤ
ѿ_file               =       ʸ

ѿ_type               =       ʸ

ѿ_format             =       ʸ

ѿ_format_type        =       ʸ

ѿ_limit              =       ʸ(ʸ󰷤)

ѿ_upper_limit        =       ʸ(ʸ󰷤)

ѿ_lower_limit        =       ʸ(ʸ󰷤)



ѥ ( acl.cf)

ѿ_restrictions       =       reject_°1
                                check_°2
                                permit_ʤȤ

°1                   =       ѥ1
                                ѥ2
                                

°2                   =       var1
                                var2



ѥ3 (˥ץ̾Ĥ)

ץ_ѿ_°



ǥ/ǥ󥰥ξǤ


                                  Warning                                   

ˤĤƤϡ FNF ⻲ȤƲ                                 





륭Ф quotemeta() 

֥ȤȤΥľܻȤ鷺ˡ˥᥽åɤ뤳ȡ:
main_cf ؤΥ

$curproc->{ ... }->{ main_cf }

ǤϤʤ

$curproc->main_cf();

Ȥ

@EXPORT @EXPORT_OK ϤǤФ᤿

Srting::is_japanese_string() 餤γؤ٤ǤϤʤʤ 3
ܤ餤ǻߤޤäƤۤ褦ʡ



ץߥ󥰡 (ƤΥ(: ñʤ))


                                  Warning                                   

ȤơƤΥ(: ñʤ)򤳤˵ϿƤޤɤߤŤ騢
Ǥ顣                                                            


   Perl Ǥϥݥ⡼եȼ¹ԻХǥ󥰤Ǥ뤳Ȥ˽Ż뤹뤳
    ¿ŷѾʤɤƬȤݥ⡼եȼ¹ԻХǥ󥰤ˤ륳
    ݡͥȻظݤϺ롣

   Perl 5 ΥѥåȤä֥ȤݤѿȤʬΥѥ
    ΤäƤΤǡñ˥ѥå(: :: )ȤʤƤ褤餤
    ˻פ褤

   Τˡ٤⤯󥿡եϥ֥Ȥݤ
    ɤ

   Perl 5 ɬŪ˥֥ȤݤʤäƤޤ֥ȡ֥
    ȡ֥Ȥ᤮ʤ褦˥Х󥹴Фդ褦

   ¾ͤΥ⥸塼ȤϤȤ⤫ʬãǽ񤯥⥸塼ǤΡɿɷ
    ϤǤ򤱤Ǥ⿼Ф褤ȤΤǤϤʤǤ礦

libexec/  libkern.pl ˤؿϡ main:: ˵ҤʬϴŪʥե
ҤƤ롣ϴŪȤ򼨤ΤǤ뤿ᡢ $curproc (C Ǥ
struct *curproc ˤ) Ϥ¤ץߥŪʽ򤷤
롣

ΤҤȤĲءƤˤβǤϡȥݥ⡼ե
褵ˤ⤨롣

VII. ¤

ܥѡȤǤϳȯԸƤˤĤƤޤȤޤ

Table of Contents
32. С¸褹뤿 fml ֡ȥ
33. ե config.cf
34. ץκ
35. fml8 Υ᡼ƥ
36. /ޤȤ
37. ͥ
38. å(᡼)
39. ե륿
40. 桼ϿˤĤ
41. ޥ(ޥɥ᡼롢makefmlCGI)
42. CGI ץ¤
43. ǥ쥯ȥ
44. ϥǡθ
45. 桼ǧ
46. HOOK(եå)
47. Сɥᥤμ갷ˤĤ
48. 顼᡼ϥץ (libexec/error)
49. IO 󥿡ե
50. å
51. ǡ١Ϣ⥸塼
52. ǡ١ƥ(DBMS)ȤϢ
53. ǥ: ¾Σ̥ͣƥ fml8 Ѵˤϡ



Chapter 32. С¸褹뤿 fml ֡ȥ

fml8 ˤϥ󥹥ȡ뤵Ƥ fml ΥС¸θ뤿ˡܾϤ
Ҥ٤褦ʥ֡ȥȥåפβޤ

fml (libexec/distribute)  boot Ƥͻ

       functions                class
       ----------------------------------------

       main::Bootstrap()        libexec/loader
            |
            V
       main::Bootstrap2()       FML::Process::Switch
            |
            V
       ProcessSwitch()          FML::Process::Switch
            |
            |
            | switch to ($obj = FML::Process:Distribute)
            |
            V
       ProcessStart($obj,$args) FML::Process::Flow



: ξ

Ȥξ硢 loader 鼡ȥ⥸塼뤬ƤФƤͻҤϼΤ
ˤʤޤ

/usr/local/libexec/fml/distributre (μ /usr/local/libexec/fml/loader)  /
usr/local/etc/fml/main.cf ɤߤߡfml_version ѿȤ٤饤֥
СޤȤ fml_vesrion  current-20010501 ȤʤäƤ /
usr/local/lib/fml/current-20010501/ ʲˤ饤֥ȤȤä


@INC ꤷ塢 loader  FML::Process::Switch ɤ $0 (ץ
̾)Ĵ٤ޤ̾鼫ʬλŻʤΤ FML::Process::Distribute
饹ɤ˰ܤޤ

ʤץ̾ȥ饹бط /usr/local/etc/fml/defaults/С/
modules Ƥޤ

äϸ FML::Process::Flow::ProcessStart() Ȥؿ椷
ƤޤProcessStart() Ȥ FML::Process::Distribute ֥Ȥ
졢FML::Process::Distribute ֥Ȥ¹ԤƤȤήˤʤޤ



FML::Process:: 饹γع¤

FML::Process::Distribute >-|
FML::Process::Command    >-|-- FML::Process::Kernel
FML::Process::Mead       >-|    |
                                |-use-a FML::Parse
                                |-use-a FML::Config
                                |-use-a FML::Log
                                |-use-a  ... ¾ ...

 



ץ¹Ի˻Ȥ⥸塼뷲

  /usr/local/libexec/fml/loader (wrapper) Bootstrap() ¹Ԥޤ
    distribute ʤɤϡ loader ؤΥܥå󥯤Ǥ /usr/local/
    libexec/fml/ ʲ򻲾ȤƤ

  
      /usr/local/etc/fml/main.cf ɤ߹ߡ fml ΥСΤޤ
        main.cf ͤ @INC (Perl Υ饤֥ꥵѥ)ꤷɤ
        ٤饤֥ΥС¸褷ޤ default_config.cf.
        {ja,en} ϥС¸ǤΤǡեɤ߹ˡʳ
        ǥСɾʤФʤȤդƤ

      @ARGV (¹Ԥ줿ץΰ )ɾɤΣ̤ͣ config.cf (
        ե)ɤ߹ΤȽǤޤ

       FML::Process::Switch (С¸)饹ɤޤ

          Bootstrap2()  ProcessSwitch() ¹Ԥѡޥɥ᡼
            ѤʤɤγƥץܤޤλǡǤ $0 顢
            ɤΥץ꤫ФΤʬäƤޤ

          (ݥ⡼ե) ⥸塼ʥߥåХǥ󥰤
            ץ֥Ȥơץ򥹥Ȥ
             FML::Process::Flow ˡɤΤ褦 fml8 ץ¹Ԥ
            Ƥޤޤˤ

            $process = new FML::Process::ʤˤ;
            $process->prepare($args);
            $process->verify_request($args);
            $process->run($args);
            $process->finish($args);

            Τ褦ʼ¹ԽǤƥץϡ줾ˤĤŬʥ᥽åɤ
            FML::Process:: ʲΥ饹Ѱդɬפޤ



: ml_name  ml_domain ͤϤɤǲ褹Τ

ߤǤϡFML::Process::  prepare() ǲ褷Ƥޤ

ʲ¤ˤĤơ/ܤĤƤޤ
ä¤θơ prepare() ᥽åɤ˻äƤƤ櫓Ǥ

main::Bootstrap()

        main.cf  fml ΥС¸

        hints Ϥ (CGI Τ)
                 CGI 
                Ϥꤦ
                Τᡢloader  hints Ȥ
                ml_domain  ml_name ϡɥɤƤ롣


main::Bootstrap2()
ProcessSwitch()

        Ȥ⥸塼( Process::ʤ )
                ɤ߹٤ cf եηʤʤǡ
                饤֥ѥη @INC νʤ

        hints ϤȤ (CGI Τߡ)


ProcessStart($obj, $args)

   ΤΥ

        new

        prepare
                ml_name  ml_domain η
                CGI ϤϤ
                        hints Ȥ(CGI Τߡ)

                ɤ߹٤ cf եη

                parse
                        ᡼ɤ߹
                        ޥɥ饤Ϥ



Chapter 33. ե config.cf

̤ͣȤե config.cf

ƣ̤ͣȤˤޤޤʥޥ򤹤뤳ȤǤޤ fml4 Ǥ fml8
ǤƱͤǤ

Τ fml4 Ǥϳƣ̤ͣΥۡǥ쥯ȥ $DIR (: /var/spool/ml/elena)
config.ph Ȥե뤬ޤ .ph Ȥ̾Ǥ狼̤ perl
script Ǥ

 fml8 Ǥ config.cf ȤեǤեޥåȤ Postfix  .ini 


ѿ = 

ˤʤäƤޤʣԤͤǽǤ()

perl module Ʊͤˡ=cut θˤ perl script 񤯤褦ˤʤäƤޤ֥
 = ͡׷εҤ =cut ˽񤤤Ʋ



fml4 ν

fml4  perl script ˤϡĤ꤬ޤ

åȤȤƤϡ perl script ʤΤǡperl ¤μͳʽǤޤ
Ͽʹ֤ˤȤäƤϴ򤷤ΤǤδǤȤΤ
makefml  CGI ϤȤꥤ󥿡ե񤭤ˤΤǤ
fml4 Ǥϡ cf Ȥե config.ph Ȥ 2 ĤΥեޥåȤΰۤʤե
뤬Ȥ뤳Ȥˤʤޤ [21] ǤϣĤΥեʬ
ޤݼ餬ˤʤޤ

ä fml8 Ǥϡꥤ󥿡եˤ䤵եޥåȤȤޤ
 config.cf ǡܼŪ Postfix եޥåȤǤ



config.cf Υեޥå

config.cf ΥեޥåȤ /usr/local/etc/fml/main.cf ƱͤǤ

ѿ̾ = 

ѿ̾ = 1 2 3

ѿ̾ = 1
         2
         3

Τ褦˥ڡʤϲԤǶڤäʣͤ񤯤ȤǤޤ

ѿǤ $ ˤѿŸǽǤȤ

a = 1
b = $a/2

ϺǽŪ

a = 1
b = 1/2

Ȳᤵޤ

Ÿϡ٤Ƥѿɤߤ˹ԤʤޤΤᡢʲΤ褦
򤹤

a = 1
b = $a/2/$c
c = 3
a = 4

٤Ƥɤ߹Ȥ˲ᤵ뤿

b = 4/2/3

ȽǤޤ



Postfix Τʤĥ

ѿ̾ += 
ѿ̾ -= 

ǡͤ­Ǥޤ

x  = a b c d
x -= b



x = a c d

Ȳᤵޤ

ޤ

x  = a b c d
x += e



x = a b c d e

Ȥʤޤ



config.cf ¿ɤ߹(ѿξ)

ʣ config.cf ɤ߹ߡξ񤭤ԤʤȤǤޤ

ѤơإǥեȤ١إȸͭ١إɥᥤͭ
٤ʤɤ̥եʬΥ񤭤Ĥ¿ɤ߹ߤ򤹤뤳ȤǤޤ
ˡǥեȤǤϡĤ .cf եʬΥƤޤ

fml8 ϵưˤΥե֤ɤߤߡǸˣ̸ͣͭ config.cf 
ɤ߹ߤޤơ٤Ƥեɤ߹ѿŸԤ
ޤ



Ÿѿȡ

$ դѿͤԤʤȡξǤɾޤ

ˡͤФ᥽å [22] ƤФ줿ݤˡѿκŸԤʤ


Ȥ

$config->{ key } = '$ml_home_dir/value';

ȤԤʤȡ

$config->{ another_key }

(ϤʤǤ褤)᥽åɤƤФ줿ݤˡѿ٤Ƥɾޤ (
˰¸ط뤿ᡢ٤ƤѿɾʤФʤޤ)



¤: ѿŸ

¤ä򤷤ޤ

ͤԤʤȡޤ %_fml_config ˥ͤȤ¸ޤ
 $dir/$file Τ褦ͤΤޤޤǤ

get() ᥽åɤϡ %_fml_config ǤϤʤ %_fml_config_result ֤ͤƤޤ
 %_fml_config_result ͤ $dir ʤɤŸ줿ͤǡ /var/spool/ml/
elena/file ʤɤȤʤäƤޤѿͤŸ get() ᥽åɤʤ꤬ƤФ
ݤ˽ƹԤʤޤ



ѿ (alphabetical order)

Table 33-1. table description


                  variable name                          descrition                  default value(s)           

address_compare_function_domain_matching_level    ᡼륢ɥ쥹Ӥ먢3                                     
                                                  ݤΥɥᥤӥ٥                                        

address_compare_function_type                     Сå򤹤ݨuser_part_case_insensitive            
                                                  ˡ桼ѡȤӤǨ                                      

                                                  ޥ CGI ǵ adduser deluser addadmin deladmin     
admin_cgi_allowed_commands                        륳ޥɤΥꥹ  digeston digestoff list log newml rmml
                                                                          reviveml                              

                                                  ΥɥᥤΤǨ                                      
admin_cgi_base_dir                                 CGI ֤ǥ쥯 $cgi_base_dir/$ml_domain/admin        
                                                  ȥꡣ                                                        

                                                  gpg configurations for                                        
admin_command_mail_auth_gpg_config_dir            admin commnad mail      $etc_dir/gpg-admin-command-mail-auth  
                                                  authentication.                                               

admin_command_mail_auth_gpg_config_dir_alias      conventional naming     $etc_dir/gpg-admin                    

                                                  pgp configurations for                                        
admin_command_mail_auth_pgp_config_dir            admin commnad mail      $etc_dir/pgp-admin-command-mail-auth  
                                                  authentication.                                               

admin_command_mail_auth_pgp_config_dir_alias      conventional naming     $etc_dir/pgp-admin                    

admin_command_mail_restrictions                   admin ޥɤؤ  reject_system_special_accounts        
                                                                          check_admin_member_password reject    

                                                  Сɤǧڤ먢                                      
admin_member_maps                                 ݤ˸뤹٤ƤΥ$primary_admin_member_map             
                                                  Сꥹ                                                    

admin_member_password_maps                        ⡼ȴԤΥѥ$primary_admin_member_password_map    
                                                  ɥե()          file:$etc_dir/passwd                  

admin_recipient_maps                              ȤꤢƤ뤱$primary_admin_recipient_map          
                                                  ɡȤƤϤʤ                                          

anonymous_cgi_base_dir                            ̿͸ CGI ֤ $fml_owner_home_dir/public_html/      
                                                  åץǥ쥯ȥꡣ      cgi-bin/anonymous                     

anonymous_cgi_expire_limit                        ̥桼 CGI session15m                                   
                                                  ID ͭ                                                 

article_delivery_transport                        ȥ󥹥ݡ( smtp                                  
                                                  ƥ)λꡣ                                                 

article_expire_limit                              ɤΤ餤Ťä90d                                   
                                                                                                            

article_filter_reject_notice_data_type            Ƥ᡼ɤΤ褦˨string                                
                                                  եɤ뤫                                            

article_filter_reject_notice_recipients           顼ΤΤ餻μԨmaintainer sender                     

article_header_filter_rules                       ե륿󥰤Υ롼롣check_message_id check_date permit    

article_header_list_help                          list-help of article    $mail_header_default_list_help        
                                                  header.                                                       

article_header_list_id                            list-id of article      $mail_header_default_list_id          
                                                  header.                                                       

article_header_list_owner                         list-owner of article   $mail_header_default_list_owner       
                                                  header.                                                       

article_header_list_post                          list-post of article    $mail_header_default_list_post        
                                                  header.                                                       

article_header_list_software                      default list-software   $mail_header_default_list_software    
                                                  header field.                                                 

article_header_list_subscribe                     list-subscribe of       $mail_header_default_list_subscribe   
                                                  article header.                                               

article_header_list_unsubscribe                   list-unsubscribe of     $mail_header_default_list_unsubscribe 
                                                  article header.                                               

                                                                          delete_unsafe_header_fields           
                                                                          rewrite_article_subject_tag           
                                                                          rewrite_reply_to rewrite_errors_to    
                                                  Υإå񤭴먢rewrite_stardate rewrite_precedence   
article_header_rewrite_rules                      롼뷲                rewrite_message_id add_software_info  
                                                                          add_fml_ml_name                       
                                                                          add_fml_traditional_article_id        
                                                                          add_fml_article_id add_x_sequence     
                                                                          add_rfc2369                           

article_message_id_cache_dir                      Ȥƥס˳Ǽ$db_dir/article_message_id            
                                                  줿᡼                                                

article_mime_component_filter_rules               ե̾              $fml_config_dir/mime_component_filter 

article_non_mime_filter_rules                     Ȥꤢߡ      reject_empty_content_type permit      

                                                  ƻˡåɨ                                      
article_post_article_thread_lifetime              ³Ǥʤ顢û֨86400                                 
                                                  δ֡                                                        

article_post_auth_gpg_config_dir                  gpg configurations for  $etc_dir/gpg-article-post-auth        
                                                  article authentication.                                       

article_post_auth_pgp_config_dir                  pgp configurations for  $etc_dir/pgp-article-post-auth        
                                                  article authentication.                                       

article_post_encrypt_gpg_config_dir               gpg configurations for  $etc_dir/gpg-article-post-encrypt     
                                                  article encryption.                                           

article_post_encrypt_pgp_config_dir               pgp configurations for  $etc_dir/pgp-article-post-encrypt     
                                                  article encryption.                                           

article_post_restrictions                         Ƥؤ            isolate_system_special_accounts       
                                                                          permit_member_maps isolate            

article_post_restrictions_reject_notice_data_type Ƥ᡼ɤΤ褦˨string                                
                                                  եɤ뤫                                            

article_sequence_file                             ֹ¸ե$sequence_file                        
                                                   (ߡ)                                                 

article_size_filter_rules                         ե륿󥰤Υ롼롣check_header_size check_body_size     
                                                                          permit                                

article_spam_filter_bogofilter_options            "-e" implies embedded   -e                                    
                                                  mode.                                                         

article_spam_filter_drivers                       SPAMåȤƻȤbogofilter                            
                                                  ץࡣ                                                

article_spam_filter_functions                     list up driver names    bogofilter                            
                                                  used as spam checker.                                         

article_spam_filter_rules                         SPAMȽꤵ줿硢header_rewrite                        
                                                  ɤ뤫                                                  

                                                  exit non-zero status                                          
article_spam_filter_spamassassin_options          code when spam caught if-e                                    
                                                  "-e" specified.                                               

article_spam_filter_spamc_options                 spamc optoins. "-c"     -c                                    
                                                  means check only.                                             

article_subject_tag                               Subject: Υ         [$ml_name:%05d]                       

                                                  ɥ쥹ƬβХȨ                                      
article_summary_file_format_address_length        Ͽ롣ܤ15                                    
                                                  ϥ                                                    

                                                                          reject_not_iso2022jp_japanese_string  
                                                                          reject_null_mail_body                 
                                                  ƥʬؤΥե륿reject_one_line_message               
article_text_plain_filter_rules                   󥰤Υ롼롣        reject_old_fml_command_syntax         
                                                                          reject_invalid_fml_command_syntax     
                                                                          reject_japanese_command_syntax        
                                                                          reject_ms_guid permit                 

article_thread_outline_greeting_en                åɤγפϤޤ[outline of this thread]              
                                                  ʬˤĤ밧                                                

article_thread_outline_greeting_ja                åɤγפϤޤ[ܥåɤΤ餹]                
                                                  ʬˤĤ밧                                                

                                                  åɤγפ򵭻ɨadd_outline_to_header                 
article_thread_outline_rules                      äݤˤɤɲä먢append_outline_to_body                
                                                  Τ                                                          

article_virus_filter_clamav_options               --mbox needed for mail  --quiet --mbox                        
                                                  files.                                                        

article_virus_filter_drivers                      륹åȤƻȨclamscan                              
                                                  ץ                                              

article_virus_filter_functions                    list up driver names    clamav                                
                                                  used as virus checker.                                        

article_virus_filter_rules                        륹Ƚꤵ줿쨢reject                                
                                                  硢ɤ뤫                                              

cgi_base_dir                                       CGI ֤ȥå $fml_owner_home_dir/public_html/      
                                                  ǥ쥯ȥ            cgi-bin/fml                           

cgi_charset_en                                    CGI ɽαѸǥե먢us-ascii                              
                                                   CHARSET                                                    

cgi_charset_ja                                    CGI ɽܸǥե먢euc-jp                                
                                                   CHARSET                                                    

cgi_default_charset                               CGI ɽΥǥե    $cgi_charset_ja                       
                                                  CHARSET                                                       

cgi_default_language                              CGI Υǥեȸ⡼japanese                              
                                                   (!= charset)                                               

cgi_language_select_list                          CGI Ѳǽʸ⡼japanese english                      
                                                  ɰ (!= charset)                                           

cgi_main_menu_color                               ǥեȤ bgcolor    #FFFFFF                               

                                                   CGI ǤΥɥ쥹                                       
cgi_menu_address_map_select_list                  κݤ٤ޥåװ쨢member recipient admin_member         
                                                                                                              

                                                   CGI ǤΥɥ쥹                                       
cgi_menu_default_address_map                      ˻ȤޥåפΥǥեrecipient                             
                                                                                                          

cgi_navigation_bar_color                          ǥեȤ bgcolor    #FFFFFF                               

                                                  chaddr ޥɤ                                             
chaddr_command_auth_type                          confirmation ǧ(먢confirmation                          
                                                  Хåǧ)                                                   

chaddr_command_operation_mode                     chaddr νϼư automatic                             
                                                  Ԥˤư                                          

                                                  gpg configurations for                                        
command_mail_auth_gpg_config_dir                  (user) commnad mail     $etc_dir/gpg-command-mail-auth        
                                                  authentication.                                               

                                                  pgp configurations for                                        
command_mail_auth_pgp_config_dir                  (user) commnad mail     $etc_dir/pgp-command-mail-auth        
                                                  authentication.                                               

command_mail_filter_reject_notice_data_type       Ƥ᡼ɤΤ褦˨string                                
                                                  եɤ뤫                                            

command_mail_filter_reject_notice_recipients      顼ΤΤ餻μԨmaintainer sender                     

command_mail_invalid_command_limit                ޥɥ᡼̤ꨢ100                                   
                                                  ˴ޤޤƤ                                                

                                                  ޥɥ᡼ˤ쨢                                      
command_mail_line_length_limit                    ԤΥޥɤĹ128                                   
                                                  ξ¡                                                      

command_mail_reply_prompt                         command prompt in       >>>                                   
                                                  message reply                                                 

                                                                          isolate_system_special_accounts       
command_mail_restrictions                         ޥɤؤ        permit_anonymous_command              
                                                                          permit_user_command isolate           

                                                                          check_header_size check_body_size     
command_mail_size_filter_rules                    ե륿󥰤Υ롼롣check_command_limit                   
                                                                          check_line_length_limit permit        

command_mail_valid_command_limit                  ޥɥ᡼̤ꨢ100                                   
                                                  ˴ޤޤƤ                                                

confirm_command_expire_limit                      confirmation ͭʴ 14d                                   
                                                  ֡                                                          

confirm_command_prefix                            confirmation ֻɽ confirm                               
                                                  ̤ʥޥ                                              

                                                  CREATE-ON-POST ưŪ                                       
createonpost_newml_maps                           ̤ͣ뤳ȤǤ樢pcre:$ml_home_dir/newml.allow.pcre    
                                                  Υꥹȡ                                                

                                                                          reject_system_special_accounts        
                                                  CREATE-ON-POST ưŪ reject_errormail                      
createonpost_newml_restrictions                   ̤ͣ뤳ȤǤ樢reject_fml8_managed_address           
                                                                      reject_createonpost_domain            
                                                                          permit_createonpost_maintainer_maps   
                                                                          permit_ml_domain                      

                                                                          reject_system_special_accounts        
                                                                          reject_errormail                      
createonpost_sender_restrictions                  CREATE-ON-POST ʣ̤ͣ reject_list_header_field              
                                                  ƤǤͤï    reject_fml8_managed_address           
                                                                          reject_createonpost_domain            
                                                                          permit_anyone                         

                                                                          reject_system_special_accounts        
                                                  REATE-ON-POST ʣ̤ͣ  reject_errormail                      
createonpost_subscribe_restrictions               subscribe Ǥͤïreject_fml8_managed_address           
                                                                        reject_createonpost_domain            
                                                                          permit_anyone                         

db_dir                                            Ƽǡե֤$var_dir/db                           
                                                  ǥ쥯ȥ                                                  

default_mail_body_size_limit                      ʸξ¤Υǥե10240000                              
                                                                                                          

default_mail_header_size_limit                    إåξ¤Υǥը102400                                
                                                                                                        

deny_file                                         deny ե           $ml_home_dir/deny                     

digest_header_rewrite_rules                       ΤޤȤᤪΥإèadd_software_info add_rfc2369         
                                                  񤭴롼뷲                                        

digest_member_maps                                ߡ                  $primary_member_maps                  

digest_recipient_maps                             ٤ƤΤޤȤ򤹤먢$primary_digest_recipient_map         
                                                  ٤ԤΥꥹ                                            

digest_sequence_file                              ޤȤꤷǸε$ml_home_dir/seq-digest               
                                                  ֹ¸ե                                        

directory_default_mode                            ǥ쥯ȥ0755                                  
                                                  Υǥեȥ⡼                                            

                                                  fml 饷ƥ˶먢                                      
domain_config_base_dir                            ǡ֤Υǥ쨢$ml_home_prefix/etc                   
                                                  ȥ                                                        

                                                  exim Ѥ˶뤿                                       
domain_exim_config_dir                            ե֤ǥ쥯$domain_config_base_dir/exim          
                                                  ȥ                                                          

domain_local_dir                                  domian local ʥǥ쥯 $ml_home_prefix                       
                                                  ȥꡣ                                                        

domain_local_log_file                             ɥᥤͭΥե$domain_local_dir/@log@               
                                                                                                              

domain_local_tmp_dir                              domian local  tmp ǥ$ml_home_prefix/@tmp@                 
                                                  쥯ȥꡣ                                                    

                                                  MTA Ѥ˶뤿ꨢ                                      
domain_mail_config_dir                            ե֤ǥ쥯Ȩ$domain_config_base_dir/mail          
                                                                                                              

                                                  postfix Ѥ˶뤿Ψ                                      
domain_postfix_config_dir                         ե֤ǥ쨢$domain_config_base_dir/postfix       
                                                  ȥ                                                        

                                                  MTA Ѥ˶뤿ꨢ                                      
domain_procmail_config_dir                        ե֤ǥ쥯Ȩ$domain_config_base_dir/procmail      
                                                                                                              

                                                  qmail Ѥ˶뤿ߨ                                      
domain_qmail_config_dir                           ե֤ǥ쥯$domain_config_base_dir/qmail         
                                                  ȥ                                                          

                                                  sendmail Ѥ˶뤿                                       
domain_sendmail_config_dir                        ե֤ǥ$domain_config_base_dir/sendmail      
                                                  쥯ȥ                                                      

                                                  error messages Υ                                       
error_mail_analyzer_cache_dir                     Ǽǥ쥯Ȩ$db_dir/error                         
                                                                                                              

error_mail_analyzer_cache_mode                    åΥ⡼      temporal                              

error_mail_analyzer_cache_size                    åΥ      14                                    

error_mail_analyzer_cache_type                    åΥ      File::CacheDir                        

error_mail_analyzer_function                      FML::Error::Analyze Ψhistgram                              
                                                  ؿ̾                                                      

error_mail_analyzer_function_select_list          FML::Error::Analyze Ψsimple_count histgram                 
                                                  ؿ̾                                                      

error_mail_analyzer_simple_count_limit            simple_count Υ顼 5                                     
                                                  ξ                                                      

etc_dir                                           ѥɥեʤɤ$ml_home_dir/etc                      
                                                  ֤ǥ쥯ȥ                                              

event_queue_dir                                   ȤΥ塼ǥ쨢$var_dir/event/queue                  
                                                  ȥ                                                        

                                                  password to fetch                                             
fetchfml_article_post_password                    article messages for    ********                              
                                                  $ml_name ML                                                   

                                                  username to fetch                                             
fetchfml_article_post_user                        article messages for    $ml_name                              
                                                  $ml_name ML                                                   

                                                  password to fetch                                             
fetchfml_command_mail_password                    command messages for    ********                              
                                                  $ml_name ML                                                   

                                                  username to fetch                                             
fetchfml_command_mail_user                        command messages for    $ml_name-ctl                          
                                                  $ml_name ML                                                   

fetchfml_error_mail_analyzer_password             password to fetch error ********                              
                                                  messages for $ml_name ML                                      

fetchfml_error_mail_analyzer_user                 username to fetch error $ml_name-admin                        
                                                  messages for $ml_name ML                                      

fetchfml_fetch_protocol                           protocol to fetch       pop3                                  
                                                  messages.                                                     

fetchfml_imap_servers                             imap servers fetchfml   localhost                             
                                                  process uses.                                                 

fetchfml_pop_servers                              pop servers fetchfml    localhost                             
                                                  process uses.                                                 

                                                  queue_dir fetchfml uses                                       
fetchfml_queue_dir                                as temporary incoming   $var_dir/mail/queue-fetchfml          
                                                  queue                                                         

file_default_mode                                 եΥǨ0600                                  
                                                  եȥ⡼                                                

get_command_request_limit                         get ޥɤǻǤ먢100                                   
                                                  ξ¡                                                

guide_file                                        GUIDE ե          $ml_home_dir/guide                    

help_file                                         إץե          $ml_home_dir/help                     

html_archive_dir                                  HTML 줿 $fml_owner_home_dir/public_html/fml/  
                                                  ǥ쥯ȥ (̤ͣ) mlarchive/$ml_domain/$ml_name         

html_tmp_base_url                                  CGI ΰ URL /~$fml_owner/fml/tmp                  

html_tmp_dir                                       CGI ΰǥ $fml_owner_home_dir/public_html/fml/  
                                                  쥯ȥ                tmp                                   

incoming_article_body_size_limit                  Ƥ줿ʸξ娢$default_mail_body_size_limit         
                                                                                                            

incoming_article_header_size_limit                Ƥ줿ΥإåΨ$default_mail_header_size_limit       
                                                                                                          

                                                  MTA  fml Ȥ                                       
incoming_command_mail_body_size_limit             ݤΥޥɥ᡼ʸ$default_mail_body_size_limit         
                                                  ξ                                                

                                                  MTA  fml Ȥ                                       
incoming_command_mail_header_size_limit           ݤΥޥɥ᡼Υإè$default_mail_header_size_limit       
                                                  ξ                                              

incoming_mail_body_checksum_cache_dir             Message-ID Υå $db_dir/body_checksum                 
                                                  Ǽǥ쥯ȥ                                        

incoming_mail_body_loop_check_rules               إåФ롼ץcheck_body_checksum                   
                                                  åΥ롼뷲                                                

incoming_mail_cache_dir                           Ϥ᡼֤Ǩ$var_dir/mail/incoming                
                                                  쥯ȥ                                                    

incoming_mail_cache_size                          Ϥ᡼粿128                                   
                                                  ̥å夹뤫                                            

incoming_mail_envelope_loop_check_rules           Envelope Ф롼 check_envelope_sender                 
                                                  åΥ롼뷲                                            

incoming_mail_header_loop_check_rules             إåФ롼ץcheck_message_id check_x_ml_info      
                                                  åΥ롼뷲          check_list_post                       

isolated_queue_dir                                top level directory to  $var_dir/mail/queue-isolated          
                                                  hold isolated messages                                        

isolated_queue_expire_limit                       expire messages in the  14d                                   
                                                  queue after this limit.                                       

language_preference_order                         ͥ          ja en                                 

ldap_base_dn                                      base DN to contact in   dc=$ml_name, dc=fml, dc=org           
                                                  modify, search et.al.                                         

ldap_bind_dn                                      DN to bind.             dc=fml, dc=org                        

ldap_query_add_as_ldif                            attributes to add into  fmlrecipient:&address fmlmember:&     
                                                  $ldap_base_dn entry.    address                               

                                                  attributes to remove    fmlrecipient:&address fmlmember:&     
ldap_query_delete_as_ldif                         from $ldap_base_dn      address                               
                                                  entry.                                                        

ldap_user                                         dummy                   fml                                   

list_addresses                                    ̤ͣȤɥ쥹: : $maintainer $article_post_address     
                                                  elena, elena-ctl        $command_mail_address                 

                                                  ǻꤷʤˡ                                        
list_command_default_maps                         list ޥɤɽ $recipient_maps                       
                                                  ٤ޥå                                                    

listinfo_base_dir                                 information 򤪤ǥ쨢$fml_owner_home_dir/public_html/fml/  
                                                  ȥ (̤ͣ)       listinfo                              

listinfo_dir                                      information 򤪤ǥ쨢$listinfo_base_dir/$ml_domain/$ml_name
                                                  ȥ (̤ͣ)                                             

listinfo_template_base_dir                        listinfo template       $fml_share_dir/listinfo               
                                                  template dir                                                  

listinfo_template_dir                             listinfo template       $fml_share_dir/listinfo/              
                                                                          $template_file_default_charset        

lock_dir                                          åե֤ǥ$var_dir/lock                         
                                                  쥯ȥ                                                      

lock_file                                         åե (㥤$lock_dir/giantlock                   
                                                  ȥåѤΥե˨                                      

lock_type                                         åΥ          flock                                 

                                                  ǸβԤɽ뤫                                      
log_command_tail_starting_location                Ĥޤ tail -100 log  100                                   
                                                  100 ʬ                                                  

                                                  ˤ䤵ե                                      
log_computer_output_engine                        ޥåȤϤݤνϨFML::Log::Print::Simple               
                                                  󥸥                                                    

log_dir                                           ե            $var_dir/log                          

log_file                                          ML ͭΥե롣 $ml_home_dir/log                      

log_format_type                                   log message format      process[pid]                          

log_rotate_archive_file_total                     log.0 log.1 ʤɤ .7                                     
                                                  ʬϺ礤ġ                                            

log_rotate_interval                               եơ稢86400                                 
                                                  Ԥʤֳ֡                                              

log_rotate_policy                                 ƥΥݥꥷsize                                  
                                                                                                            

log_rotate_size_limit                             եΥ300000                                

log_syslog_facility                               see syslog(3)           mail                                  

log_syslog_ident                                  ٤ƤΥå˨fml/$program_name                     
                                                  ʸ                                                  

log_syslog_options                                see syslog(3)           pid                                   

log_syslog_priority                               see syslog(3)           info                                  

log_type                                          ȤΥ (syslogfile                                  
                                                  ̤)                                                     

mail_aliases_file                                 MTA ˶뤿      $domain_mail_config_dir/aliases       
                                                  aliases ե                                              

mail_header_default_errors_to                     ǥեȤ Errors-To: $maintainer                           
                                                  إåե                                              

mail_header_default_list_help                     ǥեȤ list-help  <mailto:${command_mail_address}?body= 
                                                  إåե        help>                                 

mail_header_default_list_id                       ǥեȤ list-id  $ml_name ML <$ml_name.$ml_domain>     
                                                  åե                                                

mail_header_default_list_owner                    ǥեȤ list-owner <mailto:${maintainer}>                
                                                  إåե                                              

mail_header_default_list_post                     ǥեȤ list-post  <mailto:${article_post_address}>      
                                                  إåե                                              

mail_header_default_list_software                 default list-software   $fml_version                          
                                                  header field.                                                 

                                                  ǥեȤ            <mailto:${command_mail_address}?body= 
mail_header_default_list_subscribe                list-subscribe إå subscribe>                            
                                                                                                        

                                                  ǥեȤ            <mailto:${command_mail_address}?body= 
mail_header_default_list_unsubscribe              list-unsubscribe إå unsubscribe>                          
                                                  ե                                                    

mail_header_default_precedence                    ǥեȤ Precedence:bulk                                  
                                                  إåե                                              

mail_header_default_x_ml_name                     ǥեȤ X-ML-Name: $ml_name                              
                                                  إåե                                              

mail_queue_dir                                    mail queue Υǥ쥯 $var_dir/mail/queue                   
                                                                                                              

                                                  Сɤǧڤ먢                                      
member_maps                                       ݤ˸뤹٤ƤΥ$primary_member_map $admin_member_maps
                                                  Сꥹ                                                    

member_total_limit                                桼(ΤˤƲ 3000                                  
                                                  ǽ)ξ                                                   

                                                  ٤Ƥ Message-ID Υ                                      
message_id_cache_dir                              åǼǥ쨢$db_dir/message_id                    
                                                  ȥ                                                        

message_template_dir                              directory to hold       $fml_share_dir/message                
                                                  message template files                                        

                                                  ƣ̤ͣȤδ CGI  adduser deluser addadmin deladmin     
ml_admin_cgi_allowed_commands                     ǵ륳ޥɤΥꥹdigeston digestoff list log           
                                                                                                              

ml_admin_cgi_base_dir                             Σ̸ͣ CGI$cgi_base_dir/$ml_domain/ml-admin/    
                                                  ֤ǥ쥯ȥꡣ    $ml_name                              

ml_anonymous_cgi_allowed_commands                                         subscribe unsubscribe                 

ml_anonymous_cgi_base_dir                         Σ̤ͣΰ̿͸ CGI$anonymous_cgi_base_dir/$ml_domain/   
                                                  ֤ǥ쥯ȥꡣ    $ml_name                              

ml_anonymous_cgi_base_url                         Σ̤ͣΰ̿͸ CGI/~$fml_owner/cgi-bin/anonymous/       
                                                  ֤ URL Υ١   $ml_domain/$ml_name                   

ml_local_dir                                      ƣ̥ͣΥǥ쥯$ml_home_dir/local                    
                                                  ȥ                                                          

ml_local_lib_dir                                  ƣ̥ͣ lib/ Ǩ$ml_local_dir/lib                     
                                                  쥯ȥ                                                    

                                                  directory to hold ml                                          
ml_local_message_template_dir                     specific message        $ml_local_share_dir/message           
                                                  template files                                                

ml_local_share_dir                                ƣ̥ͣ share/ $ml_local_dir/share                   
                                                  ǥ쥯ȥ                                                  

                                                  queue_dir moderate uses                                       
moderate_queue_dir                                as temporary incoming   $var_dir/mail/queue-moderate          
                                                  queue                                                         

                                                  expire submitted queue                                        
moderate_queue_expire_limit                       after                   14d                                   
                                                  $moderate_expire_limit.                                       

                                                  Сɤǧڤ먢                                      
moderator_member_maps                             ݤ˸뤹٤ƤΥ$primary_moderator_member_map         
                                                  Сꥹ                                                    

moderator_recipient_maps                          ȤꤢƤ뤱$primary_moderator_recipient_map      
                                                  ɡȤƤϤʤ                                          

newml_command_ml_admin_default_address            ̺ͣκݤ˺먢$fml_owner                            
                                                  fml_owner ͤλꡣ                                        

newml_command_postfix_template_files              ̺ͣ (makefml     include include-ctl include-error     
                                                  newml)κݤ˺                                          

                                                  ̺ͣ (makefml     dot-qmail dot-qmail-ctl               
newml_command_qmail_template_files                newml)κݤ˺    dot-qmail-admin dot-qmail-request     
                                                                          dot-qmail-default                     

newml_command_template_files                      ̺ͣ (makefml     config.cf                             
                                                  newml)κݤ˺                                          

objective_file                                    objective ե      $ml_home_dir/objective                

outgoing_article_body_size_limit                  Ƥ줿( $default_mail_body_size_limit         
                                                  )ʸξ                                               

outgoing_article_header_size_limit                Ƥ줿( $default_mail_header_size_limit       
                                                  )إåξ                                             

                                                  fml  MTA Ϥݤ                                       
outgoing_command_mail_body_size_limit             ޥɥ᡼ʸ$default_mail_body_size_limit         
                                                  ξ                                                    

                                                  fml  MTA Ϥݤ                                       
outgoing_command_mail_header_size_limit           ޥɥ᡼Υإå$default_mail_header_size_limit       
                                                  ξ                                                  

outgoing_mail_cache_dir                           deliver ᡼֨$var_dir/mail/outgoing                
                                                  ǥ쥯ȥ                                                

outgoing_mail_cache_size                          ()᡼128                                   
                                                  粿̥å夹뤫                                      

outgoing_mail_header_errors_to                    Errors-To: ե   ${mail_header_default_errors_to}      

outgoing_mail_header_precedence                   Precedence: field       ${mail_header_default_precedence}     

                                                  X-ML-Name:                                              
outgoing_mail_header_x_ml_name                    X-Sequence ˤ ${mail_header_default_x_ml_name}      
                                                  ML ̾                                                         

postfix_verp_delimiters                           verps delimieters used  +=                                    
                                                  in postfix                                                    

postfix_virtual_map_file                          MTA ˶뤿      $domain_postfix_config_dir/virtual    
                                                  virtual map ե                                          

primary_admin_member_map                          ϿʤɤκݤоݤȤʤ먢file:$ml_home_dir/members-admin       
                                                  Сꥹ                                                

primary_admin_member_password_map                 ⡼ȴԤΥѥfile:$etc_dir/passwd-admin            
                                                  ɥե                                                    

primary_admin_recipient_map                       ȤꤢƤ뤱file:$ml_home_dir/recipients-admin    
                                                  ɡȤƤϤʤ                                          

primary_digest_member_map                         ߡ                  $primary_member_map                   

primary_digest_recipient_map                      ޤȤ򤹤ԤΨfile:$ml_home_dir/recipients-digest   
                                                  ꥹ                                                        

primary_member_map                                ϿʤɤκݤоݤȤʤ먢file:$ml_home_dir/members             
                                                  Сꥹ                                                

primary_moderator_member_map                      ϿʤɤκݤоݤȤʤ먢file:$ml_home_dir/members-moderator   
                                                  Сꥹ                                                

primary_moderator_recipient_map                   ȤꤢƤ뤱file:$ml_home_dir/recipients-moderator
                                                  ɡȤƤϤʤ                                          

primary_recipient_map                             ϿʤɤκݤоݤȤ먢file:$ml_home_dir/recipients          
                                                  ԤΥꥹ                                                

primary_user_db_gecos_map                         primary { address =>    $user_db_dir/gecos                    
                                                  gecos_field } map.                                            

                                                  primary { address =>                                          
primary_user_db_subscribe_date_map                unix time when          $user_db_dir/subscribe_date           
                                                  subscribed } map.                                             

privileged_command_prefix                         ѤΥޥɤɽèadmin                                 
                                                  ̤ʥޥ                                                  

procmail_aliases_file                             MTA ˶뤿      $domain_procmail_config_dir/procmailrc
                                                  aliases ե                                              

qmail_verp_delimiters                             verps delimieters used  -=                                    
                                                  in qmail                                                      

                                                  MTA ˶뤿      $domain_qmail_config_dir/             
qmail_virtual_map_file                            virtual map ե( virtualdomains                        
                                                  ץ졼)                                                   

qmail_virtualdomains_file                         virtual domain          /var/qmail/control/virtualdomains     
                                                  configurations for qmail                                      

recipient_maps                                    ٤ƤμԤΥꥹ  $primary_recipient_map                
                                                                          file:$ml_home_dir/actives             

recipient_total_limit                             桼(Τˤϼ 3000                                  
                                                  )ξ                                                     

sendmail_virtual_map_file                         MTA ˶뤿      $domain_sendmail_config_dir/          
                                                  virtual map ե    virtusertable                         

sequence_file                                     ֹ¸ե$ml_home_dir/seq                      
                                                                                                              

                                                  ML ֤ǥǡ                                       
shared_db_dir                                     ١򤪤ۡǥ쨢$ml_home_prefix/@db@                  
                                                  ȥ                                                        

                                                  ҤȤĤ SMTP ȥ󥶥                                      
smtp_recipient_limit                               MTA Ϥ 1000                                  
                                                  Ԥοξ                                                  

                                                  SMTP  MAIL FROM:                                            
smtp_sender                                       <$smtp_sender> ǻȤ $maintainer                           
                                                  ᡼                                                      

smtp_servers                                      ǥեȤ MTA ϼ [::1]:25 127.0.0.1:25                 
                                                  ʬ( localhost )                                           

spammer_maps                                      ѥޡȤݤ$primary_spammer_map                  
                                                  ɥ쥹Υꥹ                                            

spool_dir                                         ¸ǥ쥯Ȩ$ml_home_dir/spool                    
                                                                                                              

spool_type                                        סΥ        plane                                 

                                                                          select fml_address from $sql_table    
sql_query_find                                    : ƹԤФΤǨwhere fml_ml = '$ml_name' and         
                                                  Ϥʤ                  fml_domain = '$ml_domain' and         
                                                                          fml_address like '%&regexp%'          

                                                  : ƹԤФΤǨselect fml_address from $sql_table    
sql_query_get_next_key                            Ϥʤ                  where fml_ml = '$ml_name' and         
                                                                          fml_domain = '$ml_domain'             

                                                  : ƹԤФΤǨselect fml_address from $sql_table    
sql_query_getline                                 Ϥʤ                  where fml_ml = '$ml_name' and         
                                                                          fml_domain = '$ml_domain'             

                                                  subscribe ޥɤ                                          
subscribe_command_auth_type                       confirmation ǧ(먢confirmation                          
                                                  Хåǧ)                                                   

subscribe_command_operation_mode                  subscribe νϼưautomatic                             
                                                  Ԥˤư                                        

system_has_alarm                                  alarm(2) 뤫     yes                                   

system_has_fork                                   fork(2) 뤫      yes                                   

system_has_getpwgid                               getpwgid(2) 뤫  yes                                   

system_has_getpwuid                               getpwuid(2) 뤫  yes                                   

system_has_select                                 select(2) 뤫    yes                                   

                                                  OS ȤäƤ褦ʥ root postmaster MAILER-DAEMON msgs    
system_special_accounts                           Ȥ伫ưץਢnobody news majordomo listserv        
                                                  Υꥹ                listproc \S+\-help \S+\-subscribe \S+\
                                                                          -unsubscribe                          

thread_cgi_base_url                               CGI Хѥ          /cgi-bin/fmlthread.cgi                

thread_cgi_bgcolor                                CGI ̤δܥ顼    #E6E6FA                               

thread_cgi_title                                  CGI Υȥ          thread tracking system interface      

thread_db_dir                                     åȴϢǡ¸$shared_db_dir/thread                 
                                                  ǥ쥯ȥ                                              

thread_id_syntax                                  åֹΥ󥿥å$ml_name/%d                           
                                                                                                              

thread_sequence_file                              åֹ¸ը$ml_home_dir/thread.seq               
                                                                                                          

thread_subject_tag                                Subject ˤĤåȨ[$thread_id_syntax]                   
                                                  ֹΥ󥿥å                                            

thread_subject_tag_location                       Subject ˤĤåȨappended                              
                                                  ֹΥ󥿥åξꨢ                                      

thread_subject_tag_name                           åȤˤĤͣ̾  $ml_name                              

tmp_dir                                           Ū֥ե֨$ml_home_dir/tmp                      
                                                  ǥ쥯ȥ                                                

                                                  ML ֤ǥǡ                                       
udb_base_dir                                      ١򤪤ۡǥ쨢$ml_home_prefix/@udb@                 
                                                  ȥ                                                        

unsafe_header_fields                              ֤ʤä      Return-Receipt-To                     

                                                  unsubscribe ޥɤ                                        
unsubscribe_command_auth_type                     confirmation ǧ(먢confirmation                          
                                                  Хåǧ)                                                   

unsubscribe_command_operation_mode                unsubscribe νϼưautomatic                             
                                                  Ԥˤư                                      

                                                  FML::Credential ǥɥ쨢                                      
use_address_compare_function                      Ӥ򤹤뤫?(yes                                   
                                                  )                                                           

use_admin_command_mail_function                   admin ޥɥ᡼Ȩno                                    
                                                                                                          

                                                  WWW  subscribe                                          
use_anonymous_cgi_function                        unsubscribe ꥯȤyes                                   
                                                  դ                                                    

use_article_delivery                              뵡ǽȤyes                                   
                                                  ݤ                                                      

use_article_expire                                Ťưõ뤫no                                    
                                                  ݤ                                                        

use_article_filter_reject_notice                  ե륿Ƥ줿Ȥyes                                   
                                                                                                          

use_article_header_filter                         إå򺬵ˤըyes                                   
                                                  륿󥰤򤹤뤫                                        

use_article_header_rewrite                        إå񴹤򤹤먢yes                                   
                                                                                                            

use_article_mime_component_filter                 MIME ι¤˴Ť yes                                   
                                                  륿Ԥʤ                                                

use_article_non_mime_filter                       Ȥꤢߡ      yes                                   

use_article_post_function                         ץਢ${use_distribute_program:-yes}        
                                                  򤽤⤽Ȥ                                            

use_article_size_filter                           򺬵ˤըyes                                   
                                                  륿󥰤򤹤뤫                                        

                                                  SPAMåȤè                                      
use_article_spam_filter                           ǥեȤǤ̵no                                    
                                                                                                            

use_article_spool                                 򥹥סǥ쥯Ȩ${use_spool:-yes}                     
                                                  ¸                                                  

                                                  μưõ                                                
use_article_summary_file_expire                   ($use_article_expire) no                                    
                                                  ɽ                                                      

use_article_text_plain_filter                     Ƭ text/plain ʬ˨yes                                   
                                                  Фե륿                                              

use_article_thread_outline                        ưŪ˥åɤγפno                                    
                                                  ɲä뤫ݤ                                          

                                                  Viruså                                       
use_article_virus_filter                          äǥեȤǤϨno                                    
                                                  ̵                                                        

use_command_mail_filter_reject_notice             ե륿Ƥ줿Ȥyes                                   
                                                                                                          

use_command_mail_function                         ޥɥ᡼Ȥ${use_command_mail_program:-yes}      

use_command_mail_reply_preamble                   ޥɥ᡼ֻ訢yes                                   
                                                  Ƭ                                                          

                                                  ޥɥ᡼ֻκǨ                                      
use_command_mail_reply_trailor                    ˽̤ΥޥĨyes                                   
                                                  뤫ݤ                                                  

use_command_mail_size_filter                      򺬵ˤըyes                                   
                                                  륿󥰤򤹤뤫                                        

use_createonpost_function                         CREATE-ON-POST ǽ yes                                   
                                                  ݤ                                                    

use_debug                                         ǥХåǥեȤ  no                                    
                                                  NO ˤƤ롣                                               

use_digest_header_rewrite                         إå񴹤򤹤먢yes                                   
                                                                                                            

use_error_mail_analyzer_function                  顼ϥץȨ${use_error_analyzer_program:-yes}    
                                                                                                          

                                                  use fetchfml                                                  
use_fetchfml_article_post_function                article_post function oryes                                   
                                                  not.                                                          

                                                  use fetchfml                                                  
use_fetchfml_command_mail_function                command_mail function oryes                                   
                                                  not.                                                          

                                                  use fetchfml                                                  
use_fetchfml_error_mail_analyzer_function         error_mail_analyzer     yes                                   
                                                  function or not.                                              

use_fetchfml_function                             use fetchfml function orno                                    
                                                  not.                                                          

use_html_archive                                   HTML 뤫ݤyes                                   

use_incoming_mail_body_loop_check                 إå򺬵ˤ먢yes                                   
                                                  ץå򤹤뤫                                        

use_incoming_mail_cache                           Ϥ᡼򥭥èyes                                   
                                                  夹뤫                                                  

                                                  Envelope 򺬵ˤ                                       
use_incoming_mail_envelope_loop_check             롼ץå򤹤뤫yes                                   
                                                                                                              

use_incoming_mail_header_loop_check               إå򺬵ˤ먢yes                                   
                                                  ץå򤹤뤫                                        

use_lock                                          å򤹤뤫        yes                                   

use_log                                           Ȥ굡ǽͭˤ먢yes                                   

use_log_computer_output                           ˤ䤵եno                                    
                                                  ޥåȤǥϤ롣                                      

use_log_rotate                                    եƥno                                    
                                                  Ԥʤݤ                                                

use_member_total_limit                            桼(ΤˤƲ no                                    
                                                  ǽ)ξ¤ߤ뤫                                       

use_moderate_function                             use moderate function oryes                                   
                                                  not.                                                          

use_outgoing_mail_cache                           ()᡼yes                                   
                                                  å夹뤫                                            

use_recipient_total_limit                         桼(Τˤϼ no                                    
                                                  )ξ¤ߤ뤫                                         

use_smtp_log                                      SMTP ͻҤˤȤ yes                                   
                                                                                                            

use_spool                                         򥹥סǥ쥯Ȩyes                                   
                                                  ¸                                                  

                                                  åץƥ                                        
use_thread_subject_tag                            Subject Ѥ뤫no                                    
                                                                                                              

use_thread_track                                  åץƥȨyes                                   
                                                                                                            

                                                                          help get mget get mget send subscribe 
user_command_mail_allowed_commands                ͭʥޥɰ񤯨add unsubscribe bye on off digest     
                                                                          remove resign signoff chaddr confirm  
                                                                          guide info admin objective summary    

user_db_dir                                       user database directory.$db_dir/user_info                     

user_db_gecos_maps                                { address => gecos_field$primary_user_db_gecos_map            
                                                  } maps.                                                       

user_db_subscribe_date_maps                       { address => unix time  $primary_user_db_subscribe_date_map   
                                                  when subscribed } maps.                                       

var_dir                                           ޤޤŪˤĤ  $ml_home_dir/var                      

welcome_file                                      welcome ե        $ml_home_dir/welcome                  




ѿ (饹ʬ)

__exceptional__ {
    ?     $timezone
}

address {

   address_compare {
    ?     $address_compare_function_domain_matching_level
          $address_compare_function_type
          $use_address_compare_function
   }
}

admin {

   admin_command {
   }

   admin_command_mail {
    ?     $admin_command_mail_allowed_commands
          $admin_command_mail_auth_gpg_config_dir
    ?     $admin_command_mail_auth_gpg_config_dir_alias
          $admin_command_mail_auth_pgp_config_dir
    ?     $admin_command_mail_auth_pgp_config_dir_alias
          $admin_command_mail_restrictions
          $use_admin_command_mail_function
   }

   admin_member {
          $admin_member_maps
          $primary_admin_member_map
   }

   admin_member_password {
          $admin_member_password_maps
          $primary_admin_member_password_map
   }

   admin_recipient {
          $admin_recipient_maps
          $primary_admin_recipient_map
   }

   admin_* {
    ?     $admin_cgi_allowed_commands
          $admin_cgi_base_dir
   }
}

anonymous {

   anonymous_cgi {
          $anonymous_cgi_base_dir
          $anonymous_cgi_expire_limit
    ?     $ml_anonymous_cgi_allowed_commands
          $ml_anonymous_cgi_base_dir
    ?     $ml_anonymous_cgi_base_url
          $use_anonymous_cgi_function
   }

   anonymous_command {
    ?     $anonymous_command_mail_allowed_commands
   }
}

article {

   article_delivery {
    ?     $article_delivery_transport
          $use_article_delivery
   }

   article_digest {
          $use_article_digest_function
   }

   article_expire {
          $article_expire_limit
          $use_article_expire
   }

   article_filter {
          $article_filter_functions
          $use_article_filter
   }

   article_filter_reject_notice {
          $article_filter_reject_notice_data_type
    ?     $article_filter_reject_notice_recipients
          $use_article_filter_reject_notice
   }

   article_header_filter {
          $article_header_filter_rules
          $use_article_header_filter
   }

   article_header_rewrite {
          $article_header_rewrite_rules
          $use_article_header_rewrite
   }

   article_mime_component_filter {
          $article_mime_component_filter_rules
          $use_article_mime_component_filter
   }

   article_non_mime_filter {
          $article_non_mime_filter_rules
          $use_article_non_mime_filter
   }

   article_post {
    ?     $article_post_address
    ?     $article_post_article_thread_lifetime
          $article_post_auth_gpg_config_dir
          $article_post_auth_pgp_config_dir
          $article_post_encrypt_gpg_config_dir
          $article_post_encrypt_pgp_config_dir
          $article_post_restrictions
          $article_post_restrictions_reject_notice_data_type
          $use_article_post_function
   }

   article_size_filter {
          $article_size_filter_rules
          $use_article_size_filter
   }

   article_spam_filter {
    ?     $article_spam_filter_bogofilter_options
    ?     $article_spam_filter_drivers
          $article_spam_filter_functions
          $article_spam_filter_rules
    ?     $article_spam_filter_spamassassin_options
    ?     $article_spam_filter_spamc_options
          $use_article_spam_filter
   }

   article_spool {
          $use_article_spool
   }

   article_summary_file_expire {
          $use_article_summary_file_expire
   }

   article_text_plain_filter {
          $article_text_plain_filter_rules
          $use_article_text_plain_filter
   }

   article_thread_outline {
    ?     $article_thread_outline_greeting_en
    ?     $article_thread_outline_greeting_ja
          $article_thread_outline_rules
          $use_article_thread_outline
   }

   article_virus_filter {
    ?     $article_virus_filter_clamav_options
    ?     $article_virus_filter_drivers
          $article_virus_filter_functions
          $article_virus_filter_rules
          $use_article_virus_filter
   }

   article_* {
    ?     $article_header_list_help
    ?     $article_header_list_id
    ?     $article_header_list_owner
    ?     $article_header_list_post
    ?     $article_header_list_software
    ?     $article_header_list_subscribe
    ?     $article_header_list_unsubscribe
          $article_message_id_cache_dir
          $article_sequence_file
    ?     $article_subject_tag
          $article_summary_file
    ?     $article_summary_file_format_address_length
    ?     $article_summary_file_format_style
   }
}

cgi {

   cgi_* {
          $cgi_base_dir
    ?     $cgi_charset_en
    ?     $cgi_charset_ja
    ?     $cgi_default_charset
    ?     $cgi_default_language
    ?     $cgi_language_select_list
    ?     $cgi_main_menu_color
    ?     $cgi_menu_address_map_select_list
          $cgi_menu_default_address_map
    ?     $cgi_navigation_bar_color
   }
}

command {

   command_mail {
    ?     $command_mail_address
          $command_mail_auth_gpg_config_dir
          $command_mail_auth_pgp_config_dir
          $command_mail_line_length_limit
    ?     $command_mail_reply_prompt
          $command_mail_restrictions
          $use_command_mail_function
   }

   command_mail_filter {
          $command_mail_filter_functions
          $use_command_mail_filter
   }

   command_mail_filter_reject_notice {
          $command_mail_filter_reject_notice_data_type
    ?     $command_mail_filter_reject_notice_recipients
          $use_command_mail_filter_reject_notice
   }

   command_mail_invalid_command {
          $command_mail_invalid_command_limit
   }

   command_mail_reply_preamble {
          $use_command_mail_reply_preamble
   }

   command_mail_reply_trailor {
          $use_command_mail_reply_trailor
   }

   command_mail_size_filter {
          $command_mail_size_filter_rules
          $use_command_mail_size_filter
   }

   command_mail_valid_command {
          $command_mail_valid_command_limit
   }
}

admin_command {

   admin_command {
   }

   admin_command_mail {
   }
}

anonymous_command {

   anonymous_command {
   }
}

chaddr_command {

   chaddr_command {
          $chaddr_command_auth_type
    ?     $chaddr_command_operation_mode
   }
}

confirm_command {

   confirm_command {
          $confirm_command_expire_limit
    ?     $confirm_command_prefix
   }
}

get_command {

   get_command {
          $get_command_request_limit
   }
}

list_command {

   list_command {
   }

   list_command_default {
          $list_command_default_maps
   }
}

log_command {

   log_command {
    ?     $log_command_tail_starting_location
   }
}

newml_command {

   newml_command {
    ?     $newml_command_init_private_directories
    ?     $newml_command_init_public_directories
    ?     $newml_command_ml_admin_default_address
    ?     $newml_command_mta_config_list
          $newml_command_postfix_template_files
          $newml_command_qmail_template_files
          $newml_command_template_files
   }
}

privileged_command {

   privileged_command {
    ?     $privileged_command_prefix
   }
}

rmml_command {

   rmml_command {
    ?     $rmml_command_mta_config_list
   }
}

subscribe_command {

   subscribe_command {
          $subscribe_command_auth_type
    ?     $subscribe_command_operation_mode
   }
}

unsubscribe_command {

   unsubscribe_command {
          $unsubscribe_command_auth_type
    ?     $unsubscribe_command_operation_mode
   }
}

user_command {

   user_command {
    ?     $user_command_mail_allowed_commands
   }
}

createonpost {

   createonpost {
          $use_createonpost_function
   }

   createonpost_newml {
          $createonpost_newml_maps
          $createonpost_newml_restrictions
   }

   createonpost_sender {
          $createonpost_sender_maps
          $createonpost_sender_restrictions
   }

   createonpost_subscribe {
          $createonpost_subscribe_maps
          $createonpost_subscribe_restrictions
   }
}

debug {

   debug {
          $use_debug
   }
}

default {

   default_* {
          $default_mail_body_size_limit
          $default_mail_header_size_limit
   }
}

digest {

   digest_header_rewrite {
          $digest_header_rewrite_rules
          $use_digest_header_rewrite
   }

   digest_member {
          $digest_member_maps
          $primary_digest_member_map
   }

   digest_recipient {
          $digest_recipient_maps
          $primary_digest_recipient_map
   }

   digest_* {
          $digest_sequence_file
   }
}

directory {

   directory_* {
    ?     $directory_default_mode
    ?     $directory_private_mode
    ?     $directory_public_mode
   }
}

domain {

   domain_* {
          $domain_config_base_dir
          $domain_exim_config_dir
          $domain_local_dir
          $domain_local_tmp_dir
          $domain_mail_config_dir
          $domain_postfix_config_dir
          $domain_procmail_config_dir
          $domain_qmail_config_dir
          $domain_sendmail_config_dir
   }
}

error {

   error_mail_analyzer {
          $error_mail_analyzer_cache_dir
    ?     $error_mail_analyzer_cache_mode
    ?     $error_mail_analyzer_cache_size
          $error_mail_analyzer_cache_type
    ?     $error_mail_analyzer_function
    ?     $error_mail_analyzer_function_select_list
          $error_mail_analyzer_simple_count_limit
          $use_error_mail_analyzer_function
   }
}

fetchfml {

   fetchfml {
    ?     $fetchfml_fetch_protocol
    ?     $fetchfml_imap_servers
    ?     $fetchfml_pop_servers
          $fetchfml_queue_dir
          $use_fetchfml_function
   }

   fetchfml_article_post {
    ?     $fetchfml_article_post_password
    ?     $fetchfml_article_post_user
          $use_fetchfml_article_post_function
   }

   fetchfml_command_mail {
    ?     $fetchfml_command_mail_password
    ?     $fetchfml_command_mail_user
          $use_fetchfml_command_mail_function
   }

   fetchfml_error_mail_analyzer {
    ?     $fetchfml_error_mail_analyzer_password
    ?     $fetchfml_error_mail_analyzer_user
          $use_fetchfml_error_mail_analyzer_function
   }
}

html {

   html_archive {
    ?     $html_archive_charset_en
    ?     $html_archive_charset_ja
    ?     $html_archive_default_charset
          $html_archive_dir
          $html_archive_index_order_type
          $use_html_archive
   }

   html_archive_address_mask {
          $html_archive_address_mask_type
          $use_html_archive_address_mask
   }

   html_* {
    ?     $html_tmp_base_url
          $html_tmp_dir
   }
}

incoming {

   incoming_article {
          $incoming_article_body_size_limit
          $incoming_article_header_size_limit
   }

   incoming_command_mail {
          $incoming_command_mail_body_size_limit
          $incoming_command_mail_header_size_limit
   }

   incoming_mail_body_loop_check {
          $incoming_mail_body_loop_check_rules
          $use_incoming_mail_body_loop_check
   }

   incoming_mail_cache {
          $incoming_mail_cache_dir
    ?     $incoming_mail_cache_size
          $use_incoming_mail_cache
   }

   incoming_mail_envelope_loop_check {
          $incoming_mail_envelope_loop_check_rules
          $use_incoming_mail_envelope_loop_check
   }

   incoming_mail_header_loop_check {
          $incoming_mail_header_loop_check_rules
          $use_incoming_mail_header_loop_check
   }

   incoming_* {
          $incoming_mail_body_checksum_cache_dir
   }
}

ldap {

   ldap_* {
    ?     $ldap_base_dn
    ?     $ldap_bind_dn
    ?     $ldap_password
    ?     $ldap_query_add_as_ldif
    ?     $ldap_query_delete_as_ldif
    ?     $ldap_query_find_result_attribute
    ?     $ldap_query_find_search_filter
    ?     $ldap_query_get_next_key_result_attribute
    ?     $ldap_query_get_next_key_search_filter
    ?     $ldap_query_getline_result_attribute
    ?     $ldap_query_getline_search_filter
    ?     $ldap_servers
    ?     $ldap_user
   }
}

list {

   list_command {
   }

   list_command_default {
   }

   list_* {
    ?     $list_addresses
   }
}

lock {

   lock {
          $lock_dir
          $lock_file
          $lock_type
          $use_lock
   }
}

log {

   log {
          $domain_local_log_file
          $log_dir
          $log_file
    ?     $log_file_charset_en
    ?     $log_file_charset_ja
    ?     $log_file_default_charset
          $log_format_type
    ?     $log_syslog_facility
    ?     $log_syslog_ident
    ?     $log_syslog_options
    ?     $log_syslog_priority
    ?     $log_syslog_servers
          $log_type
          $use_log
   }

   log_command {
   }

   log_computer_output {
    ?     $log_computer_output_engine
          $use_log_computer_output
   }

   log_rotate {
    ?     $log_rotate_archive_file_total
    ?     $log_rotate_interval
    ?     $log_rotate_policy
          $log_rotate_size_limit
          $use_log_rotate
   }
}

mail {

   mail_* {
          $mail_aliases_file
    ?     $mail_header_default_errors_to
    ?     $mail_header_default_list_help
    ?     $mail_header_default_list_id
    ?     $mail_header_default_list_owner
    ?     $mail_header_default_list_post
    ?     $mail_header_default_list_software
    ?     $mail_header_default_list_subscribe
    ?     $mail_header_default_list_unsubscribe
    ?     $mail_header_default_precedence
    ?     $mail_header_default_x_ml_name
          $mail_queue_dir
   }
}

maintainer {

   maintainer_recipient {
          $maintainer_recipient_maps
   }

   maintainer_* {
    ?     $maintainer
    ?     $maintainer_signature
   }
}

member {

   member {
          $member_maps
          $primary_member_map
   }

   member_total_limit {
          $member_total_limit
          $use_member_total_limit
   }
}

message {

   message_* {
    ?     $message_default_subject
          $message_id_cache_dir
          $message_template_dir
   }
}

ml_local {

   ml_local_* {
          $ml_local_dir
          $ml_local_lib_dir
          $ml_local_message_template_dir
          $ml_local_share_dir
   }
}

moderate {

   moderate {
          $moderate_queue_dir
          $moderate_queue_expire_limit
          $use_moderate_function
   }
}

moderator {

   moderator_member {
          $moderator_member_maps
          $primary_moderator_member_map
   }

   moderator_recipient {
          $moderator_recipient_maps
          $primary_moderator_recipient_map
   }
}

outgoing {

   outgoing_article {
          $outgoing_article_body_size_limit
          $outgoing_article_header_size_limit
   }

   outgoing_command_mail {
          $outgoing_command_mail_body_size_limit
          $outgoing_command_mail_header_size_limit
   }

   outgoing_mail_cache {
          $outgoing_mail_cache_dir
    ?     $outgoing_mail_cache_size
          $use_outgoing_mail_cache
   }

   outgoing_* {
    ?     $outgoing_mail_header_errors_to
    ?     $outgoing_mail_header_precedence
    ?     $outgoing_mail_header_x_ml_name
   }
}

path {

   path_* {
          $path_bogofilter
          $path_bunzip2
          $path_bzip2
          $path_cksum
          $path_clamscan
          $path_compress
          $path_emacs
          $path_gpg
          $path_gpgsplit
          $path_gpgv
          $path_gunzip
          $path_gzcat
          $path_gzip
          $path_ish
          $path_kakasi
          $path_less
          $path_lha
          $path_ls
          $path_makemap
          $path_md5
          $path_more
          $path_mule
          $path_namazu
          $path_newaliases
          $path_ng
          $path_nkf
          $path_perl
          $path_pgp
          $path_pgp5
          $path_pgpe
          $path_pgpk
          $path_pgps
          $path_pgpv
          $path_postalias
          $path_postconf
          $path_postfix
          $path_postmap
          $path_sendmail
          $path_spamassassin
          $path_spamc
          $path_spamd
          $path_sum
          $path_tar
          $path_uuencode
          $path_vi
          $path_w3m
          $path_xemacs
          $path_zcat
   }
}

post {
}

postfix {

   postfix_* {
    ?     $postfix_verp_delimiters
          $postfix_virtual_map_file
   }
}

procmail {

   procmail_* {
          $procmail_aliases_file
   }
}

qmail {

   qmail_* {
    ?     $qmail_verp_delimiters
          $qmail_virtual_map_file
          $qmail_virtualdomains_file
   }
}

recipient {

   recipient {
          $primary_recipient_map
          $recipient_maps
          $smtp_recipient_limit
   }

   recipient_total_limit {
          $recipient_total_limit
          $use_recipient_total_limit
   }
}

reply_message {
}

report_mail {

   report_mail_* {
    ?     $report_mail_charset_en
    ?     $report_mail_charset_ja
    ?     $report_mail_default_charset
    ?     $report_mail_subject
   }
}

sendmail {

   sendmail_* {
          $sendmail_virtual_map_file
   }
}

smtp {

   smtp_log {
          $use_smtp_log
   }

   smtp_* {
    ?     $smtp_sender
    ?     $smtp_servers
   }
}

spammer {

   spammer {
          $primary_spammer_map
          $spammer_maps
   }
}

spool {

   spool {
          $spool_dir
    ?     $spool_subdir_unit
          $spool_type
          $use_spool
   }
}

sql {

   sql_* {
    ?     $sql_database
    ?     $sql_password
    ?     $sql_query_add
    ?     $sql_query_delete
    ?     $sql_query_find
    ?     $sql_query_get_next_key
    ?     $sql_query_getline
    ?     $sql_servers
    ?     $sql_table
    ?     $sql_user
   }
}

system {

   system_* {
    ?     $system_default_umask
    ?     $system_has_alarm
    ?     $system_has_fork
    ?     $system_has_getpwgid
    ?     $system_has_getpwuid
    ?     $system_has_select
    ?     $system_special_accounts
    ?     $system_timezone
   }
}

template_file {

   template_file_* {
    ?     $template_file_charset_en
    ?     $template_file_charset_ja
    ?     $template_file_charset_select_list
    ?     $template_file_default_charset
   }
}

thread {

   thread_subject_tag {
    ?     $thread_subject_tag
    ?     $thread_subject_tag_location
    ?     $thread_subject_tag_name
          $use_thread_subject_tag
   }

   thread_track {
          $use_thread_track
   }

   thread_* {
    ?     $thread_cgi_base_url
    ?     $thread_cgi_bgcolor
    ?     $thread_cgi_title
          $thread_db_dir
    ?     $thread_id_syntax
          $thread_sequence_file
   }
}

user {

   user_command {
   }

   user_db_gecos {
          $primary_user_db_gecos_map
          $user_db_gecos_maps
   }

   user_db_subscribe_date {
          $primary_user_db_subscribe_date_map
          $user_db_subscribe_date_maps
   }

   user_* {
          $user_db_dir
   }
}

x {
}


_file$ {
          $compat_old_fml_default_config_ph_file
          $deny_file
          $guide_file
          $help_file
          $objective_file
          $sequence_file
          $welcome_file
}

_dir$ {
          $compat_config_base_dir
          $compat_old_fml_config_dir
          $db_dir
          $etc_dir
          $event_queue_dir
          $isolated_queue_dir
          $listinfo_base_dir
          $listinfo_dir
          $listinfo_template_base_dir
          $listinfo_template_dir
          $ml_admin_cgi_base_dir
          $shared_db_dir
          $tmp_dir
          $udb_base_dir
          $var_dir
}


*** unclassified ***
    ?     $file_default_mode
          $isolated_queue_expire_limit
    ?     $language_preference_order
    ?     $ml_admin_cgi_allowed_commands
    ?     $unsafe_header_fields



쥷ԡs

1. config.cf ǻȤäɤؿϤɤǤ

1. config.cf ǻȤäɤؿϤɤǤ

ĤޤꡢեåѲǽʴؿϲǤȤǤˤϡ$curproc
֥Ȥ󶡤᥽åɡפȤʤޤ

ƤΥ֥Ȥ˺᥽åɤϾѻߤʤȻפޤ
 $curproc ֥Ȥ󶡤᥽åɤȤƤΤ¿Ǥ

: fml4 ե config.ph Ȱۤʤ fml8  config.cf Ǥ =cut 
ѿ񤯾Ǥ perl δؿ񤯾ǤϤޤ =cut θˤϥե
Ĥޤ perl script 񤭤ޤ



Chapter 34. ץκ

ץ(ޥɥ饤)

ޤ FML::Process:: 饹ʲ˥⥸塼ѰդޤǾθܤȤƤ
FML::Process::Calender 繽ȤƤ FML::Process::Distribute (
) 򻲹ͤˤɤǤ礦

 FML::Process::⥸塼뤬ѰդʤФʤؿ(᥽å)
FML::Process::Flow::ProcessStart() 򸫤ʬޤ
FML::Process::Flow::ProcessStart() ץưƤޤΤǡȤé
äƤߤƲ 2002/07 ߡΥ᥽åɤɬܤǤ

new()
prepare()
verify_request()
run()
finish()
help()

ߡǤ褤ΤǡΥ᥽åɤŬѰդƤƲƥ᥽åɤζ
ϡFML::Process ʲΥ⥸塼򸫤Ʋ᥽åɤΤ뤿ˤ
繽 FML::Process::Distribute Ŭ⤷ޤ

        FML::Process::Kernel
                |       uses-a FML::Process::{Flow,Utils} FML::Parse ...
                |
                A
        FML::Process::
                        uses-a FML::ۤۤ
                        uses-a CPAN ⥸塼
                        uses-a 

FML::Process::Ѱդ顢 etc/modules ˥ץȥ饹δط
Ʋϥץ̾ɤ٤⥸塼ե
ޤ etc/command_line_options ˥ץȣ̵ͣ̾ͭʤɤƤ
̤̾ꡢǽʥץˤĤƻꤹեǤΥե
եޥåȤϡȤ򸫤ƿ¬Ʋ Unix Υڡ
ʤΤǡʬޤ

飳ĤСץμ¹Ԥνޤ

ǸˡƤӤ̾Υե loader  link ⤷ symlink 뤳ȤǼ¹
ǽˤʤޤȤСɸΥ󥹥ȡǤϡΤ褦ˤʤäƤޤ

% ls -l /usr/local/libexec/fml
lrwxr-xr-x  1 root  wheel     6 Apr 14 18:25 command@ -> loader
drwxr-xr-x  2 root  wheel   512 Apr 14 18:25 current-20030414/
lrwxr-xr-x  1 root  wheel     6 Apr 14 18:25 digest@ -> loader
lrwxr-xr-x  1 root  wheel     6 Apr 14 18:25 distribute@ -> loader
lrwxr-xr-x  1 root  wheel     6 Apr 14 18:25 error@ -> loader
lrwxr-xr-x  1 root  wheel     6 Apr 14 18:25 fml@ -> loader
lrwxr-xr-x  1 root  wheel     6 Apr 14 18:25 fml.pl@ -> loader
lrwxr-xr-x  1 root  wheel     6 Apr 14 18:25 fmladdr@ -> loader
lrwxr-xr-x  1 root  wheel     6 Apr 14 18:25 fmlalias@ -> loader
lrwxr-xr-x  1 root  wheel     6 Apr 14 18:25 fmlconf@ -> loader
lrwxr-xr-x  1 root  wheel     6 Apr 14 18:25 fmldoc@ -> loader
lrwxr-xr-x  1 root  wheel     6 Apr 14 18:25 fmlhtmlify@ -> loader
lrwxr-xr-x  1 root  wheel     6 Apr 14 18:25 fmlsch@ -> loader
lrwxr-xr-x  1 root  wheel     6 Apr 14 18:25 fmlserv@ -> loader
-rwxr-xr-x  1 root  wheel  6863 Apr 14 18:24 loader*
lrwxr-xr-x  1 root  wheel     6 Apr 14 18:25 makefml@ -> loader
lrwxr-xr-x  1 root  wheel     6 Apr 14 18:25 mead@ -> loader

ǥեȤΥץˤĤƤϡ󥹥ȡ餬 symlink 򤷤Ƥ
Ƥޤ󥹥ȡ symlink ()¹ԤƤ餦ɬפʤ顢etc/
install.cf.in  bin_programs  libexec_programs ˥ץ̾Ʋ
ƥʳǤϼư symlink ԤʤäƤޤޤ



ץ( CGI )

¤ξܺ٤  Chapter 42 򻲾ȤƤ

CGI ΥץΤ FML::CGI::Ȥ饹Υ⥸塼Ǥ CGI 
ǤϼΤ褦ʡ֥Ȥδطޤ

        FML::Process::Kernel
                |
                A
        FML::Process::CGI::Kernel   uses-a CGI
                |
                A
        FML::Process::CGI
                |
                A
        FML::CGI::

CGI Υץν⥳ޥɥ饤ץƱͤǤ֤̾Ƕ̤
뤿 CGI ץȤΥ⥸塼 FML::Process ǤϤʤ FML::CGI ʲ
Ƥޤ¸ FML::CGI Υ⥸塼ܤˤơ FML::CGI::Ŭ
ѰդƲ

FML::CGI::ϡѰդ᥽åɤ

html_start()
html_end()



run_cgi_main()
run_cgi_title()
run_cgi_navigator()
run_cgi_menu()
run_cgi_command_help()
run_cgi_options()

ˤʤȤǤȤǰĤβ [23] Ƥޤ

 FML::Process::CGI  verify_request()  run() ƤФ줿
Υ᥽åɤȤʤäƤޤ

CGI ץ FML::Process::CGI Ƕư졢run() ᥽åɤ

$curproc->html_start($args);
̤뤿 run_cgi_xxx() ᥽åɷƤӽФ
$curproc->html_end($args);

ν FML::CGI:: ʲΥ᥽åɷƤӽФƤޤ

ʤߤˡ2001/11 ߡFML::Process::CGI::Kernel ץȤϡʲΥ᥽
 [24] ʤäƤޤ

new()
prepare()
verify_request()
run()
finish()

äˡԽɬפϤʤǤ礦ʤߤ FML::CGI::  run() Ƥ
Ƥޤ



Chapter 35. fml8 Υ᡼ƥ

fml4  fml8 

fml8 ŪΰĤϡСꥹȤμˤ륳ɤݲ


ƥݲ줿 IO ؤѤξƤޤ

ˤݲ줿 Mail::Delivery 饹򼡤Τ褦˻ȤäƤޤ

Mail::Delivery::* °륯饹 SMTP  LMTP ؤΥ󥿡ե
󶡤ޤĤޤ Mail::Delivery  Mail::Delivery ʲ饹 SMTP
ESMTP ؤΥ󥿡ե󶡤륢ץؤǤ

ȤмΤ褦˻Ȥޤ

    use Mail::Delivery::SMTP;
    my $service = new Mail::Delivery::SMTP;
    if ($service->error) { Log($service->error); return;}

    $service->deliver(
                      {
                          mta             => '127.0.0.1:25',

                          smtp_sender     => 'rudo@nuinui.net',
                          recipient_maps  => $recipient_maps,
                          recipient_limit => 1000,

                          mesage          => $message
                      });

 $message  Mail::Message ֥ȤǤ



Mail::Message ֥

Υ֥Ȥϥ᡼Ϥ

header -> body
header -> preamble -> part1 -> part2 -> trailor (multipart)

Τ褦˥֥Ȥ֤夺Ĥʤפˤʤäǡ¤ޤ

Mail::Message 饹ϤΤ褦ʥǡ¤᥽åɤ󶡤Ƥޤ



fml8 ᡼ɤߤݤΥ塼

fml8 (ʲ fml)γƥץ MTA 鵯ư졢STDIN(ɸ)᡼ɤ
ߤޤ

fml ϡä᡼ɤߤߡޤϥǥ˽񤭹ߤޤ (incoming queue
ؽ񤭹)񤭹ߤ硢ν񤭹եФƥå
Ϥ򥹥ȤޤˤꡢʤȤɤߤꥸʥΥ᡼εϿ
ϻĤޤ

⤷Ԥ硢exit(EX_TEMPFAIL)ޤƤ OS Ǥ exit(75) Ǥ
Υ顼ɤ򤦤ȤȡMTA ϰŪʥ顼äȤߤʤᡢ
åκߤƤޤ(Ĥޤꡢʬˡ⤦١ǽ餫
ߤޤ)

ԤŪʥǥ(file system full)ʤ顢 MTA κǥȥ饤
ʤ졢̤ͣνԤʤޤ̤ͣΥסѰդե륷
ǤΥǥ(file system full)ŪȤϹͤˤΤǡƥ
Ťʤȡäȥ顼ˤʤ³ǽ⤤Ȼפޤ

incoming queue ν Mail::Delivery::Queue Ȥ̸ͣͭ queue Ǵ
ޤϢνȡƤΥץκǸˡΥ塼Ͼä
ޤ



fml8 ᡼ֻ֤

֤٤᡼ Mail::Delivery::Queue Ȥ̸ͣͭΥ塼ޤ
塼ä᡼ϡΤ FML::Process::QueueManager 饹ͳ()
Ԥʤޤ

̯˽ۤʤޤ⥳ޥɥ᡼Ʊͤ
Mail::Delivery::Queue ١Υ塼󥰽򤷤ƤޤΤᡢ
ǥ顼硢̤ fml8 ץˤԤʤޤ



fml8 ǤɤΤ褦˽񤯤Τ

å(ƥȥå)֤硢Τ褦˽񤭤ޤ

$curproc->reply_message( "you are not a ML member." );

ξμԤϡƤݤ줿ͤ䥳ޥɤη̤ʤɤȤ͡Ĥޤ
fml8 ˲ν׵ᤷͤǤ

եꤿեꤿϼΤ褦ˤޤ

$curproc->reply_message( {
        type        => "text/plain; charset=iso-2022-jp",
        path        => "/usr/local/etc/fml/main.cf",
        filename    => "main.cf",
        disposition => "main.cf example",
    });

$curproc->reply_message( {
        type        => "image/gif",
        path        => "/some/where/logo001.gif",
        filename    => "logo.gif",
        disposition => "attachment",
    });



fml8 ˤ᡼륭塼λȤ

FML::Process::QueueManager ˤ (1) Υ塼ե뤬᡼륭塼ǥ
ȥ꤫ pickup 졢 (2) Mail::Message  parse 졢 (3) FML::Mailer ͳ
 Mail::Delivery ºݤΥ᡼Ԥʤޤ

Mail::Delivery::Queue
   
    塼ǥ쥯ȥ
   
FML::Process::QueueManager
   
    塼ǥ쥯ȥ
   
FML::Mailer
   
Mail::Delivery

塼ݤˤϡоݤΥ塼 flock(2) ޤå¾ ATOMIC 
ȤäƼƤ褤ΤǤ OS ¤äƤޤꤹ
ȡϤ flock(2) Ȥ٤Ǥ礦



᡼륭塼ǥ쥯ȥ

塼ǥ쥯ȥϼΤ褦ʣΥǥ쥯ȥ꤫ʤޤ

new/
active/
incoming/
deferred/
info/sender/
info/recipients/
info/transport/
isolated/

info/ ˤ envelope 󤬳Ǽޤ isolated/ ϳΥ줿ʥ᡼ʤ
 100 % SPAM)־Ǥޤ incoming/  incoming queue ǤʳΥǥ
쥯ȥ outgoing ѤǤ

outgoing Υ塼եϡö new/ ˺ޤ塼ե
Ȥλ OK Ȥʤä new/  active/ ˰ưޤĤޤ
active/ ˤեǤƤΤǤ

ǥ顼ä顢new/ ˻ĳĤޤŪ˥ߤϾä褦
ƤޤФ餯ϻĤ櫓ǤΤϵ߽Ф󥹤Ȥ⤤ޤ
͡



queue ǥ쥯ȥå

 $queue_id object Ȥ lock()  unlock() ᥽åɤȤå򤫤
ޤå active/$queue_id եФƤ flock(2) ƥॳǤ




塼ƥ

2004 ưʹߡfml8 ƥϥ塼ƥΤȤưƤޤ
ˤ fml8 ϤǤκǽȤʤޤ̤θ򤹤С¼Ū
fml8 ᡼륵ФȸäƤ褯ʤä櫓Ǥ



: FML::Mailer ɬפ

FML::Process::QueueManager ȤäƤΤߤʤΤΩ⥸塼Ǥɬפ
ȤǤ

 reply_message() ᥽åɤǤ⤷ƤޤΤǡ FML::Mailer Ƥ֤Ȥ
ʤ⤷ޤ󡣤äȤ reply_message() ʳ᥽åɤ뤫⤷
ޤ

衢ɤȤäƤʤ褦ʤ FML::Process::QueueManager ˹ʻ٤ʤΤ
礦

ͤΤᡢHOOK ʤɤǤ FML::Mailer ϻȤʤ褦ˤƲ



˴ؤ TIPS

1. ʸƤ˱žѤ

1. ʸƤ˱žѤ

ִñȤơžեǻꤹͤޤ礦ȤС
A B C ˱

recipients.A
recipients.B
recipients.C

ѰդƤȤޤξ HOOK ǾåĤ

if ( A ˥ޥå) {
   $config->set('recipient_maps', "recipients.A");
}

Τ褦ʥɤ񤱤СʸƤ˱žѤפȤޤ

recipient_maps ѿˤϥեʳλǽǤǽʥѥ᡼
IO::Adapter 饹Τ٤ƤǤ MySQL  LDAP ꥹȤ
ȤäȤǤޤ



Chapter 36. /ޤȤ

Ρ֤ޤȤפ򤹤ˤϡ

/usr/local/libexec/fml/digest ͣ̾

Ū cron ¹ԤƲ


                                  Warning                                   

fml4 Τ褦ʥκ٤Ͻޤ                                 
                                                                            
Ȥꡢ fml8 Ǥϡfml4 Τ褦ʥκ٤ͽ꤬ 
                                                                      



ޤȤǻȤե뷲

$ml_home_dir/ ʲΡ֤ޤȤᤪϢեפˤϼΤ褦ʤΤޤ

seq-digest
members-digest
recipients-digest

seq-digest ϺǸäϲ֤ϿƤޤ

members-digest ϥߡǡ recipients-digest ޤȤᤪꥹȤǤ


 IO::Adapter 饹ѤꥹȤΤǡ
$digest_recipient_maps Ǥ mysql ʤɤѲǽǤ



: ȴϢΥޥɤɤ뤫

digest ޥɤΤޤȤᡣʤ顢ʡ(fml-devel 313)

Ǥ͡衢٤꤬褦ˤ뤳ȤͤȡǤΤ



makefml ޥ

(ʲΥޥɤϼѤ)

makefml digest    $ml $address on
makefml digeston  $ml $address

makefml digest    $ml $address off
makefml digestoff $ml $address



admin ޥ

(ʲΥޥɤϼѤ)

admin digest $address on
admin digest $address off



桼ޥ

()

digest on
digest off

(̤)  confirmation ֤ǡ褤

confirm ̤ǤǥݥꥷȤơɥ쥹طΥޥɤΥǥ
Ȥϸޤ礦˾ǤƤ顢缡ˤƤȤȤˤޤ



CGI

()

digeston
digestoff



recipes

1. ޤȤϤļ¹ԤƤ褤Τ
2. ޤȤΰ̷ΥǥեȤѹ
3. makefml add λˤޤȤѥ᡼ꤷ
4. ޤȤΥɤɤ̥ե˵Ͽ

1. ޤȤϤļ¹ԤƤ褤Τ

ĤǤ⤫ޤޤ

2. ޤȤΰ̷ΥǥեȤѹ

Ǥޤ󡣸ߤ MIME/Multipart ݡȤƤʤΤ¾褬


3. makefml add λˤޤȤѥ᡼ꤷ

Ǥޤ󡣸ߤ MIME/Multipart ݡȤƤʤΤ¾褬


4. ޤȤΥɤɤ̥ե˵Ͽ

ѿϤޤ󤬡HOOK 񤱤ФǤޤ

[Example]

$article_digest_prepare_start_hook = q{
        $config->{ log_file } = "/some/where/log.digest";
};

fml8 ǤϡHOOK ƥץȤ̸ĤƤΤǡˡȤ
դ˸ fml4 ǤϥᥤΥɤ϶ͭƤ HOOK ϤäʬΥ
ƤʤäΤǡμμˡȤޤǤ



Chapter 37. ͥ

ν

ñʥǥϡ֤Σ̤ͣܿѤȲꤷƤ롣äơưå
ϡĤܸ֤ͤפȤΤǤ󡢤ޤޤ꤬ͤ


ˡΥǥǤϡ̺ͣ˲Ѥꤹɬפޤ

ˡְä(ܸ줬ɤʤͤ)Ƥ᡼ФƤ⡢ܸ
顼å֤ޤ

軰ˡܿͤ᡼äƤƤȤƤ⡢᡼ɤǤĶ
ܸ줬Ȥʤ⤷ޤ󤷡

᡼إå Accept-Language: ƤˤʤǤ礦

餯ϥƤˤʤǤ礦äơ᡼إå Accept-Language: 
̵뤹Τޤ󡣤 Accept-Language: Ĥ
Ȥ¤ޤ

ȤС Accept-Language: ja ʤɤȤƤ ja ͥʬޤ
ʤ顢äΤʤġܿͤ help Ȥ᡼äƤ
׾硢ֻ us-ascii ֤٤ʤ󤫡Ȥ iso-2022-jp ֤٤
ΤץˤȽǤǤޤ

ȤСʥ᡼ǤϡɤȽǤΤǤ礦

:

From: rudo@example.co.jp
Subject: help
mime-version: 1.0
content-type: text/plain; charset=us-ascii

help

charset ľ˹ͤȡѸ֤٤ǤʸѸʤΤ
charset=us-ascii ˤʤäƤǤ礦ʤΤǡΣ̤ͣ(ܿ
Τ)ܸͥꤵƤʤ顢ܸȱѸΥåξ֤٤
礦

ѸΣ̤ͣȤʤ顢ѸΥå֤ǤϤǤ

դˡAccept-Lanaguage: ꤵƤСºŤ٤ǤѸΣͣ
(language_preference_order = en)ξǤ⡢ Accept-Lanaguage: ja ʤʤǤ
ֻܸ򤹤٤Ǥ礦 fml8 ɸΥåǤСư
ǽǤ



ܸͥΣͣ

language_preference_order Ȥѿޤܸ줬ǥեȤΣ̤ͣǤϡ
줬Τ褦˻ꤵƤޤ

language_preference_order       =       ja en

ΥҥȤȤʲΤ褦ʽ򤹤褦ˤƤޤ



Accept-Language: ja, en

ܸʤˤ֤ȽǤ롣



Accept-Language: en

Ѹʤˤ֤ȽǤ롣



Accept-Language: ̵Content-Type: Ǥ charset=iso-2022-jp

ܸʤˤ֤ȽǤ롣



Accept-Language: ̵Content-Type: Ǥ charset=us-ascii

ܸʤˤ֤ƤȽǤǤʤܸȱѸΥӤ֤٤Ȥ
⤦



Accept-Language: ̵Content-Type: ̵

ܸʤˤ֤ƤȽǤǤʤܸȱѸΥӤ֤٤Ȥ
⤦



ѸͥΣͣ

language_preference_order Ȥѿޤ줬Τ褦˻ꤵƤ
ޤ

language_preference_order       =       en

ΥҥȤȤʲΤ褦˽򤹤褦ˤƤޤ



Accept-Language: ja, en

ܸʤˤ֤ȽǤ롣



Accept-Language: en

Ѹʤˤ֤ȽǤ롣



Accept-Language: ̵Content-Type: Ǥ charset=iso-2022-jp

ܸʤˤ֤ȽǤ롣



Accept-Language: ̵Content-Type: Ǥ charset=us-ascii

Ѹʤˤ֤ȽǤ롣



Accept-Language: ̵Content-Type: ̵

Ѹʤˤ֤ȽǤ롣



Chapter 38. å(᡼)

᡼(֥)򰷤᥽åɤξܺ٤ˤĤƤ Mail::Message 饹򸫤Ʋ
Υ饹Ūˡ󶡤Ƥޤ Mail::Bounce 
Mail::Delivery ϤᡢؿΥ饹˰¸Ƥޤ



Mail::Message 饹

᡼ϥإå˻Ϥޤܥǥ(᡼ʸ)³ޤ MIME/Multipart Τ褦ˡ
ܥǥʣʬ(ѡ)뤳Ȥ⤢ޤˤĤʤ¤
Ǥ

᡼ͤʤ顢᡼ʸκι¤򵤤ˤɬפϤ
󡣰ǡե륿󥰤ϤȤơ᡼ʸβϤɬפȤƤ
¿ޤ

Υ⥸塼Τ Mail::Message 饹ꡢ᡼ι¤ɽ뤿
ѤƤޤΥ饹 Mail::Bounce  Mail::Delivery Ϥᡢ
ȤǻȤƤޤ

ȤСΤ褦ʻȤ򤷤ޤ

    my $fh  = new FileHandle $file;
    my $msg = Mail::Message->parse( { fd => $fh } );

    use FML::Mailer;
    my $obj = new FML::Mailer;
    $obj->send( {
        sender    => $sender,
        recipient => $rcpt,
        message   => $msg,
    });



Mail::Message::Parse 饹

ߡ饹Ǥ Mail::Message::Compose Ʊͤγؤص
Ƥޤޤ꿼̣Ϥޤ

ѡμΤ Mail::Message 饹ˤޤ



Mail::Message::Compose 饹

ϥ᡼롢ä˥ޥɥ᡼ν֤ʤɤʤɤۤݤ
륯饹Ǥñʤ륢ץǤ᡼Τ CPAN  MIME::Lite
饹ǤΥꥯȤ MIME::Lite 饹شꤲƤޤ

Ȥ᥽åɤˤĤƤξܺ٤ MIME::Lite 饹򻲾ȤƲ



å¿첽: reply_message_nl() λȤ

fml8 Ǥϡå¿첽Τˡ reply_message_nl() [25] ᥽åɤ


$curproc->reply_message_nl('error.already_member',
                           'already member',
                           { _arg_address => $address });

Τ褦ʸƤӽФ򤹤뤳ȤˤƤޤ

δؿ /usr/local/share/fml/С/message/̾/error/already_member
Ȥƥץ졼ȤѤƥåۤޤ

å $_arg_ѿ̾ȤС

$_arg_address

 reply_message_nl() ΰΥϥåե󥹤ȤͿ줿ͤŸ
ޤǤСåƥץ졼 $_arg_address 
_arg_address ͤŸޤ

ޤ config.cf ƤѿϥåǤŸǽǤȤХ
ץ졼 $ml_name  config.cf Ʊͤˣͣ̾˼ưŸޤ

ΤᡢĤޤ config.cf ѿȤ֤Ĥʤ褦ˤ뤿ᡢϤ
$_arg_ ʤɤȤ prefix ĤƤ櫓Ǥ



: 顼å֤

̥ͣɥ饤ФϡŬ顼åԤ֤ɬפޤƥ
åԤθ¸ǤʤȤʤǤ礦

äơ¿첽бŬڤʸѴ򤷤ƤФɬפޤ
ơΤνؿɬפǤ



fml4 ξ

fml4 ˤ

   Mesg(*e, , ǥեȤΥå, Ѵ˻Ȥ);

ηǸƤӽФåؿޤ

Mesg()  /usr/local/fml/messages/Japanese/ ʲˤե뷲Фơ
ɸԤʤޤƥեˤϥƥꤴȤʬव줿ɤȥ
ƤޤĤޤƥեʣΥɤƤޤ


ȤСɤ not_found ξ硢 /usr/local/fml/messages/Japanese/kern
ե not_found Ȥ󤬳ޤ

ޤŨʤΤǤϤޤǤȤäơlocale ŨȤΤǤʤ
Ǥʤ



fml8 Ǥϡɤ٤

ĤΥե˰ĤΥɤĤΤȡƥꤴȤʣΥɤ
ĤΤȤɤ餬ޥ䤹ΤǤ礦ͤˤɤ狼ޤ



X/Open Portability Guide Issue 4 Version 2 (``XPG4.2'')

XPG (X/Open ε)Ȥ

catgets(catd, set_id, msg_id, char *s);

ǡLOCALE_ǻꤵ줿ѴƤޤ [26] locale λȤϼΤ
ʤ󤸤Ǥ

printf(catgets(catd, 30,  4,  "%s: Internal match error.\n"), progname);

λcatgets()  locale ե( : /usr/pkg/share/nls/ja_JP.EUC/
̾.cat )  se 30ȥ 4 Υå򸵤˥å
Ƥޤ



fml8 Ȥꤢ

ΰĤ locale б뤫ȤǤ makefml ɮƬˡƼ拾
ޥɷΥ顼åܸ첽ͤȡ locale ͤƤΤⰭ
ʤΤȤפޤξ locale ݤ뤿

/usr/local/lib/fml/С/messages/ja_JP.EUC/kern

1: %s ϸĤޤ
2: %s  %d Υ顼Ǥ

ȤäΤˤƤȸǤ

դˡĤΥɤȤ̤ΥեˤƤǽǤ
ĤΥɤѤǤ

⤷ԤˡƤߤ뤳Ȥˤȡ

FML::Message::ja::

Ȥ饹򤸤󤸤褦ʺˤʤǤ礦Ȥ

FML::Message::ja::not_found

ʤɤ 2300 ĤΥե뤬뤳Ȥˤʤޤ

ˡ

  ե뤬ХХˤʤ (դĹȤƥޥ䤹ʤ)

  ե뤬ХХˤʤ뤳Ȥ locale ݤʤʤ뤬 locale бͤ
    ݤʤ

ˤǤ礦

ޤʣΥե뤫ĤΥեΤϴñʤΤǡФ餷Ƥ
ʤȤͤޤ

ޤƥåƥץ졼ȤϤɤΤ褦ʤΤǤ٤Ԥξ硢

sub not_found
{
   my ..  = @_;

   return <<"_EOF_"
$sender Ϥɤ
_EOF_
}

Ȥäؿպ뤳ȤǤޤĤޤñʤǤϤʤ̣ʬ䤹
Τˤ뤳Ȥͤ櫓Ǥ˥ޥ䤹Ǥ
礦 locale ͤʤ顢Ϥݤʵ櫓Ǥ



Chapter 39. ե륿


                                  Caution                                   

ܾϤǤե륿Ȥϡäˤʤ¤Ƥ줿Фե륿
פؤޤ                                                              
                                                                            
ΡֵФե륿ץƥ FML::Filter 饹˼Ƥޤ 
                                                                          
                                                                            
ֵפǤϤʤ֥ޥɥ᡼פоݤȤե륿ƥʤɤ⨢
ͤޤξ硢üʥե륿ƥब FML::Filter Υ֥ 
ˤȤϤޤΤդƲޥɥ᡼뤬оݤǤС
ޥɽΥ饹˼줿ե륿ƥƤӽФƤޤȤШ
ޥɥ᡼ΥޥɤĹ¤뵡ǽ(ե륿)                    
FML::Command::Filter 饹ôƤޤ                               



ե륿γ

ƥĤ򸡺ե륿ˤ礭ʬƻढޤϡ֥إå
Фե륿ס֥᡼ʸФե륿סMIME ¤򸵤ˤե륿
(mime component filter)פΣĤǤ

äȤ֥᡼ʸФե륿פˤ⡢ MIME Ǥʤ᡼Фե
פȡtext/plain Фե륿פबΤǡ礭ʬȻͼब
⤷ޤ

ޤʶʬ

  header

  body
        non-mime
                permit / reject (fml 4.0  content filter  !MIME)

        mime component filter
                (fml 4.0 ǤȤ content filter )

        text/plain filter
                        ja, en, ... (¸ե륿)
                        ¸ѡ (M$ GUID scanner Τ)
                Ƭʬ text/plain ѡȤФե륿
                        (󥿥åå)

        ե륿 (륹/SPAM åƤӽФ)
                clamav
                spamassassin
                bogofilter

ϤʳˡSMTP ⤷ LMTP Ȥäơ virus scanner ʤ
ϩ(postfix  content_filter )ɬפȻפΤǤ (
Postfix ǤФȤ⤤ޤΤ)Ƥޤ

ޤʳ˥ȥեå١Υե륿ޤ (ۤȤ̤ʤΤ
Ͼά _o_)



ե륿˴ؤ

䥳ޥɥ᡼Ȥäǽ̤ˡ֥ե륿ȤȤʤסֻȤե
륿롼ϡפʤɤѿƤޤ

ѿ̾ηϤδܤϰʲ̤Ǥ

use_ӥ_filter       = yes  no
ӥ_filter_functions = ǽA ǽB

use_ǽA   = yes  no
ǽA_rules = 롼1 롼2

# Descriptions:
#      History: fml8 ǤϡĤΥե륿¤礵줿
#               fml4 ǤϡͼΣĤεǽƤ롣
#               $USE_DISTRIBUTE_FILTER
#               $INCOMING_MAIL_SIZE_LIMIT
#               ADD_CONTENT_HANDLER()
#        Value: YES_OR_NO
#     Examples: yes
use_article_filter      =       yes


# Descriptions:
#      History:
#        Value: MIX (
#                       article_size_filter
#                       article_header_filter
#                       article_non_mime_filter
#                       article_mime_component_filter
#                       article_text_plain_filter
#                       article_spam_filter
#                       article_virus_filter
#               )
#     Examples:
article_filter_functions        =       article_size_filter
                                        article_header_filter
                                        article_non_mime_filter
                                        article_mime_component_filter
                                        article_text_plain_filter
                                        article_spam_filter
                                        article_virus_filter


# Descriptions: 򺬵ˤե륿󥰤򤹤뤫
#      History: no
#        Value: YES_OR_NO
#     Examples:
use_article_size_filter =       yes


# Descriptions: ե륿󥰤Υ롼롣
#               ɤΥ롼ˤޥåʤʤ顢Ƥǧ롣
#      History:
#        Value: MIX (   check_header_size
#                       check_body_size
#                       permit
#               )
#     Examples:
article_size_filter_rules       =       check_header_size
                                        check_body_size
                                        permit


# Descriptions: إå򺬵ˤե륿󥰤򤹤뤫
#      History: disabled by default.
#               "yes" always if $USE_DISTRIBUTE_FILTER is yes.
#        Value: YES_OR_NO
#     Examples:
use_article_header_filter               =       yes


# Descriptions: ե륿󥰤Υ롼롣
#               ɤΥ롼ˤޥåʤʤ顢Ƥǧ롣
#      History: check_date ˳ΤϤʤ
#        Value: MIX (
#                       check_message_id
#                       check_date
#                       permit
#               )
#     Examples:
article_header_filter_rules             =       check_message_id
                                                check_date
                                                permit


# Descriptions: Ȥꤢߡ
#      History: 4.0  content filter ǡ!MIME ˤʬ
#               äơǥեȤǤ no ȤȤˤʤ롣
#        Value: YES_OR_NO
#     Examples:
use_article_non_mime_filter             =       yes


# Descriptions: Ȥꤢߡ
#      History: ʤ
#        Value: MIX ( permit reject_empty_content_type )
#     Examples: permit
article_non_mime_filter_rules           =       reject_empty_content_type
                                                permit


# Descriptions: MIME ι¤˴Ťե륿Ԥʤ
#      History: 4.0  content filter ǥեȤǤ no 
#        Value: YES_OR_NO
#     Examples:
use_article_mime_component_filter       =       yes


# Descriptions: ե̾
#      History: 4.0  @CONTENT_HANDLER 
#        Value: FILE
#     Examples:
article_mime_component_filter_rules     = $fml_config_dir/mime_component_filter


# Descriptions: Ƭ text/plain ʬФե륿
#               ñʥ󥿥åå
#      History: 4.0  EnvelopeFilter 
#               $USE_DISTRIBUTE_FILTER  yes ξ硢
#               ʲΥ롼Ⱦʬ餤ưŪŬѤƤ
#        Value: YES_OR_NO
#     Examples:
use_article_text_plain_filter           =       yes


# Descriptions: ƥʬؤΥե륿󥰤Υ롼롣
#               ΤˤƤ٤̤ʤΤΥ롼(ޥåʤʤ̤)
#      History: See kern/libenvf.pl for more detail.
#               [DISABLED BY DEFAULT]
#
#                       reject_not_iso2022jp_japanese_string
#                               <=> FILTER_ATTR_REJECT_INVALID_JAPANESE
#                       reject_old_fml_command_syntax
#                               <=> FILTER_ATTR_REJECT_COMMAND
#                       reject_japanese_command_syntax
#                               <=> FILTER_ATTR_REJECT_2BYTES_COMMAND
#
#               [ENABLED BY DEFAULT]
#
#                       reject_null_mail_body
#                               <=> FILTER_ATTR_REJECT_NULL_BODY
#                       reject_invalid_fml_command_syntax
#                               <=> FILTER_ATTR_REJECT_INVALID_COMMAND
#                       reject_one_line_message
#                               <=> FILTER_ATTR_REJECT_ONE_LINE_BODY
#                       reject_ms_guid
#                               <=> FILTER_ATTR_REJECT_MS_GUID
#
#         Note: permit by default
#        Value: MIX (
#                       reject_not_iso2022jp_japanese_string
#                       reject_null_mail_body
#                       reject_one_line_message
#                       reject_old_fml_command_syntax
#                       reject_invalid_fml_command_syntax
#                       reject_japanese_command_syntax
#                       reject_ms_guid
#                       permit
#               )
#     Examples:
article_text_plain_filter_rules =       reject_not_iso2022jp_japanese_string
                                        reject_null_mail_body
                                        reject_one_line_message
                                        reject_old_fml_command_syntax
                                        reject_invalid_fml_command_syntax
                                        reject_japanese_command_syntax
                                        reject_ms_guid
                                        permit


# Descriptions: SPAMåȤäǥեȤǤ̵
#               ޤͭˤ硢إåSPAMǤ뤳ȤΤ餻
#               եåĤ̲ᤵưǥեȡ
#      History: none
#        Value: YES_OR_NO
#     Examples: no
use_article_spam_filter         =       no


# Descriptions: SPAMȽꤵ줿硢ɤ뤫
#      History: none
#        Value: MIX ( reject ignore header_rewrite )
#     Examples: header_rewrite
article_spam_filter_rules       =       header_rewrite


# Descriptions: SPAMåȤƻȤץࡣ
#               ʣꤹȡʣΥץ˻
#      History: none
#        Value: MIX ( spamassasin spamc bogofilter )
#     Examples: bogofilter
article_spam_filter_drivers     =       bogofilter


# Descriptions: VirusåȤäǥեȤǤ̵
#      History: none
#        Value: YES_OR_NO
#     Examples: no
use_article_virus_filter        =       no


# Descriptions: 륹Ƚꤵ줿硢ɤ뤫
#      History: none
#        Value: MIX ( reject ignore header_rewrite )
#     Examples: reject
article_virus_filter_rules      =       reject


# Descriptions: 륹åȤƻȤץ
#               ʣꤹȡʣΥץ˻
#      History: none
#        Value: MIX ( clamscan )
#     Examples: clamscan
article_virus_filter_drivers    =       clamscan


# Descriptions: ե륿Ƥ줿Ȥ򶵤
#      History: maintainer ˤϾƤ줿ȤΤ餻뤬
#               sender ФƤ $FILTER_NOTIFY_REJECTION (= 0 by default)
#               ǥեȤǤϡԤˤΤΤ餻롣
#        Value: YES_OR_NO
#     Examples: yes
use_article_filter_reject_notice        =       yes


# Descriptions: 顼ΤΤ餻μ
#      History: 4.0 Ǥ maintainer Ƥϥϡɥǥ󥰤ǾΤ餻롣
#               sender Ƥ $FILTER_NOTIFY_REJECTION 椵Ƥ
#               ǥեȤǤΤ餻ʤ
#        Value: MIX ( maintainer sender )
#     Examples: maintainer sender
article_filter_reject_notice_recipients =       maintainer
                                                sender


# Descriptions: Ƥ᡼ɤΤ褦˥եɤ뤫
#               륹ʤɤθȡʸ󤬤Ȥ⤦
#      History: 4.0 Ǥʸǡϥϡɥǥ󥰤Ƥ
#        Value: SELECT ( multipart string )
#     Examples: string
article_filter_reject_notice_data_type  =       string


# Descriptions:
#      History:
#        Value: YES_OR_NO
#     Examples:
use_article_spam_filter         =       no


# Descriptions: list up driver names used as spam checker.
#      History: none
#        Value: MIX ( spamassassin spamc bogofilter )
#     Examples: bogofilter
article_spam_filter_functions   =       bogofilter


# Descriptions: exit non-zero status code when spam caught if "-e" specified.
#      History: none
#        Value: COMMAND_LINE_OPTIONS
#     Examples: -e
article_spam_filter_spamassassin_options        =       -e


# Descriptions: spamc optoins. "-c" means check only.
#      History: none
#        Value: COMMAND_LINE_OPTIONS
#     Examples: -c
article_spam_filter_spamc_options               =       -c


# Descriptions: "-e" implies embedded mode.
#      History: none
#        Value: COMMAND_LINE_OPTIONS
#     Examples: -e
article_spam_filter_bogofilter_options          =       -e


# Descriptions:
#      History:
#        Value: YES_OR_NO
#     Examples:
use_article_virus_filter        =       no


# Descriptions: list up driver names used as virus checker.
#      History: none
#        Value: MIX ( virusassassin virusc bogofilter )
#     Examples: bogofilter
article_virus_filter_functions  =       clamav


# Descriptions: --mbox needed for mail files.
#      History: none
#        Value: COMMAND_LINE_OPTIONS
#     Examples: --quiet --mbox
article_virus_filter_clamav_options             =       --quiet --mbox


# Descriptions:
#      History:
#        Value: YES_OR_NO
#     Examples:
use_command_mail_filter =       yes


# Descriptions:
#      History:
#        Value: MIX ( command_mail_size_filter )
#     Examples:
command_mail_filter_functions   =       command_mail_size_filter


# Descriptions: ե륿Ƥ줿Ȥ򶵤
#      History: 4.0 Ǥϥϡɥɤä褦ʡ
#        Value: YES_OR_NO
#     Examples: yes
use_command_mail_filter_reject_notice   =       yes


# Descriptions: 顼ΤΤ餻μ
#      History: 4.0 Ǥϥϡɥɤä褦ʡ
#        Value: MIX ( maintainer sender )
#     Examples: maintainer sender
command_mail_filter_reject_notice_recipients    =       maintainer
                                                        sender


# Descriptions: Ƥ᡼ɤΤ褦˥եɤ뤫
#               륹ʤɤθȡʸ󤬤Ȥ⤦
#      History: 4.0 Ǥʸǡϥϡɥǥ󥰤Ƥ
#        Value: SELECT ( multipart string )
#     Examples: string
command_mail_filter_reject_notice_data_type     =       string


# Descriptions: 򺬵ˤե륿󥰤򤹤뤫
#      History:
#        Value: YES_OR_NO
#     Examples:
use_command_mail_size_filter    =       yes


# Descriptions: ե륿󥰤Υ롼롣
#               ɤΥ롼ˤޥåʤʤ顢ޥɥ᡼ǧ롣
#      History:
#        Value: MIX (
#                       check_header_size
#                       check_body_size
#                       check_command_limit
#                       check_line_length_limit
#                       permit
#               )
#     Examples:
command_mail_size_filter_rules  =       check_header_size
                                        check_body_size
                                        check_command_limit
                                        check_line_length_limit
                                        permit

# Descriptions:
#      History:
#        Value: FILE
#     Examples:
path_bogofilter           = @BOGOFILTER@

# $article_digest_finish_end_hook = q{ 1;};
# $article_digest_finish_start_hook = q{ 1;};
# $article_digest_prepare_end_hook = q{ 1;};
# $article_digest_prepare_start_hook = q{ 1;};
# $article_digest_run_end_hook = q{ 1;};
# $article_digest_run_start_hook = q{ 1;};
# $article_digest_verify_request_end_hook = q{ 1;};
# $article_digest_verify_request_start_hook = q{ 1;};
# $article_filter_end_hook = q{ 1;};
# $article_filter_start_hook = q{ 1;};
# $article_header_rewrite_end_hook = q{ 1;};
# $article_header_rewrite_start_hook = q{ 1;};
# $article_post_finish_end_hook = q{ 1;};
# $article_post_finish_start_hook = q{ 1;};
# $article_post_prepare_end_hook = q{ 1;};
# $article_post_prepare_start_hook = q{ 1;};
# $article_post_run_end_hook = q{ 1;};
# $article_post_run_start_hook = q{ 1;};
# $article_post_verify_request_end_hook = q{ 1;};
# $article_post_verify_request_start_hook = q{ 1;};
# $command_mail_filter_end_hook = q{ 1;};
# $command_mail_filter_start_hook = q{ 1;};
# $command_mail_finish_end_hook = q{ 1;};
# $command_mail_finish_start_hook = q{ 1;};
# $command_mail_prepare_end_hook = q{ 1;};
# $command_mail_prepare_start_hook = q{ 1;};
# $command_mail_run_end_hook = q{ 1;};
# $command_mail_run_start_hook = q{ 1;};
# $command_mail_verify_request_end_hook = q{ 1;};
# $command_mail_verify_request_start_hook = q{ 1;};
# $createonpost_finish_end_hook = q{ 1;};
# $createonpost_finish_start_hook = q{ 1;};
# $createonpost_prepare_end_hook = q{ 1;};
# $createonpost_prepare_start_hook = q{ 1;};
# $createonpost_run_end_hook = q{ 1;};
# $createonpost_run_start_hook = q{ 1;};
# $createonpost_verify_request_end_hook = q{ 1;};
# $createonpost_verify_request_start_hook = q{ 1;};
# $distribute_finish_end_hook = q{ 1;};
# $distribute_finish_start_hook = q{ 1;};
# $distribute_prepare_end_hook = q{ 1;};
# $distribute_prepare_start_hook = q{ 1;};
# $distribute_run_end_hook = q{ 1;};
# $distribute_run_start_hook = q{ 1;};
# $distribute_verify_request_end_hook = q{ 1;};
# $distribute_verify_request_start_hook = q{ 1;};
# $error_mail_analyzer_finish_end_hook = q{ 1;};
# $error_mail_analyzer_finish_start_hook = q{ 1;};
# $error_mail_analyzer_prepare_end_hook = q{ 1;};
# $error_mail_analyzer_prepare_start_hook = q{ 1;};
# $error_mail_analyzer_run_end_hook = q{ 1;};
# $error_mail_analyzer_run_start_hook = q{ 1;};
# $error_mail_analyzer_verify_request_end_hook = q{ 1;};
# $error_mail_analyzer_verify_request_start_hook = q{ 1;};
# $faker_finish_end_hook = q{ 1;};
# $faker_finish_start_hook = q{ 1;};
# $faker_prepare_end_hook = q{ 1;};
# $faker_prepare_start_hook = q{ 1;};
# $faker_run_end_hook = q{ 1;};
# $faker_run_start_hook = q{ 1;};
# $faker_verify_request_end_hook = q{ 1;};
# $faker_verify_request_start_hook = q{ 1;};
# $fetchfml_finish_end_hook = q{ 1;};
# $fetchfml_finish_start_hook = q{ 1;};
# $fetchfml_prepare_end_hook = q{ 1;};
# $fetchfml_prepare_start_hook = q{ 1;};
# $fetchfml_run_end_hook = q{ 1;};
# $fetchfml_run_start_hook = q{ 1;};
# $fetchfml_verify_request_end_hook = q{ 1;};
# $fetchfml_verify_request_start_hook = q{ 1;};
# $fmladdr_finish_end_hook = q{ 1;};
# $fmladdr_finish_start_hook = q{ 1;};
# $fmladdr_prepare_end_hook = q{ 1;};
# $fmladdr_prepare_start_hook = q{ 1;};
# $fmladdr_run_end_hook = q{ 1;};
# $fmladdr_run_start_hook = q{ 1;};
# $fmladdr_verify_request_end_hook = q{ 1;};
# $fmladdr_verify_request_start_hook = q{ 1;};
# $fmlalias_finish_end_hook = q{ 1;};
# $fmlalias_finish_start_hook = q{ 1;};
# $fmlalias_prepare_end_hook = q{ 1;};
# $fmlalias_prepare_start_hook = q{ 1;};
# $fmlalias_run_end_hook = q{ 1;};
# $fmlalias_run_start_hook = q{ 1;};
# $fmlalias_verify_request_end_hook = q{ 1;};
# $fmlalias_verify_request_start_hook = q{ 1;};
# $fmlconf_finish_end_hook = q{ 1;};
# $fmlconf_finish_start_hook = q{ 1;};
# $fmlconf_prepare_end_hook = q{ 1;};
# $fmlconf_prepare_start_hook = q{ 1;};
# $fmlconf_run_end_hook = q{ 1;};
# $fmlconf_run_start_hook = q{ 1;};
# $fmlconf_verify_request_end_hook = q{ 1;};
# $fmlconf_verify_request_start_hook = q{ 1;};
# $fmldoc_finish_end_hook = q{ 1;};
# $fmldoc_finish_start_hook = q{ 1;};
# $fmldoc_prepare_end_hook = q{ 1;};
# $fmldoc_prepare_start_hook = q{ 1;};
# $fmldoc_run_end_hook = q{ 1;};
# $fmldoc_run_start_hook = q{ 1;};
# $fmldoc_verify_request_end_hook = q{ 1;};
# $fmldoc_verify_request_start_hook = q{ 1;};
# $fmlhtmlify_finish_end_hook = q{ 1;};
# $fmlhtmlify_finish_start_hook = q{ 1;};
# $fmlhtmlify_prepare_end_hook = q{ 1;};
# $fmlhtmlify_prepare_start_hook = q{ 1;};
# $fmlhtmlify_run_end_hook = q{ 1;};
# $fmlhtmlify_run_start_hook = q{ 1;};
# $fmlhtmlify_verify_request_end_hook = q{ 1;};
# $fmlhtmlify_verify_request_start_hook = q{ 1;};
# $fmlpgp_finish_end_hook = q{ 1;};
# $fmlpgp_finish_start_hook = q{ 1;};
# $fmlpgp_prepare_end_hook = q{ 1;};
# $fmlpgp_prepare_start_hook = q{ 1;};
# $fmlpgp_run_end_hook = q{ 1;};
# $fmlpgp_run_start_hook = q{ 1;};
# $fmlpgp_verify_request_end_hook = q{ 1;};
# $fmlpgp_verify_request_start_hook = q{ 1;};
# $makefml_finish_end_hook = q{ 1;};
# $makefml_finish_start_hook = q{ 1;};
# $makefml_prepare_end_hook = q{ 1;};
# $makefml_prepare_start_hook = q{ 1;};
# $makefml_run_end_hook = q{ 1;};
# $makefml_run_start_hook = q{ 1;};
# $makefml_verify_request_end_hook = q{ 1;};
# $makefml_verify_request_start_hook = q{ 1;};



ե륿: 

إåʬӥ᡼ʸʬΥ¤ޤޤѿϵ
ȥޥɥ᡼ˤĤƤ줾̤¸ߤޤɬפʥե륿Τߤͭˤ
Ȥξ¤εǽڤȤäȤǽǤ( äȤ⡢
ޤʣʾﲼǤΤߥե륿ȤäȤ򤷤褦Ȥ HOOK ˤб
ʤȤ⤤ޤ)

;: Mail::Message 饹᡼Ϥˡ᡼γʬΥʬ
ϺѤߤʤΤǡΥե륿μϴñǤ:)

# Descriptions: إåξ¤Υǥե
#      History:
#        Value: NUM
#     Examples: 102400
default_mail_header_size_limit  =       102400


# Descriptions: ʸξ¤Υǥե
#      History:
#        Value: NUM
#     Examples: 10240000
default_mail_body_size_limit    =       10240000


# Descriptions: Ϥ᡼粿̥å夹뤫
#      History: $NUM_LOG_MAIL
#        Value: NUM
#     Examples: 128
incoming_mail_cache_size        =       128


# Descriptions: ()᡼粿̥å夹뤫
#      History: $NUM_LOG_MAIL
#        Value: NUM
#     Examples: 128
outgoing_mail_cache_size        =       128


# Descriptions: ƥΥݥꥷ
#               ͤۤԤʤΤ(ǥե)
#               Ƥ֤˹ԤʤΤ
#      History: none
#        Value: SELECT ( size interval )
#     Examples: size
log_rotate_policy       =       size


# Descriptions: եΥ
#               礭ۤơԤʤ
#      History: $LOGFILE_NEWSYSLOG_LIMIT 
#        Value: NUM
#     Examples: 300000 (300K bytes)
log_rotate_size_limit   =       300000


# Descriptions: Ƥ줿Υإåξ
#               (MTA  fml ȤݤεΥإåξ)
#      History:
#        Value: NUM
#     Examples: 102400
incoming_article_header_size_limit      = $default_mail_header_size_limit


# Descriptions: Ƥ줿ʸξ
#               (MTA  fml Ȥݤεʸξ)
#      History:
#        Value: NUM
#     Examples: 10240000
incoming_article_body_size_limit        = $default_mail_body_size_limit


# Descriptions: Ƥ줿()إåξ
#               (fml  MTA ϤݤεΥإåξ)
#               (󡢤εǽ̤;-)
#      History:
#        Value: NUM
#     Examples: 102400
outgoing_article_header_size_limit      = $default_mail_header_size_limit


# Descriptions: Ƥ줿()ʸξ
#               (fml  MTA Ϥݤεʸξ)
#               (󡢤εǽ̤;-)
#        Value: NUM
#     Examples: 10240000
outgoing_article_body_size_limit        = $default_mail_body_size_limit

# Descriptions:
#      History:
#        Value: MIX (
#                       article_size_filter
#                       article_header_filter
#                       article_non_mime_filter
#                       article_mime_component_filter
#                       article_text_plain_filter
#                       article_spam_filter
#                       article_virus_filter
#               )
#     Examples:
article_filter_functions        =       article_size_filter
                                        article_header_filter
                                        article_non_mime_filter
                                        article_mime_component_filter
                                        article_text_plain_filter
                                        article_spam_filter
                                        article_virus_filter


# Descriptions: 򺬵ˤե륿󥰤򤹤뤫
#      History: no
#        Value: YES_OR_NO
#     Examples:
use_article_size_filter =       yes


# Descriptions: ե륿󥰤Υ롼롣
#               ɤΥ롼ˤޥåʤʤ顢Ƥǧ롣
#      History:
#        Value: MIX (   check_header_size
#                       check_body_size
#                       permit
#               )
#     Examples:
article_size_filter_rules       =       check_header_size
                                        check_body_size
                                        permit

# Descriptions:
#      History:
#        Value: MIX ( command_mail_size_filter )
#     Examples:
command_mail_filter_functions   =       command_mail_size_filter


# Descriptions: 򺬵ˤե륿󥰤򤹤뤫
#      History:
#        Value: YES_OR_NO
#     Examples:
use_command_mail_size_filter    =       yes


# Descriptions: ե륿󥰤Υ롼롣
#               ɤΥ롼ˤޥåʤʤ顢ޥɥ᡼ǧ롣
#      History:
#        Value: MIX (
#                       check_header_size
#                       check_body_size
#                       check_command_limit
#                       check_line_length_limit
#                       permit
#               )
#     Examples:
command_mail_size_filter_rules  =       check_header_size
                                        check_body_size
                                        check_command_limit
                                        check_line_length_limit
                                        permit

# Descriptions: MTA  fml ȤݤΥޥɥ᡼Υإåξ
#      History:
#        Value: NUM
#     Examples: 102400
incoming_command_mail_header_size_limit = $default_mail_header_size_limit


# Descriptions: MTA  fml ȤݤΥޥɥ᡼ʸξ
#      History:
#        Value: NUM
#     Examples: 10240000
incoming_command_mail_body_size_limit   = $default_mail_body_size_limit


# Descriptions: fml  MTA ϤݤΥޥɥ᡼Υإåξ
#               (󡢤εǽ̤;-)
#      History:
#        Value: NUM
#     Examples: 102400
outgoing_command_mail_header_size_limit = $default_mail_header_size_limit


# Descriptions: fml  MTA ϤݤΥޥɥ᡼ʸξ
#               (󡢤εǽ̤;-)
#      History:
#        Value: NUM
#     Examples: 10240000
outgoing_command_mail_body_size_limit   = $default_mail_body_size_limit


# Descriptions: åΥ
#               mode  temporal ʤ
#      History: none
#        Value: NUM
#     Examples:
error_mail_analyzer_cache_size          =       14



ե륿: ޥɥ᡼ؤ

ޥɥ᡼ˤϡְΥޥɿפ䡢ޥɰ¸¡ȤС
Υޥɥ᡼ get Ǥե 100 ĤޤǤȤפꤨޤ



ե륿: mime component filter Υ롼빽ˡ

fml4  content filter Ȥϰۤʤꡢ fml8  mime component filter Υ롼

text/plain      permit
text/html       reject
*               permit

Τ褦ʶڤΥեޥåȤǽ񤤤Ƥޤ

MIME ʤΤǡ!MIME (MIME ʳоݤȤ)Ȥ̿Ϥޤ󤬡 text
/plain  multipart/mixed  text/plain ̤뤿ˡǤ
ɬפȤ⤦櫓Ǥ

                    ʬ            
----------------------------------------------
text/plain              *               permit
multipart/mixed         text/plain      permit
multipart/mixed         text/html       reject
multipart/mixed         image/*         cutoff
*                       *               permit

ˡϤΤ⤢ꤨǤ礦(̤)

text/plain              :uuencoded:     cutoff
text/plain              :size>500k      cutoff

Υ롼˴ؤƤ⹽Ĥޤ



first match vs last match ?

ˤ first match ΤΤȤǤʤΤޤreject ϤƤ
first match Ǥ cutoff  first match ǤϤʤȤޤơ



permit ΰ̣

Ǥϡpermit ϤɤǤ礦¤ΤȤʸ̮¸ȹͤޤΤ
褯狼ޤ󡣤ȤСmultipart Υ᡼Ȥ

text/plain + image/jpeg + text/html

Τ褦ˣĤΰۤʤ륿פΥѡȤʤ硢ɤ롼ʤ֤ޤ
פʤǤ礦

򤤤Сcutoff  reject ꤹ륿פΥ롼뤷ޤǽʤ
ޤΡʤϵݤפȤʤ餦ޤǤȸǤ
˥ǥեȤ permit ˤ뤷ޤ

permit ϡָ̤˵פȤ̣Ǥȡpermit ϡ֥᡼Τ
פȤ̣ǤξꤨޤȤС

text/plain      *       permit
*               *       reject

 text/plain ϵʳΤʤ뷿ʤ text/plain ۣ
ʤΤ OK Ǥ礦

ǡpermit ϡ֥᡼ΤפȤ̣Ǥ⤬ꤨޤȤ
text/plain Υ᡼Ȥޤ礦ľŪˤϡΤ褦ʥ롼
Ȥ⤤ޤ

text/plain      *       permit
*               *       reject

 permit ¨ OK ΰ̣ǤʤȤ


*       *       reject

ȰˤʤäƤޤ櫓Ǥ permit ϡ֥᡼Τ OK Ȥƥ롼
ξȤ餷碌򤽤ǽˤפȤ̣ˤȤʤȤޤ󡣤ä
Τ褦ʥ롼ϤꤨʤȤˤʤޤ

text/plain              *               permit
multipart/mixed         text/plain      permit
multipart/mixed         text/html       reject
multipart/mixed         image/*         cutoff
*                       *               permit

ꤨʤȤΤϡΥ롼ϼΤ褦˽񤤤ƤƱǤ

text/plain              *               permit
multipart/mixed         text/html       reject
multipart/mixed         image/*         cutoff
*                       *               permit

Ĥޤ permit ̿ǽäƤޤȤСmultipart ФƤϻ¾Ȥ
ƤϤʤȤˤʤ롣إǥեȤν٤text/plain * ٤Τ褦ʤΤ
ƤΤ permit ̿ϰ̣櫓Ǥ

ʲfirst match ˡͤƤߤޤ礦



ǥ: ǥեȤεư

ۤΥǥեȥ롼ϡ¾ header  text ե륿Ȥͤȡ֤
ꤢ̤פǤ͡

*               *       permit

 content filter Ρ֥롼򤦤ޤ񤱤ʤפȤ̤ͳˤäƤٻ
Ǥ礦

ʤǥեȤεư reject ѹˤ * * reject ǸդäƤ




ǥ: text/plain ()Τߤ뤹

text/plain      *       permit
*               *       reject



ǥ: text/plain вǤ

text/plain вǤʳηϵݤ롣ϴñʥ롼뤬
ʤǤ

text/plain      *               permit
multipart/*     text/plain      permit
*               *               reject

Υ롼Ǥ

text/plain + text/plain + text/plain

Ǥ⡢

text/plain + text/plain + image/jpeg

Ǥɤä OK ˤʤäƤޤΤ͡ᤸ󡣤äȤ not ڥ졼(!)
СϲǽǤ礦

text/plain      *               permit
multipart/*     !text/plain     reject
multipart/*     text/plain      permit
*               *               reject

֤󡢤줬Ԥ plain/text Τߤ̤롼Ȥ⤤ޤ



ǥ: text/html ()  text/html ޤ multipart 

text/html       *               reject
multipart/*     text/html       reject
*               *               permit



ǥ: ऺ㡩

ϤɤǤ礦ϴñʥ롼뤬񤱤ʤǤ

text/plain      *               permit
multipart/*     text/plain      permit
multipart/*     *               reject
*               *               reject

multipart Ȥ text/plain Τߤʤ᡼ʤĤޤꡢ

text/plain + text/plain + text/plain

ϡOKǤ⡢

text/plain + text/plain + image/jpeg
text/plain + image/jpeg + text/html

ܤΥ롼 permit Ƥޤޤޤ񤱤ʤǤ



ǥ: ΥХꥨ reject ǤϤʤ cutoff

ΥХꥨ reject ǤϤʤ cutoff ξ硣


text/plain      *               permit
multipart/*     image/*         cutoff
multipart/*     text/plain      permit
*               *               reject

Ĥޤ

text/plain + text/plain + text/plain

ϡOK

text/plain + text/plain + image/jpeg

Υ᡼ image/jpeg ʬäơ3֤Υ롼 permit 롣äȤ⡢


text/plain + image/jpeg + text/html

̲ǽǤ



ǥ:  cutoff + permit ˤȡ

text/plain      *               permit
multipart/*     image/*         cutoff
multipart/*     image/*         permit
multipart/*     text/plain      permit
*               *               reject

ʤ顢

text/plain + text/plain + text/plain
text/plain + text/plain + image/jpeg
text/plain + text/plain + text/html

ɤ OK Ǥ롼Υޥå꤬ۤʤޤ



: mime component filter ɬפʵǽȤϡ

ʲϡfml-help ̤ͣˤ륢󥱡ȤΤޤȤǤ

˽񤯤ȡޤεǽǤ褦ǡcontent filter εȤʤä cutoff
εǽϤ⤦פߤǤ

ޤ content filter λȤ򤤤ĤͤƤߤޤ

(1) text/plain  multipart  text/plain ̤
        text/plain ʤ᡼ʤơ ML Ǥ
         virus Ĥ⤷ʤ

(2) multipart  text/plain ʳ褦ʥ᡼ϵ
        virus Ĥ⤷ʤ

(3) multipart  text/html ʬ
         html ᡼
        ĤǤ text/plain ᤹(ꤹ)

(4) multipart  image/* ʬ
        ʤƣ̤ͣʤ褩

(5) text/html Υ᡼ʤ spam ˷ޤäƤ뤫ΤƤ

ǡ󥱡Ȥη̤ޤȤȡ̾ (1) ȤϷޤߤǤ
Ϥȥݥꥷ(ӤǤ뤫ݤʤ)ˤä(2)⥢꤫⤷ʤȤм
̤ͣΤ褦˥᡼η򸷤Ǥʤ̤ͣϡ⤽ mime component filter
 on ˤʤȤ櫓Ǥ



Chapter 40. 桼ϿˤĤ

桼ɲäȺϲФƹԤʤ

桼ɲäȺϡȤˡprimary_*_map Фơפʤޤ

ȤС⡼ȴԤ primary_admin_member_map 
primary_admin_recipient_map ξ˥ɥ쥹ɲäޤκݤϡ
primary_admin_member_map  primary_admin_recipient_map 饢ɥ쥹


оݤ admin_member_maps  admin_recipient_maps ˤƤޤΤ꤬
ޤ (ˤ fml4 ȿʤƤޤ ;-)

ɲоݤϰĤ˸ꤷʤƤϤޤ󡣤顢primary_*_map ĤФƹ
ʤоݤ *_maps Ǥʣ map ΤɤɲäƤ褤ΤۣǤ

դˡϡä *_maps оݤʤޤ¤ܤǤ
ä᤮ˤʤäƤޤȤ뤫ǤäˤʤΤϡ*_maps ˡָ¤
ۤʤ map פߤƤǤ

ȤСmember_maps ϥǥեȤǡ⡼ȴԤޤǤޤ

member_maps             =       $primary_member_map
                                $admin_member_maps

Τᡢmember_maps Фƺߤȡޤäƥ⡼ȴԤʬ
ƤޤȤˤʤȤ櫓Ǥ

äۣ椵򤱤뤿ˡ primary_XXX_map  XXX_maps ȤʬΥͰƤ
줿Ȥ櫓Ǥ (褦 fml4 ȿʤƤޤ ;-)



Chapter 41. ޥ(ޥɥ᡼롢makefmlCGI)

Ƽ拾ޥɤǻȤ⥸塼

fml8 Ǥϡޥɥ᡼롢makefml  CGI Ȥ⥸塼϶ͭƤ
θ¤κۤˤäơ̥桼ѤΥ⥸塼ȴѤΥ⥸
ΣĤ礭ʬƤޤʲΥ⥸塼뷲ιˤĤƲ
ޤ

FML::Command:: 饹ϰʲΤ褦ʹˤʤäƤޤ

FML::Command            FML::Command 饹ʲؤdispatcher
FML::Command::User      桼ѥޥɷ
FML::Command::Admin     ѥޥɷ

ȤС(ޥɥ᡼Ǥ)桼ѥޥɤξ FML::Command ͳ
FML::Command::User::ޥɥ⥸塼ƤӽФƤޤ



(ޥɥ᡼Ǥ)̥桼ѥޥ

FML::Process::Command  FML::Command ͳǡFML::Command::User::ޥɡ
ƤӽФƤޤ

ǽŪˡFML::Command::Admin::ޥɡפȤ⥸塼⤢ޤȤ
ϿȺμºȤϡFML::Command::Admin::ޥɡפˤ륳ɤԤʤäƤޤ
٤ƤΥץϿ/Ȥμʬͭ뤿Ǥξ硢
FML::Command::User::ޥɡפ confirm Ԥʤ wrapper Ȥդ
ˤʤޤ



(ޥɥ᡼Ǥ) ѥޥ (admin ޥ)

FML::Process::Command  FML::Command ͳǡFML::Command::Admin::ޥɡ
ƤӽФƤޤ



makefml


                                  Warning                                   

makefml ¹ԤǤǡФ˥ǤԸ¤Ȥߤʤ쨢
Ƥޤ                                                                  


FML::Process::Configure  FML::Command ͳǡFML::Command::Admin::ޥ
פƤӽФƤޤ



CGI


                                  Warning                                   

CGI ̥桼ऱ CGI ȴѤ CGI ޤ                    
                                                                            
Ѥ CGI ˤĤƤϡ¹ԤǤǡԸ¤Ȥߤʤ 
Ƥޤ                                                                


ɥ쥹Ͽ/ʤɤΤˤ̥桼Ѥ CGI ϡ FML::Process::CGI 
FML::Command ͳǡFML::Command::User::ޥɡפƤӽФƤޤޥ
᡼Ʊͤ confirm Τ wrapper ȤդǤ

Ѥ CGI ϡFML::Process::CGI  FML::Command ͳǡ
FML::Command::Admin::ޥɡפƤӽФƤޤ



ޥɽΥե

٤ƤΥޥ(fml8 ؤ̿)ϺǽŪˡFML::Commandץ饹ͳǡ
FML::Command::⡼::ޥɡץ饹ƤӽФޤGUI  CUIޥ
᡼ϡ˻ʳۤʤǤ



ޥɥ᡼ν


                                  Caution                                   

2004/03/05 ʹߤϡե졼Ȥʤޤ                       


ϥޥɥ᡼äǤ᡼ʸʣԤꡢ줬ʣ̿ޤ
ꤷޤ

ޤ᡼Ϲñ̤ǲϤޤϡԤ˰ĤΥޥɤ񤤤Ƥ
Ǥ

Ԥ̵뤹ʤɤδŪʽθ塢ޥ(ԤƬʸ)ߤΥ
ƥȤǵ륳ޥɤݤǧޤ

1) guide  subscribe Τ褦˥Сʳˤ륳ޥɤǤС
ľܡޥɸƤӽФ롼ؽܤޤǵ륳ޥɤ
anonymous_command_mail_allowed_commands ѿƤ륳ޥɤǤ

2) 餫ꤵ줿桼˵륳ޥɤξ硢
command_mail_restrictions Υ롼˽ä¾ξǧ줿ʤ顢Ƥ
Ф롼ؽܤޤǵ륳ޥɤ
user_command_mail_allowed_commands Ƥ륳ޥɤǤ

֤餫ꤵ줿桼פˤϡ̥桼ȴԤޤޤޤ
줾νΥեۤʤޤ

ָƤӽФ롼פǤϡ (ޥɤ˰¸)ֻγǧ (ޥɤ
¸)󥿥ååФơ FML::Command 饹ͳǥޥɤ¹Ԥ
ޤμ¹Ԥϰ̥桼¤Ǽ¹Ԥޤ

admin ޥɤ֤餫ꤵ줿桼פǤ admin ޥɤμ¹Ԥϡ
ǤϹԤʤޤ󡣡admin ...ץޥɤϡޤ̥桼¤ admin 
ޥ [27] μ¹ԤȤƽʤ졢ǽŪˡFML::Command::User::adminץ
饹ƤӽФޤΥ饹ǡadmin_command_mail_restrictions ѿ
Ťƥ⡼ȸ¤뤫ǧ졢⤦١FML::Commandץ饹ͳ
Ը¤ΡFML::Command::Admin::ޥɡץ饹ƤӽФޤ(Ĥޤȥ
ݥ󡦥ᥫ˥Ǥ)



CUI (makefml/fml)ν

ΥץȤǴԸ(̤ͣΥФ˥⡼Ȥꡢ桼 fml
 su Ǥ븢)ϤǤäơ̤¤ϤޤFML::Command
ͳǡFML::Command::Admin::ޥɡץ饹ľܸƤӽФƤޤ

ʤФإ⡼Ȥ󤹤뤿ˤ SSH ǡRSA 2048 ӥåȰʾθ
ΤߤѥǧڤǧʤפȤäǤʱѥ롼ݤƲ



ޥɤγĥ: ޥɥ᡼ξ


                                  Warning                                   

ֳĥǽĤϰϡפǤޤ                              
                                                                            
ΥۥȾΡƤΣ̤ͣѲǽʡץޥɤꤿϡĥ⨢
塼                                                                  
                                                                            
/usr/local/lib/fml/site_local/                                              
                                                                            
ʲ֤Ʋ                                                      
                                                                            
Σ̤ͣѲǽʵǽĥǤСƣ̤ͣΥۡʲ local
/lib/ ʲˤƲ                                                  
                                                                            
̤ͣΥۡ/local/lib/                                                     
                                                                            
: elena ( ML Υۡब /var/spool/ml/elena/ )                            
/var/spool/ml/elena/local/lib/                                              



̥桼Ѥȼޥɤ롣

桼Υޥ uja ꤿ硢 (1) FML::Command::User ʲΥ⥸塼
뤫Ŭ˥ԡڡȤ

/usr/local/lib/fml/site_local/FML/Command/User/uja.pm

ȤեäƤ (2) ˡե uja ĤƤ


٤ƤΣ̤ͣͭˤϡsite_default_config.cf ǡֵĤ륳ޥɤ
ꥹȡפɲäƤ

user_command_mail_allowed_commands += uja

user_command_mail_allowed_commands ѿϡ̥桼˵ޥɤΥꥹȰ
Ǥ

elena M̤ͭˤϡelena ̤ͣ config.cf ǡĤ륳ޥɥ
ȤɲäƤ

user_command_mail_allowed_commands += uja



admin uja ޥɤ롣

ԸΥޥ(admin ޥ) uja ꤿ硢 FML::Command::Admin
ʲŬ˥ԡڡȤ

/usr/local/lib/fml/site_local/FML/Command/Admin/uja.pm

ȤեĤäƤ

٤ƤΣ̤ͣǥޥɤͭˤϡsite_default_config.cf ǡĤ륳
ޥɥꥹȤɲäƤ

admin_command_mail_allowed_commands += uja

admin_command_mail_allowed_commands ѿϴԤ˵ޥɤΥꥹȰǤ


elena ̤ͣͭˤϡelena ̤ͣ config.cf ǡĤ륳ޥɥ
ȤɲäƤ

admin_command_mail_allowed_commands += uja



ޥɤγĥ: makefml ξ


                                  Warning                                   

ΥۥƤ ML ͭˤ硢ĥ⥸塼                  
                                                                            
/usr/local/lib/fml/site_local/                                              
                                                                            
ʲ֤ƲΣ̤ͣĥϡƣ̤ͣΥۡʨ
 local/lib/ ʲˤƲ                                        
                                                                            
̤ͣΥۡ/local/lib/                                                     
                                                                            
:                                                                         
/var/spool/ml/elena/local/lib/                                              
                                                                            
ʲǤϡ٤ƤΣ̤ͣͭˤͤޤ                          


makefml ǥޥ uja ꤿ硢 FML::Command::Admin ʲŬ˥
ڡȤ

/usr/local/lib/fml/site_local/FML/Command/Admin/uja.pm

ȤեĤͭˤʤޤ

makefml Ǥϡ֥⥸塼֤ͭפˤʤޤ륳ޥɰ
*_allowed_commands ϤѿѹפǤ

makefml ѤǤǡΣ̥ͣФø¤åǤƤ櫓Ǥ
顢ʾʣ¤ĤƤȤˤǤ礦顣



ޥɤγĥ: CGI ξ


                                  Warning                                   

ʲεҤǡѲǽʵǽɲáפޤȤ̤ CGI ̤κ 
ߤɬפǤ                                                          
                                                                            
ΥۥȾΤ٤ƤΣ̤ͣͭˤ硢ĥ⥸塼            
                                                                            
/usr/local/lib/fml/site_local/                                              
                                                                            
ʲ֤Ʋ                                                      
                                                                            
Σ̤ͣĥϡƣ̤ͣΥۡʲ local/lib/ ʲ˨
Ʋ                                                              
                                                                            
̤ͣΥۡ/local/lib/                                                     
                                                                            
:                                                                         
/var/spool/ml/elena/local/lib/                                              
                                                                            
ʲǤϡ٤ƤΣ̤ͣͭˤͤޤ                          


CGI Ǥγĥϡ̥桼ȤȤϾʤƤϴԸΤΤ
ͤޤäơʲԸǽĥΤߤ夲ޤ

ԸΥޥ uja ꤿ硢 FML::Command ʲŬ˥ԡ
Ȥ

/usr/local/lib/fml/site_local/FML/Command/Admin/uja.pm

ȤեäƤ

٤ƤΣ̤ͣ uja ޥɤͭˤ硢site_default_config.cf ǡ
륳ޥɥꥹȤɲäƤ

admin_cgi_allowed_commands += uja

admin_cgi_allowed_commands ѿϴ CGI 󥿡եǵĤ륳ޥ
ɤΰǤ

elena ̤ͣͭˤϡelena ̤ͣ config.cf ǡĤ륳ޥɥ
ȤɲäƤ

admin_cgi_allowed_commands += uja



­: fml4 fml8 ΥɤνϤɤΤ餤㤦

ޥɤŵǤإե֤٤ help ޥɤˤȤꡢ
ޤ礦

fml4 ǤϡŬʴؿȤ myProcHelpFileSendBack ꡢ %LocalProcedure
˽񤤤Ƥޤ

%LocalProcedure = (
                    'help',     'myProcHelpFileSendBack',
                );

myProcHelpFileSendBack 򤢤ƽ񤭲ȡĤΤ褦ʤΤǤ礦

sub myProcHelpFileSendBack
{
    local($proc, *Fld, *e, *misc) = @_;
    my $UJA_FILE = "/some/where/help";
    &SendFile($Envelope{'Addr2Reply:'}, "UJA $ML_FN", $UJA_FILE);
}

fml8 Ǥ help ե֤ɤμΤ FML::Command::User::help
ˤꡢ FML::Process::Command 饹 (FML::Command  AUTOLOAD ͳ)
ƤӽФޤ


                                  Warning                                   

ƤΥޥɤϡFML::Command::User::ޥɡץ饹⤷ϡ            
FML::Command::Admin::ޥɡץ饹ȤƼƤޤʤ makefml Ϩ
FML::Command::Admin::ޥɡפȤޤޥɥ᡼ CGI  User 䨢
Admin 򸢸¤˱ŬȤʬޤ                                      


help ޥɤμΤ FML::Command::User::help  process() ؿǤ

sub process
{
    my ($self, $curproc, $optargs) = @_;
    my $config    = $curproc->config();
    my $charset   = $config->{ report_mail_charset_ja };
    my $help_file = $config->{ help_file };

    # template substitution: kanji code, $varname expansion et. al.
    my $params = {
        src         => $help_file,
        charset_out => $charset,
    };
    my $help_template = $curproc->reply_message_prepare_template( $params );

    if (-f $help_template) {
        $curproc->reply_message( {
            type        => "text/plain; charset=$charset",
            path        => $help_template,
            filename    => "help",
            disposition => "help",
        });
    }
    else {
        croak("no help file ($help_template)\n");
    }
}

 $curproc ϥϥåե󥹤ǡfml4  %Envelope ˤ
̤̾ꡢUnix ͥǤʤߤ current process ¤ΤؤΥݥ󥿤
褦ʤΤǡץ˴Ϣ뤤ʥǡ¤䥪֥ȤؤΥե
󥹤ޤǤޤ

fml4 ѿϡ٤ƥХѿǤ fml8 Ǥ $config ֥Ȥ
̤ƥǤѿ֤ˤޤ $config ֥Ȥ̤
ɤ߽񤭤򤷤Ƥ

reply_message_prepare_template() ᥽åɤ֤åΥƥץ졼
ѿŸʸѴԤʤ줿ƥץ졼ȤؤΥեѥ
֤ޤ(ƥץ졼ȥե $tmp_dir ǥ쥯ȥ˺ޤ)

ɤƥץ졼ȥեѰդǤ顢 $curproc->reply_message() Ȥ
ΤΥåԤʤؿΥȥåץ٥᥽åɤƤӽФ
ꤷޤ

$curproc->reply_message() ϰˤäƿ񤤤Ȥʤޤˤ衢
åå塼᥽åɤǤ

ޥɥ⥸塼Ǥνϡ塼줿ȤǽȤʤޤʲ
ϡɤʻǤԤʤ̾ΥեΰǤ

å塼줿åϡץνλľ˼ԤȤ˥
åޤȤ̤Υ᡼ȤȤΩƤʤޤå塼
बեȥåߤƤŬ MIME ޥѡȤΥå
ޤ

åνȡô᥽åɤƤФޤ
Mail::Delivery 饹ô⥸塼Ǥ줿᡼ϡ
Ū Mail::Delivery 饹ϤԤʤޤ

ڤ fml4  Notify() ƱͤǤå٥塼
졢Ǹ˰쵤˽Ȥ礭ۤʤޤ

ʤ get ޥɤʤɤƱ塼󥰤λȤߤȤäƤޤĤޤ fml4 
Notify() ʬ(̾εʳ)ǽôĥ塼
󥰤Τߤ򤷤ޤƥ塼󥰤줿åϺǸ˰쵤˽ޤ
ˤơΥ塼󥰤Υᥫ˥ब fml4 礭ۤʤäƤ
Ǥ



Chapter 42. CGI ץ¤

᥽å

FML::CGI:: γؤˤ륯饹(Ȥ FML::CGI::ML)ϡʲΥ᥽åɷ
Ʋ

html_start()
run_cgi_main()
run_cgi_title()
run_cgi_navigator()
run_cgi_menu()
run_cgi_command_help()
run_cgi_options()
html_end()

 html_start() ϡ褦 HTML ƬʬȤ DOCTYPE  BODY
 html_end()  /BODY  /HTML ɽʬ򥫥ޥ뤿
Ѥޤrun_ʤȤפ HTML BODY Ȥ᥽åɷǤ

$curproc  run() ᥽åɤ

html_start()
run_cgi_XXX() ¹(3x3 ơ֥˽Ϥ֡9 ᥽åɤޤ)
html_end()

֤˼¹ԤƤޤĤޤ CGI ץμ¹ԤΥե( FML::Process::Flow
)

new()
prepare()
verify_request()
run()
   html_start()
   run_cgi_() (9 ᥽åɤޤ)
   html_end()
finish()

ȤȤˤʤޤ



CGI β̤κȥ᥽å

fml8 CGI ץȤǤŵŪʲ̤Τ褦ʬ䤵ȹͤƤޤ

          إå
        ˥塼    
С    ᥤ      С
        ˥塼    
          եå

ʤСȣʬ navigation ʤɤȸƤФޤ

إåʬ(HTTP إåǤϤʤHTML  DOCTYPE  BODY )եåʬ
 html_start()  html_end()  HTML ɤޤ

HTML BODY ȤϿΣΥơ֥ʬǡrun_cgi() ƤФ
᥽åɤƤޤ

run_cgi() ȤäȺ٤뤳Ȥȡ̾ΤɤʬɤΥ᥽åɤ
ΤǤ륢᥽åɤɬפǤޤˤ碌 BODY 
Ȥ٤Τ褦ʣx٤ɽƤޤ

nw   north  ne
west center east
sw   south  se



ߤ CGI β̤ι¤

ʲΤ褦ʣxΥơ֥빽¤ȤäƤꡢ줾켡Υ᥽åɤɽô
Ƥޤ

run_cgi_main
                        run_cgi_title
run_cgi_navigator       run_cgi_menu    run_cgi_command_help
run_cgi_options

HTML Υ٥ǤϡTABLE ̿ȤäƵŪʥʥӥСäƤޤ
ơϥåơ֥Ƥؿ줿֤Ǽ¹Ԥơ֥
Ƥޤ

run_cgi_main() ϲ餫ν򤷤ʤ¤겿ɽޤϡ֤ʤפOK
ġ٤Ǥ顼åɽ뤳Ȥ⤢ޤޤδؿϣ̰ͣ
ʤɤ򤭤Ⱥǿξˤ뤿ˡ̤˼¹Ԥɬפޤ

ʤߤˡrun_cgi_main() ϸġδؿƤӽФΥȥåץ٥Υץ
ǡFML::CGI::Menu::Admin ƤޤġΥޥɤϡmakefml λ
ƱͤˡδؿͳǼ¹Ԥޤ

СꥹȰΤ褦 run_cgi_menu() ̤ɽ򤷤Ƥ
Τ⤢ޤɽΥץλ򤵤뤿ˡ run_cgi_main()
ǤϤʤ run_cgi_menu() ͳɽƤȤ⤤ΤǤʤˤޥ
η̤ɽĹΤǡΤ褦 menu() ͳΤۤ褤Ȼפޤ



̤ȥȥݥ󵡹

CGI ɽʬ FML::Command:: ʲΥ饹˰ưޤ
顢 FML::Command:: ˼ΤȤϸ¤餺 object composition η
FML::CGI:: 饹󶡤˥塼饹ȤȤˤʤäƤޤȤ
subscribe ξ

FML::CGI::Admin::Main 
FML::Command::Admin::subscribe 
FML::CGI::Admin::User 
˥塼ɽ

ʤɤȤʤäƤơ Mach Υȥݥ󵡹Τ褦ˡä꤭ꤷƤޤ



: FML::CGI::Admin:: Ǥϥϡɥǥ󥰤뤷ʤ

Ȥ FML::CGI::Admin::User Ǥ $comname  maps δطϡɥǥ
Ƥ뤱ɡǤ⡢Ϥ٤ϤʤǤ礦

եɤФȡȤƤĤʤäѤѿɬפˤʤꤽǤǤ
 config.cf ѹǽǤ褦ˤƤޤ



CGI μ: CGI Ϣ饹ηѾط

config.cgi Ǥϡ@ISA (Ѿط)Τ褦ˤʤäƤޤ

FML::CGI::Menu   FML::Process::CGI::Kernel FML::Process::CGI::Param

thread.cgi ηѾƱͤǡΤ褦ˤʤäƤޤ

FML::CGI::Thread FML::Process::CGI::Kernel FML::Process::CGI::Param

 .cgi ͭΥɤ FML::CGI:: γؤ֤褦ˤƤޤ

ͭǤʤ(.cgi Ƕͭ륳) FML::Process::CGI::Kernel 
ƤޤˤϡץΤʬȡǥեȤ CGI ͭؿ
run_cgi_ʤȤ()פƤޤ

ɬפ˱ FML::CGI:: γؤǡΥ᥽åɤ򥪡СɤƤ


ʤFML::Process::CGI::Kernel ΰʲΥ᥽åɤƤǡºݤ
ϻȤƤޤ

run_cgi_log
run_cgi_dummy
run_cgi_date



CGI μ: config.cgi μ

ҤΤ褦 config.cgi ξ硢ѾطϼΤ褦ˤʤäƤޤ

FML::CGI::Menu FML::Process::CGI::Kernel FML::Process::CGI::Param

ʲǤϡconfig.cgi νߤƤߤޤ礦

config.cgi Υץ֥ $curproc  FML::Process::CGI::Kernel 饹
Ǥ FML::Process::CGI::Kernel Ǥ

        new()
        prepare()
        verify_request()
        run()
        finish()

˸ƤФޤ

פʤΤ run() Ǥrun() 

    $curproc->html_start();          (FML::CGI::Menu)
    $curproc->_drive_cgi_by_table(); (FML::Process::CGI::Kernel)
    $curproc->html_end();            (FML::CGI::Menu)

¹Ԥޤ CGI β̤Τ _drive_cgi_by_table() ᥽åɤǤ
᥽å⤫ƤФؿ CGI ΥᥤʬǤ

$curproc->_drive_cgi_by_table() ᥽åɤϡʲγơrun_()ץ᥽å
ƤӽФޤ

ȤХޥɤ¹Ԥᥤʬ run_cgi_main Ǥϡ
cgi_execute_command (FML::Process::CGI::Kernel) ƤӽФ FML::Command ͳ
ǡFML::Command::Admin::ޥɡץ饹¹Ԥޤ줬GUI 饳ޥ
¹Ԥ륳ɤΤǤ

̤ɽ򤹤ˤ̤Υ᥽åɷƤФƤޤ

Ȥ GUI ֥桼Υ᡼륢ɥ쥹Ͽ׾硢 run_cgi_menu() 
ϲ̤򤪤ʤޤ run_cgi_menu()  cgi_execute_cgi_menu() ͳǳ
ޥɥ饹ΡFML::Command::Admin::ޥ::cgi_menu()פ¹ԤƤޤ
ξ FML::Command::Admin::subscribe::cgi_menu() ᥽åɤƤӽФƤޤ


ʤߤˡºݤϿȤ򤹤 run_cgi_main() ϡ
FML::Command::Admin::subscribe::process() ᥽åɤƤӽФƤޤ

¾ˤ run_cgi_* ؿޤϲ̤κ˴طŪʤΤ
ȤäƤ褤Ǥ礦

ΣĤΥ᥽åɤϡƤǥեȤΤΤȤäƤޤ

run_cgi_title             FML::Process::CGI::Kernel 饹 (ȥɽ)
run_cgi_options           FML::Process::CGI::Kernel 饹 ()

ޤ .cgi ͭβ̺Ϣ᥽åɷȤƼΤΤޤ

run_cgi_navigator         FML::CGI::Menu 饹
run_cgi_help              FML::CGI::Menu 饹
run_cgi_command_help      FML::CGI::Menu 饹
run_cgi_menu              FML::CGI::Menu 饹

إפʤɤϥޥɤȤ˰㤦櫓Ǥ顢Ǥ͡å
ۤʤȤǡ⥸塼뤬äƤ⡢ܻۤ褦ʤĤǤ



Chapter 43. ǥ쥯ȥ

Q: ֥ǥ쥯ȥ깽¤ϲʳޤɬפ

ȤСHTML 줿ϡΤ褦ʰʳγع¤֤Ƥޤɤ
Ǥ礦

200201/msg.html

ǥեȤϰʳˤƤޤ

 PC ǽʤ顢ǥ쥯ȥ 1000 餤Υե뤬äƤۤȤ
ֻ ls ֤äƤޤ 10000 ȤʤȤäȹͤޤ

HTML 줿ե򤪤֥ǥ쥯ȥ 1000 ȤѰդȡȤ
spool/sub/file ߤˤ spool/ ʲε 10^6 ( million ) 餤ϡ
ʤΥ®٤ݤĤĳǼǤϤǤ

ĤΣ̤ͣ 100 ̤ϡʤʤޤ󡣤ͽۤϡϤʤǤ礦
ʳ 10^9 餤ޤޤĹ̤ͣ³ȤϾʤ

ʤľܤˤϴطʤǤ Maildir/ Ǥ 100 餤ǾĤ餤ʳ
餤ˤϤʤȤʤ᡼ 10,000 ̤ͤ 100 ͤǤ⤦
ᡣ



쥷's

1. ǥ쥯ȥ̾ϤɤƤޤ

1. ǥ쥯ȥ̾ϤɤƤޤ

/usr/local/etc/fml/defaults/$VERSION/default_config.cf ˥ǥեȤ
Ƥޤƣ̤ͣ config.cf Ǿ񤭤ޤư˻ȤäƤͤ
fmlconf ɽȤ褤Ǥ礦

% fmlconf ͣ̾ | grep _dir

ͤ HOOK ǻȤݤˤ config ֥ȤФƲ

$_xxx_hook = q{
        my $config = $curproc->config();
        my $xxxdir = $config->get('some_where_dir');

        ... ά ...
}

 



Chapter 44. ϥǡθ

ϥǡ(ä˥ޥɤʤ)Фθ( input validation ) 
ʤƤޤ

ץ줵줿Ԥʤᡢ FML::Restriction 饹˴ŤƸ
Ԥʤޤ



ϥǡˤĤƤγ

ƥ᡼Ф

⤽⵭Ф(ϥǡɽϰϤ)ȤΤϹͤˤ
ǰǤº FML::Restriction 饹ˤϥǡåϹԤʤƤ



                                  Caution                                   

(SPAM ǤȻפ)ԥ᡼ʤɤϤ FML::Filter 饹ˤ訢
ե륿åԤʤޤ                                        
                                                                            
ϵƤФåǤϤʤΤǡ FML::Restriction Ш
ݤȤƤȤϰ̣礤ۤʤޤ                                  



ޥɥ᡼Ф

ޥɥ᡼ FML::Process::Command ǰԤ FML::Restriction::Command
ƤɽˤäϤ줿ޥ󤬸ޤ
ʤС FML::Command::{User,Admin}::ޥɤμ¹Ԥ˿ʤळȤǤޤ



CGI Ф

CGI γƥץǤϡsafe_param_XXX() ȤؿͳǤΤ HTTP å
ΥǡȤ뤳ȤǤޤ

safe_param_*()  try_cgi_*() ϰ֤ͤȤˤʤäƤޤ

 safe_param_XXX()  FML::Restriction::CGI ( FML::Restriction::Base 
ѾƤ)ͳǥѥθ򤷡˹ʤˤΤ֤ͤƤ




makefml  fml

ޥɥ饤Ǽ¹Ԥ(ξǤǽǤ)Τǡϥå
ʤפΤǥեȤǤĤޤꡢΥ뤬Υ桼Ǥ
ǧڤƤϤʤΤǡ桼/Υ桼Τ뤳ȤϤ٤פȿ
Ƥޤ

󡢳ƥ⥸塼뤴Ȥ¤ϼޤȤСadduser ǥɥ쥹ɲ
褦ȤƤ⡢ɥ쥹˸ʤ褦ʸеݤޤ
Τ¤ϳƥ⥸塼¸Ǥ



FML::Restriction 饹

ϥǡ䡢ޥɤ ACL  FML::Restriction 饹ʲ˥⥸塼֤
뤳ȤˤƤޤ

ȤСCGI Ǥ FML::Restriction::CGI 饹Υ⥸塼Ѥϥǡ
ɽ˼ޤ뤫ɤθ򤷤Ƥޤ

FML::Restriction ʲǤ Base ѾƤޤ¾Υ⥸塼Ǥϡ
FML::Restriction 饹 object composition ƻȤäƲȤС

use FML::Restriction::CGI;
$safe = new FML::Restriction::CGI;
my $allowed_regexp = $safe->param_regexp();

if ($value =~ /^$allowed_regexp{$key}$) { ... ok, do something ... ;}

Τ褦˻Ȥޤ



CGI ˤϥǡ

CGI Ǥ FML::Restriction::CGI 饹Υ⥸塼Ѥϥǡɽ
˼ޤ뤫ɤθ򤷤ޤ

ͤϡҤΥ饹¤򤦤٤ǤΤᡢľ param() Ȥ
ƤϤޤɬ safe_param_xxx() ᥽åɤ̤ơ param() ( CGI ⥸塼
 )ΥǡϤ򤷤Ʋ

ʤϤ줿ɰĴ٤뤿ˡ

for my $dirty_buf (param()) {
   ... check ...
}

Τ褦ʹʸɬפǤ礦

param($dirtty_buf)

ʤɤȤϤƤϤޤɬ

for my $key (param()) {
   ... check ...

   if (key eq $key) {
       value = safe_param_key()
   }
}

Τ褦˽񤤤Ʋ



: FML::Restriction ¤ϤӤ᤮뤫

FML::Restriction Υ饹Ǥ RFC ʤɤǵƤɽΤ
ޤ

⤽ RFC ΤǡȴȤмȴˤʤޤɤϰ
¦ˤƤޤ

 FML::Restriction::Command ϥޥɤΥ󥿥ååϡ⤦
γ٤夲٤ʤΤ⤷ޤ󡣸Ǥ̤



Chapter 45. 桼ǧ

桼ǧڤ FML::Credential 饹󶡤᥽åɤȤäƹԤʤޤ



: FML::Credential μ

case sensitive or insensitive ?



USER    ѡȤ sensitive
ɥᥤѡȤ insensitive

ץǡUSER ѡȤ insensitive ˤǤ褦ˤǤ褤ΤǤ




Chapter 46. HOOK(եå)

HOOK Ȥϡfml8 ˤ餫ѰդƤ־ perl Υץ
Ԥ׵ǽǤ(ѸǤ HOOK  eval() ȤȤǤ)

HOOK ׽׽ѰդƤޤ

HOOK ϡΥƥȤǼ¹Ԥޤΰ̣ܼŪ˴
ǽǤ١fml8 ȤˤĤ򤷤Ƥʤ HOOK 񤯤ȤϤǤ


ΰ HOOK 򤦤ޤȤȤǡμ֤ʣư¸뤳Ȥǽ
ˤʤޤ

ΤϻȤѤǤ



פ⤷ HOOK ˤ

HOOK ̯ʽ⤷ʣʥޥΤɬפʵǽǤ
ˤƤϡĤ꤬ޤ

ޤfml4  $START_HOOK Τ褦ۣʤΤǤϡץऴȤ˰ۤʤư
뤳Ȥ񤷤Ȥ $START_HOOK ꤹȡƥȥޥɥ
륷ƥƱ $START_HOOK ¹Ԥޤ줬ʾ⤢ΤǤ
䤴Ȥ˰ۤʤư򤵤褦Ȥݤʬˤˤʤ


Τ HOOK ̾˰δबɬפǤ礦 fml8 ǤϡؿκǽȺ
 HOOK Ѱդ硢Τ褦ʥ HOOK ̾ΤȤƤޤ

$_ؿ_start_hook
$_ؿ_end_hook

ˤƥȥޥɥ᡼륷ƥǶ̤ HOOK ʤɤȤΤϤ
ʤꡢ̡ HOOK 򤷤뤳ȤǤ褦ˤʤޤդˡ̤ΤΤ
褦Ȥʤ顢ս񤤤Ʋ;)ȤȤǤޤԡФ
顢񤷤ʤǤ͡(Ȼפ)

$distribute_XXX_start_hook = q{ ... };
$YYY_XXX_start_hook = $distribute_XXX_start_hook;

ޤHOOK νɤʤƤưʤȺǤ礦ȤΤϡ־
פȤǤϡ Perl ǿͤ󤬹ԤʤȤ¿Ǥ

Ǥϡߤǽ¸硢ɤ񤯤Ȥ⡢Ǥ
¸뤳Ȥޤϡפˤ٤ǤϤʤȹͤ


Ȥ櫓ǡ̾ƥ⥸塼Ǥ

use strict;

ˤʤäƤޤ HOOK ɾ lexical scope Ǥ̵뤹褦ˤƤޤ
ºݤˤϡHOOK ɾݤˡĤͤ

no strict;
HOOK 

ȤʸѴ eval() Ƥޤ

fml4  fml8 礭ʰ㤤ΤҤȤĤѿؿΥפǤդƲ
fml4 δؿƥХؿʤΤǡɤʴؿǤȤޤ fml8 Ǥϡ
Ϥޤ󡣤ȤϤޤä꤬꤬ʤΤ⺤ΤǡHOOK ѤǤ
ĶǤ $curproc ֥ȤϾ˥ǽǤ뤳ȤݾڤƤޤ


Ĥޤ HOOK 񤯺ݤˤϡ $curproc ֥ȤΥ᥽åɤȤä
񤯤褦ˤƲ



HOOK ̿̾§

HOOK ̾ɸŪʷˤĤƤ

̾_᥽å̾_start_hook
̾_᥽å̾_end_hook

ʤɤȤ뤳Ȥˤޤ̾ϡuse_XXX_function(:
use_article_post_function) XXX ʬǤäγ٤κ٤ HOOK ˤĤƤϡ
ηǤʤΤ⤢ޤ

ȤСfmlconf ޥɤΥᥤ᥽å run()  HOOK ̾

fmlconf_run_start_hook
fmlconf_run_end_hook

Ȥʤꡢrun() Ǥ hook ƤӽФϼΤ褦ʥɤˤʤޤ

sub run
{
    my ($curproc, $args) = @_;
    my $config  = $curproc->{ config };

    my $eval = $config->get_hook( 'fmlconf_run_start_hook' );
    if ($eval) {
        eval qq{ $eval; };
        print STDERR $@ if $@;
    }

    $curproc->_fmlconf($args);

    $eval = $config->get_hook( 'fmlconf_run_end_hook' );
    if ($eval) {
        eval qq{ $eval; };
        print STDERR $@ if $@;
    }
}



쥷ԡs

1. HOOK ǿ侩ѿ̾ϡ
2. HOOK ѹƤ褤ѿϤʤǤ

1. HOOK ǿ侩ѿ̾ϡ

HOOK ǻȤѿ my() ¤ƤСä¤ϤʤǤ

$hook = q{
        my $x = $config->{ xxx };
        my $y = $config->{ yyy };
        if ($x eq $y) {
            SOME ACTION
        }
};

 

2. HOOK ѹƤ褤ѿϤʤǤ

$config ֥Ȥؤꤢޤ󡣤ޤ $curproc 󶡤륢
᥽åɤѹǤΤˤĤƤ⼫ͳ˥᥽åɤȤäƲ

åץ졼ɤƤΤʤ HOOK 񤯤ˤ $curproc Υ᥽åɤ
Ȥäƽ񤯤褦ˤƤ

HOOK Ǥ $curproc Υ᥽åɤǥǽƤѹƹʤ褦
fml8 뤳ȤޤʳΤȤ򤹤ȥåץ졼ɤƤư
ݾڤޤ



Chapter 47. Сɥᥤμ갷ˤĤ

;: ߤ fml.org зΣ̤ͣϡ٤ƥСɥᥤȤƱ
ѤƤޤ줬ƤǤϤϰĤǤ⡢
ɥᥤƤΤϤ褯뤳ȤǡͤȡϤᤫС
ᥤ줷ƤȰ䤹Ȼפޤ


                                  Caution                                   

2003/11: Сɥᥤμ갷ĥޤ                     
                                                                            
/usr/local/fml/etc/main.cf ˤ virtual_maps  obsolete Ȥʤޤ 
 virtual_maps  ml_home_prefix_maps ȤȤˤʤޤ 
ʤ顢ߴΤ virtual_maps ³ͭǤ( ʤΤȤϤʤߨ
Τᡢ ml_home_prefix_maps  virtual_maps ޤƤȤ 
ΤȤǤ Postfix  virtual_maps  virtual_alias_maps δطߤ 
)                                                                     
                                                                            
ޤmakefml  fml ޥɤˤ ml_home_prefix_maps         
newdomain  rmdomain ޥɤߤޤ                            



СɥᥤΥǥƥ

 fml8 ΤǥɥᥤŪ˰褦ˤޤǤ fml4 
ľʳĥǤäƤۤˡۤʤɤڤǤȴ򤷤פ
Сɥᥤ߷פǤμפʾǤ

ޤͣ̾ˤϡ֥桼ɥᥤ׷ʸ [28] ȤȤˤޤ
ǥեȤΥɥᥤ󤫥Сɥᥤ󤫤 fml8 ᤹뤳ȤǽǤ

ͣ̾ʳϽΥޥηϤΤޤޤǤ

ɥᥤΣ̤ͣݤκǽΰϡ֥ɥᥤȥѥפΤ
ޤʤȤʤΤǡMTA ؤɲ꤬ɬפˤʤޤʳϥǥե
ȥɥᥤξƱͤǽǤ

ľʳĥˤʤäƤȻפΤǤɤǤ礦



: fml8 ˤСɥᥤμ갷

ˡɥᥤȤϤǽ newdomain ޥɤ¹ԤƲ
Υޥɤ ml_home_prefix_maps (Τˤ primary_ml_home_prefix_map)Ŭ
ԽƤޤ

θ fml4 Ʊͤ makefml (or fml) ޥɤȤäƤ
makefml (or fml)ޥɤȤݤˤϡ֥ͣ̾桼ɥᥤ׷ǻꤹ
ȤۤʤޤդƲ

ʤǥեȤΥɥᥤξˤϡɥᥤ󤬾άǽǤĤޤꡢξ
˸¤ fml4 ƱȤ櫓Ǥ

ȤСޥɤϣ̤ͣǤϤʤ̡ͣɥᥤ̾ȤȤˤʤޤ
ĤޤꥳޥɤλȤ

makefml newml   ML@virtualdomain
makefml add     ML@virtualdomain        address
makefml bye     ML@virtualdomain        address

ʤɤȤäˤʤޤ

ʤCGI ǤǤϥɥᥤ̾λ꤬פǤϡconfig.cgi ˥
ᥤ̾򥹥ץǤ뤿Ǥ̤ˤɥᥤ̾ФƤ
Ǥ⤽ URL ˥ɥᥤ̾äƤ

http://lists/~fml/cgi-bin/fml/$domain/admin/config.cgi

ΤǡɤΥɥᥤ򤷤ƤΤϤ狼äƤϤǤ


                                  Warning                                   

ʤCGI  URL ˥ɥᥤ̾äƤΤϡͤˤȤäʬ䤹 
褦ˤȤθǤäơCGI  URL 򸵤˼ʬоݥɥᥤ̾ 
Ƥ櫓ǤϤޤ(ϴǤ)                                  
                                                                            
ͣ̾ɥᥤ̾ newml ˺ .cgi ץȤ˥ϡɥǥ 
Ƥޤ URL ΥɥᥤĶѿ CGI ץȤ̵뤷ޤϡ
ɥǥ󥰤줿򸫤ޤ                                      
                                                                            
CGI ¹Իˡ桼 HTTP ͳоݤѹ뤳ȤϽޤ (ި
)                                                                     



ǥ: FML.ORG дְۤ

FML.ORG 夫奵Фذۤ򤷤εϿ򻲹ͻȤƤޤ
Ƥޤ

Сfml4  fml8 СϻȤޤǤ٤Ƥ򥳥ԡ
MTA Ѥޤ (include ϶񤭤ޤ)

(1) ФѰդޤۥ̾ϺޤǻȤäȤΤʤΤĤޤ
ʳǤϡФǤϥ󥿡ͥåȤΥ᡼դʤ褦ˤ
Ʋ

(2) Postfix  localhost ȿۥ̾ mydestination ȤƼȤ褦
ꤷޤĤƻȤäȤΤɥᥤ󤹤٤ƤСɥᥤȤƽ
뤿Ǥ

(3) 쥵Ф Postfix ߤ˥᡼դʤ褦ꤷƤ


ƥ塼եå夷ĤޤĤäƤ륭塼Ĵ٣̰ͣΤΤʤ
Ȥǧޤ(mailq  postcatʤ postsuper Ȥ)ps ä
ץʤǧƲ

쥵Фǽ٤᡼(fml ϤΥ᡼)٤Ƥʤʤä
Ĥޤ̤ͣιäʤʤäȤ˼Ǥ鼡Υƥåפؿʤߤޤ


(4) 쥵Ф鿷Фأͣ(/var/spool/ml )򥳥ԡޤ֤
ʤˡ˥ԡƤꡢǸκʬ򥳥ԡȤ
ȤǤ(Ȥ rsync ȤäƹԤʤäƤ)

(5) ̤ͣΥѥ֤ޤ

١ǥ쥯ȥ/ɥᥤ̾/ͣ̾

Ȥơɥᥤ̾Ϥäʬ褦ˤޤ

(6) ɥᥤ󤴤Ȥˣ̤ͣޤ

% su root
# makefml newdomain ɥᥤ̾ ١ǥ쥯ȥ/ɥᥤ̾
# suspend
% makefml --force newml ͣ̾
% makefml --force newml ͣ̾
   ... ɬפʤ ...

config.cf include ե뷲ͣԣѤե뤬ޤǥե
ͤȰۤʤΣ̤ͣ config.cf ԽƤ

(7) ɥᥤ󤴤Ȥ Postfix  alias_maps  virtual_maps ɲäư
ǧ򤷤ޤ

(8) ɥᥤο (6)(7) 򷫤֤ޤ

(9) ǥƥȤ򤷤꤬ʤ褦ʤ顢Фǥ󥿡ͥåȤΥ
դ褦ˤޤ (/etc/postfix/main.cf  inet_interfaces  /etc/
postfix/master.cf ԽǰΤ postfix reload ǤϤʤ postfix stop 
postfix start)

ǽǤˤʤޤ͡

ʤWWW ֤κʤȤɬפʤ顢˺Ȥ³ޤܥɥ
Ȥγ뵭Ҥ򻲾ȤƲ



Chapter 48. 顼᡼ϥץ (libexec/error)

/usr/local/libexec/fml/error  fml4  mead (libexec/mead) 륨顼
ϥץǤ

$use_error_mail_analyzer_function  yes ˤȡ顼ϵǽͭˤʤ
ʤߤˡǥեȤ $use_error_mail_analyzer_function  yes Ĥޤꥨ
ϵǽͭˤʤäƤޤΤ fml4 Ȱۤʤޤ

ĤޤȤ fml8 Ǥ fml4 Ǥ褯ȤǽϽᤫͭˤʤäƤޤ





̺ͣ $ml-admin ɥ쥹Υ᡼ /usr/local/libexec/fml/error Ƥ
Ф褦ꤵޤ

/usr/local/libexec/fml/distribute ʤɤƱͤ /usr/local/libexec/fml/error 
ɸϤ᡼ɤߤߡϤMail::Message ֥Ȥκ
ޤ Mail::Bounce 饹顼ƤβϤ򤷤ޤ

Mail::Bounce ϡ顼᡼ˤĤơ֤ɤ MTA Τס֥顼
᡼륢ɥ쥹ס֥顼ͳפʬϤޤ

Ϸ̤ $error_mail_analyzer_cache_dir ǥ쥯ȥ˳Ǽޤ

ְʾв᤹ȡ $error_mail_analyzer_function åΥǡ
Ϥ᡼륢ɥ쥹¸ߤʤ褦˻פ뤫ݤȽꤷޤη
ä٤ȽǤȡޤ

ְ֡פȡ־ä٤ȤȽǡפĤʥ塼˥󥰥ѥ᡼ˤ
ޤ



顼ȽΥ르ꥺ

$error_mail_analyzer_function_select_list ˤؿ̾Ѥ륢르ꥺ
ǤǥեȤǤ simple_count  histgram ȤĤΥ르ꥺबѰդ
Ƥꡢ histgram ǥեȤǤ



르ꥺ: simple_count

ñ˥顼֤äƤ᡼ǡֺ뤫ݤפηǤȽꤷޤ

ñ˥顼ʤΤǡɤޤޡɼԤ򾯤δְ֤㤨Ƥơɤ
ޤޡɤή̤¿硢μԤϡֺоݡפȤߤʤ뤳Ȥˤʤ
ޤ

äˤ⡢褦ʤƤޤΤˡǤ



르ꥺ: histgram

顼Ϣ³ƣ³˸¤ԤʤޤǥեȤǤ 14 (Ĥޤ
)ΤϢ³ƥ顼ξˡϤƥɥ쥹κԤʤޤ

ǥå: ʤȤ̤ή̤ʤȡΥ르ꥺưޤ

å: äȴְ㤨μԤ뤳ȤϤޤ

ߤΥǥեȤϡΥ르ꥺǤ

: ΤȤʤ顢ή̤̤ʤ褦ʡޤäȤ̤ͣǤ
Υ르ꥺưޤ:-)



ǡΥå

ƥ顼᡼(餷)βϷ̤ $error_mail_analyzer_cache_dir ǥ쥯
ȥ˳Ǽޤ

ߡåϤˤ Tie::JournaledDir 饹ȤäƤޤΤˤ
FML::Error::Cache ͳ Tie::JournaledDir ؤ IO ԤʤäƤޤ

FML::Error::Cache  Tie::JournaledDir ľ˰֤ץؤȤʤäƤޤ
٤Ƥ IO ϡFML::Error::Cache 󶡤 primitive ʥ᥽åɤ̤ƤΤ
ԤʤʤФʤޤ



顼åեɤ

$maintainer_recipient_maps

Ȥȡ顼åžꤹ뤳ȤǤޤǥեȤϡ̤
פǡžϹԤʤޤ󡣤Ĥޤ fml8 顼᡼ΥĤǤ(
ǤΤǿ侩)

եɤ򤷤ϡȤȡñ˥顼᡼Υեǥ󥰤
ԤʤǤ顼᡼( message/rfc822 )̤ޤ̵̣ mime
/multipart ̤ͣδԤޤ

Τإå + Υ顼᡼Υɥ쥹ʬϥݡȤȤʤդ
ȤäȻפäƤޤ

ե: fml-devel ML 451 򻲾ȡ



Chapter 49. IO 󥿡ե

ΰܿ/ĥ򸫿ʤ顢̥ͣФ߷פˤƤ UNIX ˤ
Vnode/VFS interface (vnode(9)) Τ褦ʹ¤򤢤餫ƳƤ٤Ǥ
礦

: NetBSD  vnode ¤Ρ

struct vnode {
                ...
        voff_t          v_size;                 /* size of file */
        int             v_numoutput;            /* num pending writes */
        long            v_writecount;           /* ref count of writers */
                ...
        int             (**v_op)(void *);       /* vnode ops vector */
                ...
        void            *v_data;                /* private data for fs */
};

v_op ˡ vop_open() vop_read() vop_getattr() ʤɤޤ

Ĥޤ struct vnode  **v_op (vnode operation vector) ˤΤ IO ˻Ȥ
륯饹γƥ᥽åɤǤ

fml8 Ǥ IO::Adapter 饹Ȥݲ줿󥿡եȤޤ
饹ϥ桼ꥹȤȤ֥ȤФ IO 󥿡եݲ
ΤǤ



IO::Adapter δܷ

fml8 ߷׾μܤȤʤ륯饹 IO::Adapter ȤǤ礦⤹Ǥ˴
Ǥꡢprimitive ʥ᥽åɤϲʤɤˤĤƤ⽽ʬ̤ͤƤޤ

IO::Adapter 饹

KEY => VALUE

⤷

KEY => [ VALUE, VALUE2, VALUE3 ]

ΤŤ줫ηΥǡ¤ݲƤȹͤޤĤޤꡢ RDBMS
δƱͤɽǡ¤Ǥ

KEY1 VALUE1-1 ""     ""
KEY2 VALUE2-1 VALUE2-2 VALUE2-3
KEY3 VALUE3-1 VALUE3-2 VALUE3-3
KEY4 VALUE4-1 VALUE4-2 VALUE4-3

桼ꥹȤɬ׺¤δܥ᥽åɷϡ IO::Adapter 

open()
close()

ӡΥ֥Ȥؤ IO Ǥ

add(KEY, ARGV) (ARGV ϥ饹¸ΥǡϤΤˤ)
delete(KEY)
find(KEY or REGEXP)
get_next_key()

нʬΤ褦ǤʤȤ⡢桼ϡΥ᥽åɤǽʬ
ޤ



᥽å

ҤΤ褦 IO::Adapter δܥ᥽åɤϼ̤Ǥ

open()
close()
add(KEY, ARGV) (ARGV ϥ饹¸ΥǡϤΤˤ)
delete(KEY)
find(KEY or REGEXP)
get_next_key()

󡢥֥ȤΤ new() ǤΤǡʳ new() 
ɬפǤ:) ɬפʤŬǥȥ饯Ʋ



new()

֥ȤΤ new() ǤȤ IO::Adapter ǤС

$obj = new IO::Adapter ޥå;
⤷
$obj = new IO::Adapter ޥå, ѥ᡼(ϥåե);

ʤɤȥ֥ȥפ(ޥå)ǻꤹ뤿ᡢޥåפ˱
ʤޤ

ƤӽФδܷϰ¿˹碌ΤǡΤ褦ˤʤޤ

my $config = $curproc->config();
my $obj    = new IO::Adapter $map, $config;

HOOK ʤΤѤݤˤ⡢Ĥͤˡηǽ񤤤Ƥ٤Ǥ



open()

եǤ open(2) RDBMS Ǥ SQL Фؤ³Ω롢Ȥ
Ǥ



close()

ʤ open() εդư򤷤ޤ



add(KEY, ARGV)

KEY (ץ饤ޥꥭ)⤷ KEY  KEY տ魯ǡ򥪥֥Ȥ˽
ߤޤʤARGV ϥ饹¸ΥǡϤΤˤǡΰ
ʤȤ⤢ޤ

UNIX Ȱۤʤꡢ֥Ȥι¤˰ηޤȤ RDBMS Τ褦ʥ
֥ηǤ

ޤץ饤ޥꥭȤʤΤ̾᡼륢ɥ쥹Ǥ¿ξ̤
ᡢ᡼륢ɥ쥹ץ饤ޥꥭˤơ֥뷿Ūʥǡ¤
ޤ



delete(KEY)

KEY  KEY տ魯ǡ¤ޤ



find(KEY) / find(REGEXP)

֥⤫ץ饤ޥꥭ˳ǡõޤ

õоݤɽǻǤ褦˺ǤɽȤȡ
桼ʤɤǽޤ

֤ͤ STR  ARRAY_REF (KEY Ф [ VALUE, VALUE2, VALUE3 ])Ǥ



get_next_key()

ץ饤ޥꥭΰФ礬¿ޤ

while ($obj->get_next_key()) { ... }

Τ褦ɽǽȤ뤿ˡΥ᥽åɤƤޤ

ϥϥå FIRST_KEY()  NEXT_KEY() ˤȤޤʤ顢
ξ open() ʤɤΥ᥽åɤѰդƤ뤿ᡢ FIRST_KEY() 
NEXT_KEY() Τ褦ˣĤʬɬפϤޤ

XXX ʤˡkey() ⤷ get_key() Ǥɤ롩





֤ͤ ARRAY_REF ߤ硩

󡢤ɤǡ¤ߤǤ礦ͤ PRIMARY KEY ΰ餤



ץ饤ޥꥭФϡ

ФɤǤߤ뤳ȡĤޤ get_next_key() ƤӤޤ륳ɤǤѤ
᥽åɤäǤ礦ɡäˤʥɤϽ񤫤ʤΤǡ
᥽åɤʤƤϤʤȹͤޤ

⤷Ȥ get_primary_keys() ߤ̾Υ᥽åɡǡ ARRAY_REF 
֤ΤǤ礦͡Ǥ⡢find('*', { all => 1 }) ʤɤȤ KEY ͤ
ARRAY_REF ֤ޤǡ̤Υ᥽åɤפʵޤ

(KEY1 KEY2)



֤ͤ HASH_REF ξ硩

줳ɤǡ¤ߤʤǤ礦֤ͤ HASH_REF Ȥ
Τ褦ʹ¤֤ͤˤʤǤ

֤ = {
        ѿ => ͣ
        ѿ => ͣ
}

᡼륢ɥ쥹°Ĥ硢äǤ֤ͤߤǤ礦
ȤСޤȤ(fml4 )

᡼륢ɥ쥹 => {
        ֳ        =>      ֡
        ե밵    =>      ʤ
        եޥå    =>      mime/multipart
};

: fml8 ǤϡޤȤʣʥץϥݡȤƤޤΤǡ
פǤ

ɡɬפʤȤΤ



Chapter 50. å

ץ֤ƱϥåѤƹԤʤޤ fml8 ǥݡȤƤå
ᥫ˥ flock(2) ⤷ lockf(2) 򸵤ˤåΤߤǤ



åγ

ʤ餯 giant lock Ǥ2003/03  giant lock ʤޤ

ߤǤϡʤ꥽Ȥˡåͥ뤬ѰդƤޤ

ȤСMail::Delivery ϢϥСꥹȤ˥Τǡȥ
ɬפǤ

Mail::Delivery::SMTP κݤˤϥСꥹȤΥåɬפǤߤϡ
Mail::Delivery::SMTP ƤӽФ FML Υ饹(¤ FML::Send 
FML::Process::Delivery Σսꤷʤ)ǥå򤷤Ƥޤ

Mail::Delivery::Queue ϸ (mailq ޥ)ǽʤΤ
ʤΤǡåϹͤʤɤϤǤ

ơreader writer lock ޤ礲ǤʤȤ̤ map Ȥ⥸塼ˤ
åɬפǤ write Ѥ lock ɬפȤϸ¤ޤ󡣤Ȥ FML/Command/
UserControl.pm  FML/Command/Auth.pm ˤ write Ѥ lock ɬפǤ FML/
Credential.pm  read Ѥ lock Ǥ褤Ǥ

ʤ顢ޤΤȤ reader writer lock ϼƤޤΤǡ꥽
Ȥκ٤å critical region λ֤û褦ˤʤäƤޤ



TODO

*_maps ˤ MUTEX ǥå򤹤롣䡢ꤹ⤷ޤ

СꥹȤ IO::Adapter 򤫤ޤˡ READER WRITER LOCK ۤ [29]
perl thread ĤФǤ뤱ɡŪʼϤʤĤݤ;)



Chapter 51. ǡ١Ϣ⥸塼

פ⤷

̥ͣɥ饤Фϥ᡼ΤޤޤǤǡȤ¸ɬפޤ
ʤ顢³Ū˻Ĥ٤ǡȡַв˼ΤƤɤǡޤ


ԤϥåɤΥǡǤԤϥե륿ƥλäƤ
message-id cache ʤɤǤåɥǡ١Ʊ message-id Υǡ
äƤޤʬˤĤƤϽʣƤޤǤĤ֤ͭϰۤʤ
̡˼갷ɬפޤ

ȤϤºꥹåɴطȤʳ˽ǤʤΤǡƥ⥸塼
ŪʴطϼΤ褦ˤʤΤǤ礦

⥸塼 ---||----- å DB
⥸塼 ---||
⥸塼 ---||
⥸塼 ---||----- å (ͭ¤Ĥ)

Υå DB  Mail::Message::DB Τ褦ʤΤȤץؤۤۼ
ߤåˤĤƤϡߤΤȤ Tie::JournaledDir ⤷
FML::Cache::Ring ΤŤ줫Ȥ뤳ȤȤʤäƤޤ

ʤСꥹȤʤɤα³ɬפʥǡФƥǡ١Ȥ
衢Ȥ DBMS (ǡ١ƥ)Ȥ٤Ǥ

ܾϤǽҤ٤ǡ١ϤȤϰۤʤꡢ fml8 ưŪ˻ȤäƤ
ǡ١ΤȤǤ



³Ūʥǡݻ

³Ū˥ǡݻˡϤĤޤøʤΤ翿ܤʤ
ΤޤǤǤ翿ܤ˹ͤȡLRU ʤɤεǽä⥸塼
ƺΤ⤷ޤ󤬡礲ǡޤҤȤĤäꤳʤޤ
Ĥޤꡢޤǿܤ virtual memory Τ褦ʼ򤷤ʤƤ褤ΤǤϡ
ȤǤˡ⤷ڼ¤ɬפΤʤ顢ʤ餫 DBMS [30] Ȥ
Ǥ礦

Ǥ fml8 ǻȤäƤ⥸塼β򤷤ޤ

fml8 Ǥϡǡ expire λ˱ƣĤΥǡݻ饹ѰդƤޤ
ϡ֥򵤤ˤ֤ڤä expire ΤסֻѤΰ
򤢤ٵˤ뤫פΣǤ



Tie::JournaledFile 饹

ϡĤΥե append ƤפǤεǽ
Tie::JournaledFile 饹󶡤ޤ

Υ饹ϡǡɲäˤȤƤޤΥǡ򻲾Ȥ
ˤѤޤɲäΥڥ졼󤷤Ԥʤޤ󡣤Ĥޤ LFS (Log
Structured File System) Τ褦ʿ񤤤Ǥ

ȤݤϺǸɲäǡФޤĤޤꡢͤɲä줿ͤ
last match ǼФƤޤ [31]

Υ饹ϡٳ뤷ư֤ΤϿƤǡФ
ȤޤȤСϿ confirmation Υå message-id å
Ǥ expire ֤椷ǤΥ饹ϰǥե̾
Ϳ뤳ȤˤʤäƤΤǡե̾դĤΥե֤ɤǤ


ʤ̤ tie() Ȥϰ㤦

key => [
        1    (ɤäΤդΤɤäι),
        2    (ɤäΤդΤɤäι),
        3    (ɤäΤդΤɤäι),
]

ΥǡФ򤷤礬ޤηΥǡФ
get_all_values_as_hash_ref() ᥽åɤȤвǽǤ


                                  Warning                                   

ʤεư first match  last match ؤ뤳ȤǤޤɤ 
άõΤ饹֥ȤݤŪ˻ꤹ뤳Ȥ䨢
ޤǥեȤ last match Ǥ(Ǹ˽񤭹ǡ֤뿶 
񤤤Ǥ)                                                           



FML::Cache::Ring 饹

 FML::Cache::Ring 饹ϡ˥˾¤ߤפΥǡߤ
Ѥޤ(expire)ˤĤƤϵˤޤ󡣻֤ǤϤʤǡΥ
̵ͭ蘆ǡѴޤ

ǥХåѤǡǤСäǽʬȹͤޤʤϻȤ
ǥХåΤˡϡɥǥȤƤޤΤϷǤ顣

Υ饹ϡǥ쥯ȥ(: db/)˺줿ͭ¸ĤΥե뷲˥ǡ
ߤƤޤȤ db/ ǥ쥯ȥ 1  100 ̾Υե뤬Ĥ
졢֤˻ȤƤޤΥեϤ뤰ä(1 2 3 4 ...)Ȥ졢
Ƥޤ(100 Ķ)ȡäƾ(1 2 3 4 ...)ޤ


                                  Warning                                   

 RingBuffer  FML::Cache::Ring 礵ޤޤFML::Cache::Ring  
 File::CacheDir ޤ                                        



Chapter 52. ǡ١ƥ(DBMS)ȤϢ

СꥹȤʤɱ³ɬפʥǡˤ DBMS (ǡ١
)ȤϩȴߵǤ

ä硢 DBMS (ǡ١ƥ)Ȥ٤Ǥ (
ȤΤȤޤ礦;-)ܾϤоݤȤƤǡ١Ȥϡ
ạ̈礤 DBMS ˤƤޤ

ߡѲǽ DBMS  RDBMS (MySQL  PostgreSQL)  LDAP Ǥ

fml8 ưŪ˻Ȥǡ١⥸塼ˤĤƤ  Chapter 51 
ȤƲ





DBMS Ȥ̿ IO::Adapter 饹ͳ̿뤳ȤǤ

Υ饹ǡȤäŪʵǽ󶡤ޤ

դ˸ȡθŪʵǽȤ߹碌ʣ IO::Adapter ʳ
ǽɬפޤ



Chapter 53. ǥ: ¾Σ̥ͣƥ fml8 Ѵˤϡ

: fml4  fml8 ؤΰܹԤˤĤ

 1. /var/spool/ml/elena/  4.0  8.0 ذܹԤ

Τ褦ʽ򤹤뤳Ȥˤʤޤ

1) fml8 򥤥󥹥ȡ뤹롣κݡpostfix  alias_maps  /var/spool/ml/etc/
mail/aliases (ޤʳǤȤΤʤեǤ褤)ɲä롣

2) makefml --force newml elena νԤʤfml8 ɬפʥե򤤤
ȺɬפΤǡnewml ¹ԤƤޤۤ褤 makefml
newml ¹Ԥ뤫newml μΤνƤӽФ褦ˤ뤫ϤɤǤ褤(
֤ԤμǤ褤)

3) /var/spool/ml/elena ΥСꥹȤ fml8 Ѵ롣κݤˤ⡢
ѴʤȤʤ

3-1) IO::Adapter  ^# ιԤϥȤȻפä̵뤷Ƥ롣äơactives 
off Ƥ륢ɥ쥹ϾäƤ褦˸롣

3-2) off  s=skip Ƚ񤤤Ƥ on ˤʤäƤޤ

3-3) m=... ĤޤޤȤԤ̵ˤʤ롣ʤ顢Ū members  #
address Ƚ񤫤Ƥ 4.0 Ǥ OK 8.0 ǤϤΥɥ쥹ϸʤ(ǧ
ݤθˤʤʤ)եޥåȤ򸡺 warning Ф٤

4) fml4  aliases ե (/var/spool/ml/etc/fml/aliases) 鳺̤ͣ
ʬä .db 롣



 2. /var/spool/ml/ Τ 4.0  8.0 ذܹԤ

 1. 򷫤֤ŬѤФǤ礦

ܹԺˣͣΤߤƤʤ顢fml4  /var/spool/ml/etc/fml/aliases 
Ƥ饱ŬѤڤǤ͡󡢰ܹԺ MTA ߤ




: Ʊɥᥤǡfml4  fml8 Ⱦ˻ȤäƤ

(X-Sequence: fml-devel 389 )

Ʊɥᥤǡfml4  fml8 Ⱦ˻ȤäƤ硢Τ褦ܤƤ
Ȥ褤ȾüʥȥåϤơʤˡmergeml Ѵ뤫ʤ
ˤƤ̵Ȼפ

fml4 Ǥ(site_init.phȤconfig.ph)

push(@ACTIVE_LIST,"$DIR/recipients") if( -f "$DIR/recipients" ) ;

fml8 Ǥ(site_default_config.cfconfig.cf)

html_archive_dir = $ml_home_dir/htdocs

VIII. ⥸塼

ܥѡȤǤϽפʥ⥸塼λȤޤ

Table of Contents
54. IO ؤΥץ (IO::Adapter 饹)
55. Mail::Message ⥸塼
56. ̤νؿ
57. Mail::Message::Encode 饹
58. : ץ



Chapter 54. IO ؤΥץ (IO::Adapter 饹)

IO::Adapter γ

fml8 ΥСꥹȤϥե롢 Unix Υ롼ס RDBMS (졼ʥǡ
١ƥ) LDAP ʤɡޤޤʷǴǤޤ󡢥ǥե
ϥեǤ

fml8 ǤΥСꥹȤɤ߽񤭡ȤХɥ쥹Ͽ/ IO::Adapter 
ݥ饹̤ƹԤʤޤ褦 Unix  vfs/vnode 󥿡եƳ
Τ褦ʴǤ͡ȤϼΤ褦ˤʤޤ

use IO::Adapter;
$io = new IO::Adapter $map, $map_params;
$io->open || croak("cannot open $map");
while ($x = $io->get_next_key()) { ... }
$io->close;

$map ϡmap:̻ҡ׷ǤߤΤȤ $map ϼΤ褦ʤΤȤޤ
file: ϾάǽǤ

file:/var/spool/ml/elena/recipients
unix.group:root
nis.group:root
mysql:id
postgresql:id
ldap:id

file: ̾ΥեǤ unix.group:root  /etc/group  root Υȥ
桼ΥꥹȤ nis.group:root  NIS  root Υȥˤ桼Υ
ȤǤ mysql:id  MySQLpostgresql:id  PostgreSQL ؤΥǤ
ldap:id  LDAP ؤ̿ǽȤޤ

եǤϡ(ʤˤȤޤ路Τ) RDBMS  LDAP ̤֤̾
ͤǤȤ MySQL  config.cf  mysql:id ǻꤵ줿ѥ᡼
Ѥޤ

[mysql:id]

sql_database                                      = fml

sql_password                                      = uja

... ά ...

Υѥ᡼ new IO::Adapter ¹Ԥݤˡꤹɬפޤ()



IO::Adapter Υ᥽å

ߡIO::Adapter 󶡤ʥ᥽åɤϼ̤Ǥ

new()
open()
close()

get_next_key()

add(KEY)
delete(KEY)

getpos()
setpos(NUM)
eof()

touch()

find(REGEXP, $args)

KEY ϥǡ١Υץ饤ޥꥭǡ̾᡼륢ɥ쥹Ǥ REGEXP ɽ
ǤƤϥ᡼륢ɥ쥹Ǥ

¿ΥޥåפƱ褦˰ˡ᥽åɤ϶ϺǾ¤ˡԤʤΤ
˸ꤹɬפޤ

᥽åɷϡºݤ˼¸Ѥ̤Фޤκݡե
 IO ϡSQL Ȥ IO ꤷĤġ᥽åɤȤͤƤޤΤ
fml4 ΥեˤȤ٤ȡԼͳ˻פǤ礦
Τݲ⤯ʤäƤޤ



fml8 ɬפʥ᥽åɤη

᥽åɤηϡ get_next_key() Τ褦˰ʤ STR ˤ STR ֤
ˤƤޤϡեΰ򸫤ȤΥɥ쥹Ф벿
󤻤롢Ȥä褯Ȥ뤿Ǥ

Υɥ쥹ФͤȤˤʤäƤ֤ͤ⤢ޤ

KEY_STR => [
     VALUE_STR_1
     VALUE_STR_2
     VALUE_STR_3
]

Τ褦ʥǡ¤֤äƤ뤳ȤԤǤȤ fml4  actives
ϥ᡼륢ɥ쥹ФƤĤΥץͤ򵭽ҤΤǡäǡ
¤ȹͤޤ




rudo@nuinui.net s=skip m=xxx.yyy.z # commnet

rudo@nuinui.net => [
        s=skip
        m=xxx.yyy.z
        # comment
]

ޤȤȰϡ֤ʤפSTR(ɽʸΰ)ʤΤ STR ȤҤȤޤ
ˤƤɤǤ礦֤ͤ STR  ARRAY_REF ˤʤޤ

    ֤
---------------------------------------
ʤ => STR

STR  => STR

ʤ => [STR, STR, ... ]

STR  => [STR, STR, ... ]



file ޥå

file:ե̾٤⤷ñʤإե̾٤Ϥ̤Υƥȥեؤ
IO ݲΤǤ



unixgroup ޥå

/etc/group ݲޤ READ ONLY Ǥ

/etc/group 

wheel:*:0:root,rudo,kenken

 IO::Adapter Ǥ unixgroup:wheel ȤƥǤޤ

$io = new IO::Adapter "unixgroup:wheel";

Ȥ֥ȤФ get_next_key() ȥ롼פΥС֤
礦

root
rudo
kenken

Τ褦ʥեȤߤʤޤĤޤ 3 ԤΥեɤߤ褦ˤߤʤ
櫓Ǥ



NIS ޥå

/etc/group ΥȤۤƱͤǤ NIS/YP  group ˤΤ
ĥäƤȤۤʤޤ



MySQL ޥå

ݼ򤢤뤿ˤϡսޤȤƤĤޤꡢĤ cf ե
ˤ񤱤褦ˤƤȤ fml8 ξ硢 config.cf 
 SQL 񤤤Ƥ櫓Ǥ

ǡ[mysql:members] (齪ޤǡ⤷ϼ =head ʸޤ)Υ֥åǡ
ޥåפΥפȼ̻ҤɽƤޤ

config.cf ε

member_maps     =       mysql:members

recipient_maps  =       mysql:recipients

[mysql:members]

sql_server      =       localhost
sql_user        =       fml
sql_password    =       uja
sql_database    =       fml
sql_table       =       ml

sql_find        =       select * from ...

                ...

config.cf ̤֤̾ƤȹͤƤäƤޤޤ󡣤
Unix  MS-DOS  config.ini Ǥ Unix ǤϳΤפĤ
Τ .ini Ȥʤޤ

RDBMS  LDAP Ф $config ξɬפʤᡢIO::Adapter 

new IO::Adapter "mysql:members", $config;

Τ褦˸ƤӽФɬפޤäơƥեȥǤϡĤͤ

new IO::Adapter $map, $config;

Ƚ񤤤Ƥɬפޤ $config ϼΤ褦ʥϥå塦ե󥹤ˤ
äƤ뤳ȤԤƤޤ̾ $config  FML::Config ֥ȤΤ
ΤǤ

$config => {
        [mysql:members] => {
                sql_sever => localhost
                        ...
        }
}

FML::Config  .cf Τ褦ʥϥå塦ե󥹤ޤä
IO::Adapter  new() ƤӽФݤˤϡĤͤ FML::Config ֥Ȥ
Ϥ褦ˤƤ



: SQL ʸ config.cf ˽񤯤ˤϡ (: fml-devel 204)

ؿƤФ줿ݤˡƷޤѿ⤢Τ config.cf Ǥ٤Ƥ櫓
ˤ⤤ޤ󡣤ǡlexical scope Ǽ갷ѿɽвǤ
礦ߤϡŪΤ &varname ˡ()ȤäƤޤ

ɤǸƤФ뤫ͤʤʬʤΤǡѲǽʥ륹
ѿɽΤϡʤ꺤ǤɤΤȡ

: ʲϡԥꥹȤȥСꥹȤ㤦ǡɥ쥹Ͽ򤹤
ˡfml_address Ȥͤۤʤޤξ硢 member  recipient Ͼۤ
 SQL ̿ˤʤΤ̡ޤ

member_maps     =       mysql:members

recipient_maps  =       mysql:recipients


[mysql:members]

sql_server      =       localhost
sql_user        =       fml
sql_password    =       uja
sql_database    =       fml
sql_table       =       ml

sql_get_next_key =      select fml_address from $sql_table
                        where fml_ml = '$ml_name'
                                        and
                                fml_domain = '$ml_domain'

sql_getline     =       select * from $sql_table
                        where fml_ml = '$ml_name'
                                        and
                                fml_domain = '$ml_domain'

sql_add         =       insert into $sql_table
                        values ('$ml_name', '$ml_domain', '&address', 1, 1)

sql_delete      =       delete from $sql_table
                        where   fml_ml = '$ml_name'
                                        and
                                fml_domain = '$ml_domain'
                                        and
                                fml_address = '&address'

sql_find        =       select * from $sql_table
                        where   fml_ml = '$ml_name'
                                        and
                                fml_domain = '$ml_domain'
                                        and
                                fml_address like '&regexp'



[mysql:recipients]

sql_server      =       localhost
sql_user        =       fml
sql_password    =       uja
sql_database    =       fml
sql_table       =       ml

sql_get_next_key =      select fml_address from $sql_table
                        where fml_ml = '$ml_name'
                                        and
                                fml_domain = '$ml_domain'
                                        and
                                fml_recipient = '1'

sql_getline     =       select * from $sql_table
                        where fml_ml = '$ml_name'
                                        and
                                fml_domain = '$ml_domain'
                                        and
                                fml_recipient = '1'

sql_add         =       update ml
                        set recipient = 1
                        where fml_ml = '$ml_name'
                                        and
                                fml_domain = '$ml_domain'
                                        and
                                fml_address = '&address'

sql_delete      =       update ml
                        set recipient = 0
                        where fml_ml = '$ml_name'
                                        and
                                fml_domain = '$ml_domain'
                                        and
                                fml_address = '&address'


sql_find        =       select * from $sql_table
                        where   fml_ml = '$ml_name'
                                        and
                                fml_domain = '$ml_domain'
                                        and
                                fml_recipient = '1'
                                        and
                                fml_address like '&regexp'

off/on ̵̿뤹Ȥ fml  SQL ǡɤǽ񤭹ळȤϤ
ΤǤСäϴñˤʤ櫓Ǥ򤱤Τ񤷤Ǥ͡



Chapter 55. Mail::Message ⥸塼

Mail::Message γ

Mail::Message 饹ϥ᡼βϤȡϤ줿ǡ¤ؤΤޤޤ
ʤ󶡤ޤ

⤦ܤȡΥ⥸塼ϥ᡼Ϥ

(multipart Ǥʤ)

header -> body

(multipart ξ)

header -> preamble -> part1 -> part2 -> trailor

Τ褦˥֥ȤĤʤȤʤäǡ¤ޤʤߤ˺Ⱥ
֤ double link list ǤMail::Message Υ饹ϤΤ褦ʥǡ¤Ф
ơޤޤԤʤ᥽åɤ󶡤Ƥޤ

κʬʬ줾줬 Mail::Message ֥ȤǤĤޤ̤Υ᡼
᡼إåϤޤ륪֥ȤκȤɽޤ

᡼إå Mail::Message Υפ text/rfc822-headers ǡ data 
Mail::Header ֥Ȥˤʤޤ part1  text/plain ǡ data ʬ
ʸ(ƥ)ؤΥե󥹤Ǥ

: Mail::Message ⥸塼Υޥ˥奢(Ѹ)



Mail::Message ⥸塼: Ϥ

parse() ᥽åɤϰͿ줿ե(̾)եǥץФ
åβϤߤޤ

data_type_list() Ϻξ֤ޤ ARRAY REFERENCE η֤
ޤȤ MIME/Multipart ϼΤ褦ɽƤޤ (ʤߤˡʲɽ
ϥǥХå⡼ɤǽϤΤǤ)

  type[ 1]: text/rfc822-headers       | multipart/mixed
  type[ 2]: multipart/mixed           | multipart/mixed
  type[ 3]: multipart.preamble        | multipart/mixed
  type[ 4]: multipart.delimiter       | multipart/mixed
  type[ 5]: text/plain                | multipart/mixed
  type[ 6]: multipart.delimiter       | multipart/mixed
  type[ 7]: image/gif                 | multipart/mixed
  type[ 8]: multipart.close-delimiter | multipart/mixed
  type[ 9]: text/plain                | multipart/mixed

󤬳ƥ֥Ȥμ̤ɽƤޤüϥ᡼Τ mime type Ǥ




Mail::Message ⥸塼: å

new() ᥽åɤ̾åݤ˻Ȥޤ

MIME/multipart ѤΥ᥽åɤ⤢ޤ

build_mime_multipart_chain($args)
parse_and_build_mime_multipart_chain($args)
build_mime_header($args)

: Υ᥽åɤľܸƤӽФȤϼºݤʤΤǡ衢 private
methods ˰ܹԤ뤫⤷ޤ󡣤Υ᥽åɤϻȤʤǤ

ºݤΤȤ MIME/mulitpart κˤ Mail::Message::Compose 饹ȤäƤ
ޤ¤ΤȤΥ饹μ֤ CPAN  MIME::Lite ΤΤǤ :-)



Mail::Message ⥸塼: إå

dup_header() ᥽åɤ RFC822 åΥإåʬΤߤ򥳥ԡޤ᡼
ΤʬϤΤޤޤǤʣ줿إå֥ȤΥ󥯤ϥ᡼
ΤǤ

$header1 = $message0->dup_header0;

              |<--------------- ᡼ ------------->
$header0 ---> part1 -> part2 -> ...
                A
                |
$header1 ------+

whole_message_header() ᥽åɤϥåΡ֥إåʬΥ֥ȡפ
ޤʸǤϤʤפȤդƲ

__head_message() ϺƬΥ֥Ȥ֤ޤ __last_message() Ϻκ
Υ֥Ȥ֤ޤ⥸塼ǻȤƤޤϥץ饤
ȡ᥽åɤʤΤǡΥ᥽åɤϻȤʤǲ衢Υ
Ͼõޤʤ __head_message() ϡ̾ޤ header ֥Ȥ֤
ȤˤʤޤΤǡ¿ξ whole_message_header() Ǥ

header_data_type() ᥽åɤϥ᡼ΤΥ(ʸ)֤ޤĤޤꡢ
åñʤƥȤʤΤޥѡȤʤΤʤɤξ򶵤ؿǤ




Mail::Message ⥸塼: åʸ

ǤϡΤ褦ʥ֥ȤκˤȤ뤳Ȥˤޤ

(multipart Ǥʤ)

header -> body

(multipart ξ)

header -> preamble -> part1 -> part2 -> trailor

(Ҥη֤ˤʤޤ)

header_data_type() ᥽åɤϥ᡼ΤΥ(ʸ)֤ޤĤޤꡢ
header  Content-Type Ǥ

whole_message_body() ᥽åɤ body ʤ part1 ʬΥ֥Ȥ֤
ޤ whole_message_body_head() ᥽åɤƱ֤ͤǤ

__head_message() ϺƬΥ֥Ȥ֤ޤ __last_message() Ϻκ
Υ֥Ȥ֤ޤΤᡢ̾ޤ header ֥Ȥ֤
ˤʤޤΤǡ¿ξ whole_message_header() Ǥ __last_message()
ϺκǸʬʤΤǥåʸκǸˤʤޤ

find_first_plaintext_message($args) ϺǺǽ plain/text פ
Mail::Message ֥Ȥ֤ޤե륿󥰤ǤϺǽ plain/text 
פΥåʬܤ뤳Ȥ¿ΤǤδؿȤǤ



Mail::Message ⥸塼: ֥Ȥθ

find() ᥽åɤ Mail::Message ֥ȤΥפõǽ˸Ĥ
֥Ȥ֤ޤإå Content-Type: ǤϤޤա



Mail::Message ⥸塼: åɽ롣

print() ᥽åɤʸɤ print Ǥ̾ϰǽϤեǥ
ץϤƲ

print() ˤ CRLF ʤΤ LF ʤΤꤹ mode ȤǰޤΤ
 set_print_mode(mode)  reset_print_mode() Ȥ᥽åɤޤ
̾ raw ǡSMTP λ smtp ꤷƲ



Mail::Message ⥸塼: ʴؿ



size() (ΰİĤ Mail::Message)֥ȤΥ֤ޤ᡼
ΤǤϤޤա header_size()  body_size() Ȥȡإå᡼
ʸΤĹ򶵤Ƥޤ

is_empty() ϥ֥ȤΥǡɤ򶵤Ƥޤ

ϥե륿󥰤ͭѤǤ



Ūʾ

envelope_sender() ϥ᡼Ծ(ʸ)֤ޤʸ̤ꡢ
Envelope Sender Ǥ

data_type() ᥽åɤ Mail::Message ֥ȤΥ(ʸ)֤ޤ
ϡ᡼ΤΥסʥޥѡȤȤ text/plain)ǤϤʤγʬΥ
֥ȡפǤ뤳ȤդƲ

encoding_mechanism() ᥽åɤ Mail::Message ֥ȤΥ󥳡ǥ󥰥
˥(ʸ)֤ޤ󥳡ǥ󥰤Ƥʤ undef ֤ޤ
ϡ᡼ΤΥסʥޥѡȤȤ text/plain)ǤϤʤγʬ
֥ȡפǤ뤳ȤդƲ



Mail::Message ֥ι¤Τ

num_paragraph() ᥽åɤϡ Mail::Message ֥Ȥ˲ĤΥѥ饰
դ뤫()֤ޤ

nth_paragraph() ᥽åɤϡֿܤΥѥ饰դƤʸȤ֤
ޤȤСܤΥѥ饰դ 0 ǤϤʤ 1 ȻꤷƲϡ
ȣøǤϤʤʹ֤ʬ䤹褦ˡ 1Ϥޤ͡פȤƤޤ


header() ᥽åɤ MIME/multipart γƥ֥åˤإåʬ֤ޤ
data() ᥽åɤϡǡʬǤ줾 message_fields($size) 
message_text($size) ᥽åɤ alias ˤʤäƤޤ





 Mail::Message ⥸塼ޥ˥奢(Ѹ)



Chapter 56. ̤νؿ

fml8 Ǥϸʸɤ˰¸ѴɬפǤȤСJIS
(ISO-2022-JP) EUC ѴϿǹԤʤƤޤϥ᡼Ǥ JIS 
ɤȤޤץǤ EUC ɤ䤹Ǥ

ܾϤǤϡ¸νؿˤĤƲ⤷ޤ

ʤޥɤФֻθ¸ˤĤƤϡإå¾첽٤ξϤ
ȤƲ



饹::Language::

¸Υ饹̾ϡ֥饹::Language::פȤʤޤγذʲ˸
¸⥸塼뷲֤ޤ

ȤмΤ褦ʥ⥸塼뤬ޤ

FML::Language::Japanese::String.pm
Mail::Bounce::Language::Japanese.pm

ԤϡFML ⥸塼뷲Τˡܸ¸ʸؿ󶡤Ƥޤ
Ԥ Mail::Bounce ذʲΥ⥸塼Фơܸ˰¸顼᡼
ϥ롼󶡤Ƥޤ



Chapter 57. Mail::Message::Encode 饹

Mail::Message::Encode λȤθ

[ե] fml-help ML's Count: 02012, 02013, 02016 ʤ

[Ȥ]

   * fml 8.0 λȤ

        use Mail::Message::Encode;
        my $encode  = new Mail::Message::Encode;
        my $str_euc = $encode->convert( $s, 'euc-jp' );
        my $str_euc = $encode->convert( $s, 'euc-jp', 'iso-2022-jp' );

        my $encode  = new Mail::Message::Encode;
        my $status  = $encode->convert_str_ref( \$s, 'euc-jp' );
        my $status  = $encode->convert_str_ref( \$s, 'euc-jp', 'jis' );

        my $fp = sub { ... };
        $encode->run_in_chcode( $fp, $oout, $in );

   * fml 4.0 ߴλȤ

        ues Mail::Message::Encode qw(STR2EUC);
        my $euc_s = STR2EUC( $s );



Mail::Message::Encode λͤƶ

Τϥץ饤١ȥ᥽å _convert_str_ref() ˤޤȤƤ롣

   sub convert #  STR
   {
        my ($self, $str, $out_code, $in_code) = @_;
        _convert_str_ref(\$str, $out, $in);

        return $str;
   }


   sub convert_str_ref #  STR_REF
   {
        my ($self, $str, $out, $in) = @_;
        _convert_str_ref($str, $out, $in);
   }


   sub _convert_str_ref #  STR_REF
   {
        my ($str, $out, $in) = @_;

        # 1. ¬
        ⤷ $in ʤ  ¬    0 򤫤

        # 2. Ѵȥ饤
        if ($in 狼ä or $in ꤵ줿) {
                $out Ѵ
                jcode, Jcode, Encode  perl Сˤä
                Ѵ򤬤Ф
                return 1 ; 
        }
        else { # principle of least surprise ?
                ʤˤ⤷ʤ str ϤΤޤ֤
        }

        return 0 ; # 
   }

sub base64 {}
sub quoted_printable {}

Ȥʡ

$x = $encode->base64($s);

ޤߴȤص塢STR2XXX() 롣

   STR2EUC(  $str, [$icode] )
   STR2JIS(  $str, [$icode] )
   STR2SJIS( $str, [$icode] )

 convert_str_ref  wrap 롣



桼ƥƥ run_in_chcode()

¸βǤϡץΰ䤹ʸɤѴԤʤ
ؿ¿¸ߤޤǡäΤβؿѰդ
Ǥ

run_in_chcode() ϡؿ $proc ¹Ԥޤϡ餫ꤵ줿ʸ
ɤѴ塢ؿ $proc ϤȤͤǤ

sub run_in_code
{
    my ($self, $proc, $s, $args, $out_code, $in_code) = @_;
    my $proc_status = undef;

    my $obj         = new Mail::Message::Encode;
    my $conv_status = $obj->convert_str_ref(\$s, $out_code, $in_code);

    # XXX-TODO: validate $proc name regexp.
    eval q{
        $proc_status = &$proc($s, $args);
    };

    # XXX-TODO: correct ?
    if ($conv_status && $out_code) {
        $obj->convert_str_ref($s, $out_code, $in_code);
    }

    return wantarray ? ($conv_status, $proc_status): $conv_status;
}

ϡΤ褦ưޤ

$s  EUC-JP Ѵ
$proc($s, $args); ¹
$proc μ¹Է̤֤



Chapter 58. : ץ

Ǥϡñʥ塼ɽեȤˤȤꡢ fml8 Υե졼ǿ
ץɲäˤϤɤɤΤޤʲץ̾
 fmlsch Ȥ CGI Ǥ fmlsch.cgi Ǥ

ʤfml8 ܥɥѡƥĥȤƽв٤륽եȥǤϡ 3rdparty/ ʲ
Ʊ֤ͤǥե [32] 󥹥ȡեѹƲ




ǥ: fmlsch 롣

ƥå 1: 󥹥ȡ fmlsch դä

fml/bin/fmlsch.in 륹ץȤѰդ fml/etc/install.cf.in 
bin_programs ѿ fmlsch ɲäޤ bin_programs ˤ륹ץȤϥ
ȡ餬 $prefix/bin/ إ󥹥ȡ뤹оݤǤ

fml/bin/fmlsch  fml/etc/install.cf  configure (GNU configure)
ʤޤ configure.in ˡΣĤΥեѿŸ򤹤褦Ͽ
autoconf ¹Ԥ configure Ʋ



ƥå 2: ⥸塼

fmlsch μΤΥ⥸塼Ȥơ fml/lib/FML/Demo/Calendar.pm 񤭤ޤ

ޤۤɬפʥ饤֥꤬Ŭ͢Ƥ CPAN 
HTML-CalendarMonthSimple-1.02.tar.gz 򥤥󥹥ȡ뤹ɬפޤ

Date-Calc ɬפʤΤŬ󥹥ȡ뤷Ƥ



ƥå 3: FML::Process:: 

ŻΤۤȤɤʬ FML::Demo::Calendar ¹Ԥޤ fml8 Υ֡ȥ
 FML::Demo::Calendar ƤӽФ FML::Process::Calender 饹
ޤ


                                  Caution                                   

饹γؤ fml/etc/modules 꼡ʤΤǡ FML::Process::Calender  
ɬפϤʤɤγؤǤ( FML:: ʳǤ)ޤޤ         


ޤfmlsch ץν¹ԤȤäޤʰϢμ fml/lib/FML/
Process/Calender.pm ˽񤭤ޤΥեϿ˺Ʋ ( Chapter 32
Ϥ򻲾)

ơ֡ȥ fmlsch ץबư줿ˤ
FML::Process::Calender ƤӽФȤ򶵤뤿 fml/etc/modules ե
fml/etc/command_line_options ե fmlsch Υ⥸塼̾Ȥбطɲ
ޤ

FML::Process::Calender Ʊǥ쥯ȥΥ⥸塼ŬˤѤä hack 
 :-) ʤfmlsch ϵǽǾʤΤǡFML::Process::Calender Ǥ
FML::Process::Calender::run() ᥽åɤѰդФޤǤ̤δؿ
 FML::Process::Kernel Υ᥽åɤȤޤ(Ѿ)



ǥ: fmlsch.cgi

¤λϥ⥸塼뤬 FML::CGI:: 饹ˤʤʳ fmlsch ξƱͤǤ
 FML::CGI::Calender  FML::Process::CGI Υ֥饹Ǥ

̤ΤΤˤĤƤ FML::Process::CGI  FML::Process::Kernel 褭ˤϤ
ޤ

ޤHTML ΤۤȤɤ FML::Process::CGI  Perl ǥեȤ CGI.pm 
äƤޤ HTTP header ʤɤ CGI.pm ⥸塼Ǥϡޤ
¤νʤΤ FML::CGI:: ʲΥ⥸塼뷲Ŭ HTML νϤ
ޤ

IX. Ͽ

Table of Contents
Ѹ콸(ؿ̾ѿ̾Ϣ)
A. cvs ݥȥι¤
B. SGML ν
C. NetBSD 1.5 Ǥ IPv6 
D. Problem Report ϢġΤޤȤ
E. ǡ¤Υץ

Ѹ콸(ؿ̾ѿ̾Ϣ)

fml4

    fml4 (fml С 4)꡼Τ

fml8

    fml8 (fml С 8)꡼Τ

fml-devel

    fml8 ȯΥɥ͡ࡣ

curproc

    "current process" ά

    Unix ͥŪ˻ȤƤά̾ŵ㡣

PCB

    Process Control Block άǡΥץͭξޤࡣ̤ͣȤ
    ϰۤʤ롣 fml ǤΥƥؤϡ listserv Σ̤ͣʤɥ
    졼ץǵ롣

    Uni ͥŪ˻ȤƤά̾ŵ㡣

config

    configuration ά

conf

    configuration ά

arg / args

    ( argument )ά

fh

    եϥɥ( file handle )

dh

    ǥ쥯ȥϥɥ( directory handle )

fp

    ؿؤΥݥ( function pointer )

    Perl Ǥ CODE ե󥹤ȸƤ֤٤ cr ʤɤȽ񤯤ʬ䤹
    ΤǡץǤ $fp ȤȤ¿

_ʤˤʤ

    Ū˥ѥå饹֥ǻȤѿؿ̾ _ ǤϤ
    륭ɤȤ

    Ĥޤ private Ȥ( ǥ֥ȻظǤȤθ̩ʰ
    ̣ private method Ȥ̣ʤɤȡĤäޤʤ褦ˤ줿 :-)

rʤˤʤ

    r ϥե(reference)ά "֤Ǥ" ϥ󥬥ꥢˡȸƤ֤
    Ȥ¿

    ̤˶Ĵ˻ȤȤ뤬 fml8 ǤϡۤȤɻȤʤ

STR

    ʸ ( string ) ά

ܸ쥳ɤά

    JIS SJIS EUC ʤɤʤߤΤ

2

    to ȯΤάȤƤ褯Ȥ롣ʤȤ 4 ( for ΰ̣)
    롣

    : STR2EUC (STRing to EUC ά)

    use String qw(STR2EUC);
    $euc_string = STR2EUC($string);

4

    for ȯƱѤ롣ޤΤȤȤäƤ̵

ޥɥ᡼

    ᡼ʸ fml ؤ̿(ޥ)񤤤뤳Ȥǲ餫ν򤷤Ƥ
    餦Ρ̥桼ѤΥޥɤȥ⡼ȴѤΥޥ(̾ admin
    ޥ)롣



Appendix A. cvs ݥȥι¤

ĥ꡼¤γ

fml4 ȰۤʤꡢֻȤ(Ȥ CPAN )ϲǤȤפ fml8 δˤǤ
ʤȡʬݼ餹٤ܤǤ

ݼ餹ͤ⤷ϥ饤󥹤ϤäꤵƤˡ٥Ȥ
ǥ쥯ȥʬƤޤȤ CPAN ݼ餵ƤΤ cpan/ ǥ쥯
ȥʲƤޤ饤󥹤ʤɤˤäƤϡ褵˶ʬʬɬפ
ФƤ뤫⤷ޤ

cpan/  3rdparty/ ʲΥ⥸塼ѹ fml/ ʲǡʤ餫Υ
å(wrap)򤹤뤫ѥå򥪥ꥸʥȿǤƤä cpan/ ʲ򥢥åץǡ
Ȥ򤹤뤳Ȥ˾ޤǤcpan/lib/ ľѹä뤳Ȥ⤢ޤ
cpan/dist/ ϥꥸʥ¸ʤΤǡѹƤϤޤ

ʤ site_local/ ϤΥȼ module ֤ǥ쥯ȥƤޤ
Ĥޤ fml ץȤȤ̵طǤ



CVS Υǥ쥯ȥ깽¤

/ ʲΥǥ쥯ȥ깽¤

Table A-1. / ʲΥǥ쥯ȥ깽¤


  ٥̾            Υǥ쥯ȥˤ⥸塼          

Documentation/ɥȤȤƸꡣ٥ۤƺꨢ
              ΤǤΥǥ쥯ȥ꤬ߤޤ                

fml/          fml8 ץľ                                     

              CPAN ݼ餵ƤΤβΥ⥸塼ˤĤƤ CPAN
              ̤ꡣñɸ⥸塼Ǥʤᡢʤ fml8 
cpan/         ΥСݼΤˡ˼ơʤ cpan/dist
              / ͢⥸塼θѥåΤ򤪤 cpan/lib/
              ˥饤֥饹ؤˤ褦֤ޤ      

              Internet Message Group (IM ϲ򻶤ݼѤ 
img/          ΤͤΤ OK IMG ʤ IMG Ȥ̾Τ 
              ޻ȤȤˤ)                                         

3rdparty/     ɥѡƥ(ͽ) ͽ󤵤Ƥǡ fml8 ץ 
              ȤȤƤϻȤޤ                                

              ǥեȤǤ CVS ĥ꡼ˤϤޤ󡣤Υȼ 
site_local/   ݼ餷⥸塼򤪤Υǥ쥯ȥꡣ̾ͽ
              Ƥǡ fml8 ץȤȤƤϻȤޤ  



fml/ ʲ

Table A-2. cvs tree  fml/ ʲΥǥ쥯ȥ


ǥ쥯                                                            
  ȥ                                                                  

fml/bin//usr/local/bin/ ˥󥹥ȡ뤹ץ                    

fml/doc/Documentation/ Υ                                         

fml/etc/եƥץ졼ȷ                                    

fml/lib/perl ⥸塼뷲                                               

fml/    ¹ԤץμΡ˥⥸塼ƤӽФΤǡΨ
libexec/ˤ wrapper ǤפʤΤ loader Ǥ                 

fml/    åΥƥץ졼Ȥʤ                                    
share/                                                                  

fml/    桼ƥƥǤϳȯԤ fml ΥǻȤ 
utils/  ΤǤ󥹥ȡоݤǤϤޤ                      



Appendix B. SGML ν

fml8 ΥɥȤǤϡSGML  DTD "DOCBOOK" 򤴤̤˻ȤȤˤƤ
ޤ

ܾϤ SGML ǽ񤯤˺ǾɬפμˤĤƤΥǤ

Ū SGML ν񼰤ϡ [33] Ǥ HTML νƱͤǤ
Ͽǡ23 ŵŪ SGML ƥץ졼Ȥ⤷ƤΤǡŬ
ƤСʤȤʤϤǤ



SGML γǰ

SGML ܤûʸ()ݤ˻ȤޤʸϤ¤򵭽Ҥ뤿
εʤǤ HTML Τäȸ̩ʤΤȻפäƲ [34]

ȤСܡɤȤǰͤƤߤޤޤܡɤˤϾϡȤäñ
ޤˤϥѥ饰դޤʸˤϵĤꡢޤʤɤ
߹ޤ줿ꤷޤ

γǰˤϡطޤȤСɾϡɤϡɤޤߤޤ
ɤϡɾϡɤޤߤޤ󡣤ơʸɬ֤ѥ饰աפˡ֤פΤ


äǰɤɽ٤ꤷΤ DTD (Data Type Definition)
Ȥޤ

DTD ϼͳǤޤΤѤʺȤǤʤïä
DTD 쥯ˤϤΤǡȤΤǤ桹 DTD Ȥ
docbook ȤΤȤ [35] ȤˤƤޤ

DOCBOOK  OASIS-0PEN.ORG ݼ餷Ƥ DTD Ǥͭ̾ʤΤǡǥե
ȥɤȤäƤ褤Ǥ礦(狼䤹ɤ̤Ȥ;)ե
󥹤饤꡼ܤФƤޤɥȤ˭٤ǤFree  Unix 
ɤϤᡢ¿ΥץȤǻȤƤޤ

ĤޤꡢSGML ȤȤΰյϡ֤ȤʤΡפ˵ʲʤ
϶ȤȤǤ SGML ιʸˤ뵬Ȥ̣ǤϤ
󡣤복ǰ˽Ȥ˶褦ȤȤǤ

ǡɳǰɤȤäƤΤǤäơɸɤɤˤĤƤϤդƤʤȤ
դƲȤ HTML Ǥϳǰȸɤ(षռŪ)ϤäʬΥ
ޤ

ɤ DTD Ȥ̤βޤ̾凉륷ȤȤΤǤ
HTML 4.0  CSS ƱǰǤ

륷ȤεҤˤץߥ󥰸줬ɬפǤ docbook Ǥ schema
(lisp ΰ) ١ DSSSL (Document Style Semantics and Specification
Language) Ȥޤ

ޤ SGML Ǥ¤ҤʤΤǸɤϥСǤɤȤǤʤ
ޤ HTMLƥȡROFFPSPDFRTF ϤᡢʤΤѴ
ѰդƤޤ



( book )Υƥץ졼

docbook DTD ˤ book  article ȤäɽŪʷˤĤƤޤ

book ŵŪ SGML Υƥץ졼ȤϼΤ褦ˤʤޤ

<!doctype book public "-//OASIS//DTD DocBook V3.1//EN" [
        <!entity % include SYSTEM "include.sgml"> %include;
]>
<book>

  &bookinfo;
  &preface;

  <toc></toc>

  <part>
        <title> ȥ </title>
        <partintro>
        <para>
        ܥѡȤϡܻؤƤޤ
        </para>
        </partintro>

        <!-- ʲƾϤ¤ -->
        &overview;
  </part>
</book>

part  title ʸ̤ΰ̣Ǥ

ܤ٤ϡSYSTEM ȤɤΤ롢 2 ܤǤ
include.sgml ɤ߹( include )̿Ǥ C  #include  perl 
require() ƱͤƯ򤷤Ƥޤ

ˡ include.sgml ǤϼΤ褦̿᤬Ƥޤ

<!-- include  SGML ե뷲 -->
<!entity bookinfo  SYSTEM "bookinfo.sgml">
<!entity overview  SYSTEM "overview.sgml">

ˤ &bookinfo; ̿ bookinfo.sgml  include 褦ˤʤ
ޤΤ褦ˤơʸΤ include ٤եʬΥ뤳Ȥ
ޤ



HTML  <UL> 

<itemizedlist>

   <listitem>
        <para>
                ƥࣱ
        </para>
   </listitem>

   <listitem>
        <para>
                ƥࣲ
        </para>
   </listitem>

</itemizedlist>

Ȥ

<itemizedlist>

   <listitem>
        <para>
                󤱤ϤĤ
        </para>
   </listitem>

   <listitem>
        <para>
                ɤɤϤФ󤶤٥
        </para>
   </listitem>

</itemizedlist>

ϼΤ褦ˤʤޤ

  󤱤ϤĤ

  ɤɤϤФ󤶤٥

դΥƥ orderedlist Ǥ

 1. 󤱤ϤĤ

 2. ɤɤϤФ󤶤٥

 



HTML  <TABLE> 

<para>
  <table>
    <title> ơ֥Υȥ </title>
    <tgroup cols=2>

      <thead>
        <row>
          <entry>           </entry>
          <entry>             </entry>
        </row>
      </thead>

      <tbody>
        <row>
          <entry>  1                </entry>
          <entry>  1          </entry>
        </row>

        <row>
          <entry>  2        </entry>
          <entry>  2          </entry>
        </row>
      </tbody>

    </tgroup>
  </table>
</para>

Ȥ

<para>
  <table>
    <title> table description </title>
    <tgroup cols=2>

      <thead>
        <row>
          <entry> ̾          </entry>
          <entry>           </entry>
        </row>
      </thead>

      <tbody>
        <row>
          <entry> 󤱤      </entry>
          <entry> Ĥ    </entry>
        </row>

        <row>
          <entry>           </entry>
          <entry> Ф󤶤٥  </entry>
        </row>
      </tbody>

    </tgroup>
  </table>
</para>

ϼΤ褦ˤʤޤ

Table B-1. ơ֥θ


  ̾          

󤱤󨢤Ĥ  

    Ф󤶤٥




ġ뷲

SGML  HTML ʤɤ뤿ˡĤΥġ뤬ɬפǤޤ DTD  DSL
εʸ񷲤ɬܤǤϤȤƤ openjade  opensp [36] ɬܤΥץ
Ǥ礦¾ϥץʥǡƼˤФ褤褦Ǥ

fml8 ǤϡʲΥץȤä HTML ƥȥեƤޤ

  openjade 1.3 ʹ

  opensp 1.3.4 ʹ

¿ OS ǤϤΥץ°ΥѥåƥǴñ˥󥹥ȡ
ǤǤ礦

ޤSGML Ѵˤ fml/doc/share/sgml/ ˤ fml.dtd  fml.dsl 
ȤƻȤäƤޤ Makefile ˡΥեƥġǤɤȤ
(openjade Ϳ륪ץ -c  -d ץ)ҤƤޤ



ɤѹ

SGML Ūʹ¤򵭽ҤƤǤ HTML γƥڡ URL Ĥ
ĤȤä "ɤε" SGML ľѹ뤳ȤϤǤޤ


ɤ DSL ˤ국Ҥ򤹤뤳Ȥˤʤޤʤ顢DSL ܼŪ LISP
(List Processor) ʤΤǡ LISP ΤʤȤäȼ꤬ФʤǤ礦

ɤïĥä̤ȤȤȤʤΤ⤷ޤ

ʤߤ fml8  DSL εҤ fml/doc/share/sgml/fml.dsl ˤޤä
Τ񤫤ʤȸɤѤ뤳ȤǤޤ ;)



¾ξ

SGML νˤĤƤ FreeBSD ν鿴Ը塼ȥꥢʤɤ򻲾ȤƲ


ɬפʥġΥ󥹥ȡˤĤƤ http://www.linuxdoc.org/HOWTO/mini/
DocBook-Install/ 򻲾ȤƲ

SGML Υΰ DOCBOOK definitive guide (O'reilly) Υ饤Ǥ򻲾Ȥ
ΤǤ



Appendix C. NetBSD 1.5 Ǥ IPv6 

NetBSD  IPv6 βɤߤʤʤ񤷤ϤʤǤ



IIJ IPv6 ȥͥ뷿ӥξ

ޤή ISP  IPv6 ɥ쥹֤ƤƤ餤ޤȤ
2001:240:22::/48 ʤɤȤäɥ쥹館ޤ

 IPv6 롼⡼ɤ NetBSD  gif0  IIJ Υ롼ȥȥͥĥ


   IIJ NOC ¦롼
      |
      | (unnumbered link)
      |
   NetBSD
      |
   ------------------------  ---

ȥͥĥä塢route6d ưޤˤ IIJ  ::/0 Ȥ
ޤơ餫 2001:240:22::/48  advertise 뤳Ȥˤʤޤ


                                  Warning                                   

route6d 򲿤ͤ˵ư /64  advertise ƤޤΤ /48      
aggregate 뤳Ȥ˺줺ˡ                                              



ȥͥ

gif 󥿡եȤäƥȥͥĥޤưꤹϡΤ褦
ˤʤޤ

# ifconfig gif0 tunnel 10.1.1.1 10.2.2.2

ǡʬΥɥ쥹 10.1.1.1 10.2.2.2 ȥͥĥ IP ɥ쥹
Υɥ쥹ˤĤƤϢƤϤǤ

֡Ȼ˼ưŪꤵ뤿ˤϡ /etc/ifconfig.gif0 ˼Τ褦
Ƥ񤭤ޤ

tunnel 10.1.1.1 10.2.2.2

ȥͥ뤬夬äɤ

% ping6 -n ff02::1%gif0

¹Ԥơʣֻ OK Ǥ ff02 ΰ̣ʤɤˤĤƤ [NetBSD
 IPv6 β] Ϥ IPv6 ν򻲾ȤƤ



롼ƥ

IIJ Υ롼 ::/0 (IPv4 ʤ 0/0) Ĥޤǥեȥ롼ȤήƤޤ

route6d ưˤ /etc/rc.conf 

route6d=YES             route6d_flags="-A 2001:240:22::/48,gif0"

Ƚ񤭡

# /etc/rc.d/route6d start

¹ԤƲ /48  aggregate Ƥ뤳ȤդƲ



ۥȤʤɤؤΥɥ쥹γ

Ŭդʤꡢrtadvd  rtsold ǼưǳƤʤꤷޤ



ե

http://www.v6start.net/

Introduction to IPv6 http://www.onlamp.com/pub/a/onlamp/2001/05/24/
ipv6_tutorial.html

Getting Connected with 6to4 http://www.onlamp.com/pub/a/onlamp/2001/06/01/
ipv6_tutorial.html

6to4 IPv6 Explained, or: Flogging a Dead Horse http://www.feyrer.de/NetBSD/
6to4.html

www.kame.net

"Implementing AF-independent application"

Interview with Jun-ichiro "Itojun" Hagino about the KAME Project http://
www.feyrer.de/NetBSD/interview-itojun.html



Appendix D. Problem Report ϢġΤޤȤ

Problem Report Ϣġ

bug tracking ƥȥȥ֥åȥƥ̯Ū㤦Ȼפޤ
ǤϹ problem report ȤǤޤȤƤޤ

http://www.daveeaton.com/scm/PMTools.html  FAQ [37] ޤä
ˤĤƤϡޤȤ褤褦ǤĤäơλǯ餤Ƥޤ
͡

Free ΤΤ⤤ĤޤǤͭ̾ȤˤΤġ GNATS Ǥ
Ȥ jitterbug Bugzilla debuggs (Debian Bug Tracking System)
OpenTrack PTS WREK Wreq (?) ʤɡǶϡʤǤ⥦֤ǡȤͤФ
餫 Bugzilla ¿Ǥ͡

ä linux ΤΥڡ http://linas.org/linux/pm.html 褯ޤȤ
äƤ뤫Ĥ⹹Ƥޤ͡

ˤ衢Ƥͭ̾ʤΤΥץȤ bind ƤƤ
Ȥ¿褦ˤ⤨ޤȤ perl.org ΥХȥåġ
Ǥ perlbug (CPAN 򸫤) ¾ǤޤȤƤ褦ʵʤ櫓ǡ
 project ȯ뤿Ӥˡش¸ bug tracking system ϻȤˤ
٤Ȥ project տ路ȯƤ褦ʷϵⴶޤ()



Call Tracking  Problem Tracking

Call Tracking ϼˤҤλŦˤĤƤΰǤꡢֿͤγơ
֥ơפƥݡȤԤʤɬפޤ

 Problem Tracking ϡֳȯץδפʤɤǤꡢδоݤˤϥ
䤵ޤޤסݡȤǤʤƥ졼䤽ΥƥȤޤǤ
ޤ줨ޤ

ʤ Configuration Management Ȥñ Problem Tracking ζ٤˰֤ޤ
 CVS ʤɤΥġϤΤȤǤ



status ǻȤñ

Ȥ GNATS Ǥ

open
analyzed
feedback
closed
suspended

¾Ǥ

NEW
ASSIGNED
REOPENED
RESOLVED
VERIFIED
CLOSED

ʤɤ⤢ޤ jitterbug 

all
pending
replied
unreplied

status ˤΤʤ(ǤΤ?)



GNATS (GNU Problem Report Management System)

¸Ρͭ̾ bug tracking systemޤȤˤ GNATS μ򸫤褦 http://
www.netbsd.org/Misc/send-pr.html

send-pr 

To: gnats-bugs@gnats.netbsd.org
Subject: no definition for 9801N-J12 pcmcia card
From: fukachan@fml.org
Reply-To: fukachan@fml.org
X-send-pr-version: 3.95


>Submitter-Id:  net
>Originator:    Ken'ichi Fukamachi
>Organization:  fml.org
>Confidential:  no
>Synopsis:      no definition for 9801N-J12 pcmcia card
>Severity:      non-critical
>Priority:      low
>Category:      kern
>Class:         sw-bug
>Release:       NetBSD 1.5.1_BETA2
>Environment:

System: NetBSD rudo.home.fml.org 1.5.1_BETA2 NetBSD 1.5.1_BETA2 (BETH) #0: Thu Sep 27 12:09:39 JST 2001 fukachan@rudo.home.fml.org:/usr/NetBSD-release-1-5/src/sys/arch/i386/compile/BETH i386

>Description:

NEC 9801N-J12 pcmcia card does not work with NetBSD/i386 (netbsd-1-5
branch).  NetBSD kernel detects it as "ne" but it cannot be
configured.

I do not test it with NetBSD-current but it looks NetBSD-current has
no definition for this card.

>How-To-Repeat:

attach it.

>Fix:

apply the following patch.

By the way, this card looks an OEM of IBM INFOMOVER.
So, the following definition may be more appropriate ?

   { PCMCIA_STR_NEC_9801N_J12,
     PCMCIA_VENDOR_IBM, PCMCIA_PRODUCT_IBM_INFOMOVER,
     PCMCIA_CIS_NEC_9801N_J12,
     0, 0xff0, { 0x00, 0x00, 0x4c } },



Index: if_ne_pcmcia.c
===================================================================
RCS file: /cvsroot/syssrc/sys/dev/pcmcia/if_ne_pcmcia.c,v
retrieving revision 1.62.4.5
diff -u -u -b -r1.62.4.5 if_ne_pcmcia.c
--- if_ne_pcmcia.c      2001/06/16 19:18:50     1.62.4.5
+++ if_ne_pcmcia.c      2001/09/26 09:42:26
@@ -200,6 +200,11 @@
       PCMCIA_CIS_SVEC_PN650TX,
       0, -1, { 0x00, 0xe0, 0x98 }, NE2000DVF_DL10019 },

+    { PCMCIA_STR_NEC_9801N_J12,
+      PCMCIA_VENDOR_NEC, PCMCIA_PRODUCT_NEC_9801N_J12,
+      PCMCIA_CIS_NEC_9801N_J12,
+      0, 0xff0, { 0x00, 0x00, 0x4c } },
+
     /*
      * This entry should be here so that above two cards doesn't
      * match with this.  FNW-3700T won't match above entries due to
Index: pcmciadevs
===================================================================
RCS file: /cvsroot/syssrc/sys/dev/pcmcia/pcmciadevs,v
retrieving revision 1.93.2.7
diff -u -u -b -r1.93.2.7 pcmciadevs
--- pcmciadevs  2001/06/16 19:19:12     1.93.2.7
+++ pcmciadevs  2001/09/26 09:42:26
@@ -43,6 +43,7 @@
 vendor FUJITSU                 0x0004  Fujitsu Corporation
 vendor PANASONIC               0x0032  Matsushita Electric Industrial Co.
 vendor SANDISK                 0x0045  Sandisk Corporation
+vendor NEC                      0x00a4  NEC
 vendor NEWMEDIA                        0x0057  New Media Corporation
 vendor INTEL                   0x0089  Intel
 vendor IBM                     0x00a4  IBM Corporation
@@ -83,6 +84,9 @@
 /*
  * List of known products.  Grouped by vendor.
  */
+
+/* NEC */
+product NEC 9801N_J12          0x0002 NEC      PC-9801N-J12    LAN

 /* Adaptec Products */
 product ADAPTEC APA1460                0x0001 Adaptec APA-1460 SlimSCSI



Jitterbug

http://samba.anu.edu.au/jitterbug/ 򻲾ȡ simple is best ظʤΤȤ
Ǥ礦ȤȤ samba  bug tracking 򤹤Ū饹ȡ C 
ǡWWW 󥿡եΤ (URL ߤ狼Ȥ)



Call Center, Bug Tracking and Project Management Tools for Linux

http://linas.org/linux/pm.html

ߤޤ󡢤ޤ褯ߤƤʤ



Perforce Defect Tracking Integration Project

http://www.ravenbrook.com/project/p4dti/

ߤޤ󡢤ޤ褯ߤƤʤ



Appendix E. ǡ¤Υץ

curproc ֥

FML::Process::Distribute äƤΥǡ¤㡣

__parent_args        => HASH {
                        ARGV                 => ARRAY
                        ___shared_memory___  => HASH
                        argv                 => ARRAY
                        cf_list              => ARRAY
                        curproc              => FML::Process::Distribute
                        fml_version
                        main_cf              => HASH
                        module_info          => HASH
                        myname
                        need_ml_name
                        options              => HASH
                        program_fullname
                        program_name
                     }

__print_style        => SCALAR

__start_time         => SCALAR

article              => HASH {
                        body                 => Mail::Message
                        header               => FML::Header
                        message              => Mail::Message
                     }

config               => FML::Config

credential           => FML::Credential

incoming_message     => HASH {
                        body                 => Mail::Message
                        header               => FML::Header
                        message              => Mail::Message
                     }

log_message_queue    => FML::Log::Print::Simple

main_cf              => HASH {
                        _hints               => HASH
                        config_dir
                        debug
                        default_command_line_option_config
                        default_config_cf
                        default_config_dir
                        default_cui_menu
                        default_domain
                        default_gui_menu
                        default_ml_home_prefix
                        default_module_config
                        default_paths_cf
                        domain_default_config
                        domain_default_config_cf
                        exec_prefix
                        executable_prefix
                        fml_group
                        fml_owner
                        fml_version
                        group_writable_config_dir
                        lib_dir
                        libexec_dir
                        local_lib_dir
                        ml_home_prefix_maps
                        prefix
                        prefix_dir
                        primary_ml_home_prefix_map
                        share_dir
                        site_default_config_cf
                        virtual_maps
                     }

pcb                  => FML::PCB

scheduler            => FML::Process::Scheduler



PCB Υƥ

PCB ǻȤäƤ륫ƥȥ⥸塼롢ӴؿΥꥹȡ

module     function                                     category
                                                    <-- (get value)
                                                    --> (set value)
--------------------------------------------------------------------------------
State      command_context_get_ml_name              <-- process_command
State      command_context_get_admin_auth           <-- process_command
State      command_context_get_normal_stop          <-- process_command
State      command_context_get_need_confirm         <-- process_command
State      command_context_get_stop_process         <-- process_command
State      command_context_get_admin_password       <-- process_command
State      command_context_get_try_admin_auth_request <-- process_command
State      command_context_set_ml_name              --> process_command
State      command_context_set_admin_auth           --> process_command
State      command_context_set_normal_stop          --> process_command
State      command_context_set_need_confirm         --> process_command
State      command_context_set_stop_process         --> process_command
State      command_context_set_admin_password       --> process_command
State      command_context_set_try_admin_auth_request --> process_command
State      command_context_reset_try_admin_auth_request --> process_command
State      article_get_id                           <-- article_message
State      article_set_id                           --> article_message
Utils      incoming_message_get_cache_file_path     <-- incoming_message
Utils      incoming_message_set_cache_file_path     --> incoming_message
State      filter_state_get_error                   <-- filter_state
State      filter_state_get_tempfail_request        <-- filter_state
State      filter_state_spam_checker_get_error      <-- filter_state
State      filter_state_virus_checker_get_error     <-- filter_state
State      filter_state_set_error                   --> filter_state
State      filter_state_set_tempfail_request        --> filter_state
State      filter_state_spam_checker_set_error      --> filter_state
State      filter_state_virus_checker_set_error     --> filter_state
State      smtp_server_state_get_error              <-- smtp_transaction
State      smtp_server_state_set_error              --> smtp_transaction
Utils      incoming_message_get_current_queue       <-- incoming_smtp_transaction
Utils      incoming_message_set_current_queue       --> incoming_smtp_transaction
Fake       _get_emul_domain                         <-- faker
Fake       _get_emul_ml_list                        <-- faker
Fake       _get_emul_user_list                      <-- faker
Fake       _set_emul_domain                         --> faker
Fake       _set_emul_ml_list                        --> faker
Fake       _set_emul_user_list                      --> faker
Error      finish                                   <-- error
Error      run                                      --> error
Kernel     sysflow_finalize_stderr_channel          <-- stderr
Kernel     sysflow_finalize_stderr_channel          <-- stderr
Kernel     sysflow_reopen_stderr_channel            --> stderr
Kernel     sysflow_reopen_stderr_channel            --> stderr
Kernel     sysflow_finalize_stderr_channel          --> stderr
State      restriction_state_get_deny_reason        <-- check_restrictions
State      restriction_state_set_deny_reason        --> check_restrictions
State      current_process_get_ml_name              <-- current_process
State      current_process_set_ml_name              <-- current_process
Utils      langinfo_get_charset                     <-- charset
Utils      langinfo_get_charset                     <-- charset
Utils      langinfo_set_charset                     --> charset
Utils      langinfo_get_language_hint               <-- language_hint
Utils      langinfo_set_language_hint               --> language_hint
State      error_message_get_count                  <-- reply_message_count
State      error_message_set_count                  <-- reply_message_count
State      error_message_set_count                  --> reply_message_count

Notes

[1]  fml4 ߷Υåȥޥ 4.3 BSD (SONY NeWS)ǡ CPU  MIPS3000
     üäǤ

     IBM ߴ PC (i386  i486)ڤƤΤϡ⤦Ǥ
     ftp.fml.org ( phys.titech.ac.jp ɥᥤ) i486 Ǥ

     ơ 200 IBM PC 40 餤äǤ

     ۡǥ쥯ȥ NFS ϻȤäƤޤ֣̥ͣФ
     ưʤǡ¸оݤϥǥΤߡפȤȽǤ򤷤ޤ
      LDAP  RDBMS ʤɬפʤäʬưۤɥޥ󤬼긵
     ˤޤ()

     ʳ곰ΤΤФƳĥб򤹤ΤϡϤꡢ
     ̵ΤǤ 20 ǯδߤޤա

[2]  ʼΤϡɤɤ󿷤ʤΤǡ2822  5322 ʤɤȸƤФ褦
     ʤΤǤ礦Ǥ⡢ǽε̾ϡĤޤǤ̤Ǥ礦
     

     ʤInternet Standard ȤƸˤϺǤ 822 ʤǡ¼Ūˤ
     2822 ʽǤ 5322  DRAFT STANDARD ǡ˰ʳʲΥơ
     Ǥ֤󡢰ʳ夬Υߥ󥰤 X822 ˤʤֹݤƥ
     ΤǤϤʤȡ

[3]  äȤ⡢줬ä SPAM ̤ȯƤ櫓Ǥ

[4]  fml8  /usr/local/etc/fml/ ʲΥե뷲 fml4  /usr/local/fml/.fml
     ʲΥե뷲 /usr/local/etc/fml/site_default_config.ph ʤɤ
     ƤޤɬабƤ櫓ǤϤޤ

[5]   fml4  site_init.ph ΤǤ

     fml4 ǤϼΤ褦եɤ߹Ǥޤ

     InitConfig {
        SetDefaults { ... };
        LoadConfig {
           include default_config.ph;
           include site_init.ph;
           include config.ph;
           include site_force.ph;
           include sitedef.ph;
        }
     }

     fml8 Ǥ

     /usr/local/etc/fml/$fml_version/default_config.cf
     /usr/local/etc/fml/site_default_config.cf
     /usr/local/etc/fml/domains/$DOMAIN/default_config.cf
     /var/spool/ml/elena/config.cf

     Τ褦ˤʤäƤޤ site_force.ph ޤ󤬡äƤʤΤǡ
     Ȥͽʤ

[6]  եĥҤȥեեޥåȤˤؤޤ

[7]   fml4  site_force.ph ΤǤ

[8]  դˡmakefml/fml ¾ΥץȤƤӽФˤϡԥ塼
     νϤ򤵤褦ˤ뤳ȤޤϡäϤΤ
     ¿뤵Ǥ

[9]  ˡǥեȤ apache Ǥ ~fml/ ؤΥϽʤϤʤΤǡ
     apache ɬפǤǥեȤǤϡʹε
     ˤʤäƤޤ

[10] ѥǧڥƥϡŪѤ褦⤵뤳Ȥ˾
     

[11] ñѰդˤϡñ OS ˥桼 rudo Ф褤Ǥ礦

     :

     % su root
     # useradd rudo

[12] fml 4.0 Τ褦 subscribe ޥɤλѹȤäǼ
     Ƥޤ󡣥Сǧˡ config.cf Ǻ٤ȥǤΤ
     Ȥˡ subscribe ޥɤѹñǤ

[13] ܤ˳Ψ׻򤷤Ƥȡ´餤ˡ礦ɤʤʤ
     ˡïꤿͤ顢:-)

[14] ʤϥǥեȤ site_default_config.cf ˻ŹޤƤޤ
     ޤ fml8 ΥǥեȤǤ

[15] fml4  ADDRESS_CHECK_MAX ѿǤ

[16] ɤƤ⤳ɬפǡɤĤΤ褦ˡغǸϿ͡٤ǤĤޤ걿Ѥ˷
     ʹ֤ȤȤǤŪ̿Ǥ

[17] դˤСߡɥᥤĶݥȤ̵뤷Ƥ櫓Ǥ͡
     ޤꤽ׵̵Ȼפޤɡ

[18] ˡե˥إåĤƤ륳ޥɤӤȤ褤Ǥ礦
     ͡Ǥ⡢̤Ǥ

[19] ȥåʳĥɬפǤϤޤȥ塼󥰤եǤ
     ȤߤɬפǤ礦ȤС̤ΡʤΤ˵ư줿˥ץε
     Υ᡼륭塼塼ˤߤ򤹤褦˳ĥʤ
     ȡϡɤ٤ʤΤǤ礦ʬ̤Ǥ

[20] fml8 ϼ᡼ Message-Id: εϿȤäƤޤ fml8 
     Message-Id: Ʊ᡼Ȥä硢ǽΰ̤̲ᤷޤ

     Ǥֺפϡfml8 ǤϤʤΤȤ MTA ˤβǽΤ
     ⤤Ǥ fml8 Τ MTA Ǥ fml8 ˤ⤢
     ޤ

[21] .mc  .cf ǡʤȤʤ sendmail ߤǤ;)

[22] perl  tie() 

[23] Τˤϡ̤ϣߣιףĤΥ֥åʤޤƤΤ
     ΣĤȤäƤޤ

[24] Τᡢ¿ξ FML::Process::Kernel Υ᥽åɤ CGI::Kernel ǥ
     ХɤƤꡢľܸƤФ뤳ȤϵǤ

[25] FML::Process::Kernel 򻲾

[26]  s ϥǥեȤΥåȤʤޤ

[27] : admin ޥɤ user_command_mail_allowed_commands ǵƤޤ

[28] ɥᥤ󤬤ʤϡǥեȥɥᥤȲᤷޤľǤ͡

[29] READ åפ䡢 chaddr  sleep Ԥ䤫
     ;)

[30] DBMS = DataBase Management System

[31]  last match ʾξФǽǤΥפƤȤ
     ǡǤޤޤ last match  first match ؤ
     뤳Ȥޤ

[32] ȤϤեϡ fml ݥȥʲѹ
     ɬפޤ͡ɲäǺѤΡפǤХɥѡƥʲ˥
     ץȤФफȡ

     ֤󡢤äϡɥѡƥʲ fml ݥȥʲ򻲹ͤ
     󥹥ȡ켰ۤڤǤ礦

     Ǥ⡢ȥåץǥ쥯ȥ Makefile  configure ѹɬפǤʤ
     

[33] HTML  SGML αѤ(Ǥͭ̾)ǤΤܼŪʥ󥿥å
      HTML ƱȤȤˤʤޤ

[34] ΤˤϡSGML ΰ˥եޥåǤΤΡפ HTML Ǥ
     HTML Ϥ뤫ͭ̾ˤʤäƤޤäΤǡHTML Τäȸ̩ʤΡġ
     Ȥäɤޤ :)

[35] 桹 DOCBOOK ͳϴñǡ¿ξǻȤƤ뤫Ǥ
     ޤꡢdocbook Υ񤱤ͤ¿Ȥ̣Ǥ⤢ޤ

[36] opensp  openjade ѥå˴ޤޤƤޤ

[37] http://www.iac.honeywell.com/Pub/Tech/CM/PMTools.html Τä

