fml 8 tutorial

Dr . Ken'ichi Fukamachi

FML.ORG

   
        

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

The current status of fml8 is PRE ALPHA. The version is 7.98.x. We plan to assign version 7.99.x to fml 8 ALPHA through fml 8 RC (release candidate).

The current TODO is seen at http://www.fml.org/software/fml-devel/fml/doc/ja/todo/STATUS.html (Japanese only now, sorry). See Chapter 8 on the changes between fml 4 and fml8.

It is verified that fml8 works on the following environemnt now.

	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
Preface
fml8 Status
The Road To The Next Generation Of Fml
Relation Between fml4 And fml8 Development Branch.
Mailing List
Please Let Me Know Your Opinion ...
On This Tutorial
Technical terms in this tutorial
I. Fml Fundamental Usage
1. What Is Mailing List ?
Email
Mailing List (Ml)
2. fml8 Overview
fml8 Features
Installation Overview
Create An ML
Add A New User To ML
Remove The User
Customize
Recipes
II. How To Set Up ML
3. Download fml8 Source Code.
Download Via FTP.
Access To GitHUB.
4. fml8 Installation On Unix
Preparation Of Installation
Run Configure
Appendix: Directory Roles
Fml Installation: make install
Edit main.cf
Edit site_default_config.cf (optional)
Filter
Virtual Domain
MTA Configuration (postfix)
MTA configuration (qmail)
recipes
5. Create ML On Unix
Run "makefml newml" To Create An ML (In The Case Of Default Domain)
Run "makefml newml" To Create An ML (In The Case Of Virtual Domain)
MTA Configuration (postfix)
MTA Configuration (qmail)
Customize config.cf
Recipes
6. fml8 installation on Microsft 2000/NT
7. Convert fml4 Style ML To fml8 Style ML
Overview: fml4 To fml8 (1)
Overview: Convert fml4 To fml8 (2)
Overview: Difference Between fml4 and fml8
Discussion
8. Difference Between fml4 And fml8
Difference Between fml4 And fml8: License.
Difference Between fml4 And fml8: Command Mail And Error Messages.
Difference Between fml4 And fml8: CUI
Difference Between fml4 And fml8: GUI (CGI)
File Naming Convention
9. Upgrade And Downgrade Of fml8
Upgrade
downgrade.
10. Configure CGI
"makefml newml" Creates CGI Script Always
Edit .htaccess
Example: Master Cgi
CGI Example: Create ML
CGI Example: subscribe
CGI Skin Selection
11. Apache Configuration
Use Suexec Of Apache
12. Test
Before Test
Test Of MTA
Send A Mail To ML
Test Of fml8 Itself.
Reset After Test.
III. How To Customise
13. What A User Can
Get ML Guide
Subscribe
Posting Article
Help: When You Want To know The Usage
Get Past Articles
Unsubscribe
Command Mail (Control fml By Sending Mail)
14. What Can You Do On The Mailing List Server
On The Host
Policy Of Command Creation
Common Command Line Options
Create A New ML
Remove An ML
Subscribe and Unsubscribe
Change the registered address
Stop Realtime Delivery
Start Realtime Delivery
See Log
See The Member List
Modify Configuration
Add or Remove A Remote Administrator.
Add or Remove A Modrator
"fml" And "makefml" Command
Show Addresses (Users + Aliases)
Show Alias
Show Configuration
Show Perl Module Document
Convert Articles To HTML Form
Recipes
15. Modify Configuration Files
Change Default For All ML's On Thie Host
16. [Caution] File Names
Filename Structure
Case Study: Address List
Case Study: List Of Remote Administrators
Case Study: List Of Moderators
Case Study: Remote Administrator Password Files
17. Case Studies Of Customization
Case Study: Auto File Responder
Case Study: Anyonen Can Use Command Mail.
Case Study: Disable Command Mail
Case Study: Mail Magazine (1)
Case Study: Mail Magazine (2)
Case Study: Anyone Can Post.
Case Study: Article Posting Allowd If It Is A Reply To The Former One.
Case Study: PGP/PGP Based Authentication In Posting
Case Study: Authenticate command mail by PGP/GPG
case study: hierarchical ML
I Want To Use ML By My Account.
Case Study: Office (1)
Case Study: Office (2)
18. Header Rewriting
Recipe's
19. Extend Command
Case Study: Create Your Own Help Command.
Recipes
20. Filtering
21. Extend Message
Case Study: Customize Message
22. Be ML Articles public via WWW
Recipes
IV. Operations
23. Logging
See Log
Show Computer Oriented Log
Recipes
24. Back Up Of Configurations
Back Up fml8 Configurations
Back Up All Files Except For Some Large Directories.
V. Troubleshoot
25. Troubleshoot
When The File System Error Ocuurs
VI. fml8 Design
26. [LOG] Original Idea Of fml8 Project
The Original Idea Of fml8 (fml-devel) Project
Details Of Idea
Refactoring
Architecture image
release engineering
27. Programming Style
Variable Naming Convension
A Few Topics On Design And Coding Style
Programming Style Original Idea
VII. fml8 Internals
28. fml8 Boot Loader To Resolve Version Dependence Dynamically
Case: Distribution
FML::Process:: Class Structure
Modules In Process Execution
Discussion: Where Function Should Resolve $ml_name And $ml_domain.
29. Configuration File: config.cf
ML Specific Configuration File: config.cf
config.cf Format
Extension To Postfix Style
Overload Variables In config.cf
Modifying/Adding Variables After All Configuration Files Have Been Loaded.
Variable List (Alphabetical Order)
Variable List (Class Based)
Recipes
30. Create A New Program
Create A Program (CUI)
Create A Program (CGI)
31. fml8 Mail Delivery System
The Difference Between fml4 And fml8
Mail::Message Object
Incoming Queuing
fml Sends Back A Mail Message
Mail Queue And Delivery System
Mail Queue Directory
Queue Management System
Discussion: FML::Mailer Is Apropriate ?
Delivery TIPS
32. Digest Delivery
Files Used For Digest Delivery Control
Idea: Digest Related Commands
recipes
33. Language Preference In Processing
Problems Of Language Preference
Japanese Preferred ML
English preferred ML
34. Manipulate Message (Mail Message)
Mail::Message Class
Mail::Message::Parse Class
Mail::Message::Compose Class
Message Internationalization: The Usage Of reply_message_nl()
Discussion: How To Send Back Language Dependent Error Mesages
35. Filter
Overview Of Filter System
Configuration Variables
Size Limit
Limit For Command Mail
Mime Component Filter Rules
Discussion: Mime Component Filter Needs What Functions ?
36. Subscribe / Unsubscribe
Which Map Subscribe/Unsubscribe Is Operated To ?
37. Command (Command Mail, CUI And GUI)
Modules for commands
Data Flow Of Command Request Processing
Command Extension: Command Mail
CUI Command Extension: makefml/fml
GUI Command Extension: CGI
How Differ Coding Style Among fml4 And fml8
38. Internal Of CGI Process
Method
Screen Of CGI And The Method
Screen And Trampolin Mechanism
MISC: Hard Coding Is Mandatory ?
CGI Implementation: Inheritance Among CGI Classes
CGI Implementation: config.cgi
39. Directory
Q: How Recursively Sub Directory Can Be Created ?
Recipes
40. Restrict Input Data
Overview: Checks Of Input Data
FML::Restriction Class
How CGI Restricts The Input
Discussion: FML::Restriction Is Too Restrictive ?
41. User Authentication
Discussion: FML::Credential Implementation
42. Hook
Overview
Hook Naming Convension
Recipes
43. Virtual Domain
Overview: virtual domain handling in fml8
Case study: movement ?
44. Errormail Analyzer (libexec/error)
Overview
Algorithm Of Error Detection
Cache Of Error Messages Data
Forward Error Messages
45. IO Interface And Operations
Fundamentals Of IO::Adapter
Methods / Operation Vector
Discussion
46. Lock
Overview: Lock
TODO
47. Database Related Modules
Overview
Persistent Data Use
Tie::JournaledFile Class
FML::Cache::Ring Class
48. Database Management System
Overview
49. Convert Another ML System To fml8
Implementation: fml4 To fml8
VIII. Modules
50. IO Abstraction Layer (IO::Adapter Class)
IO::Adapter Overview
IO::Adapter Methods
Argument Type Of Methods
File Map
Unixgroup Map
Nis Map
MySQL Map
51. Mail::Message Module
Mail::Message Overview
Mail::Message Module: Analyze
Mail::Message Module: Create A New Object
Mail::Message Module: Header Manipulations
Mail::Message Module: Manipulate Messabe Body
Mail::Message Module: Search
Mail::Message Module: Print
Mail::Message Module: Utility Functions
References
52. Language Dependent Functions
Something::Language:: Class
53. Mail::Message::Encode Class
Mail::Message::Encode Specification
run_in_chcode()
54. Execise: Create A New Program
Case Study: Create A fmlsch
Case Study: fmlsch.cgi
IX. Apendixes
Glossary (function and variable names convention)
A. Struct curproc (Object In Fact)
curproc Object
PCB Category List
List of Tables
4-1. directory structure
8-1. Difference between fml4 and fml8: CUI
26-1. refactoring TODO
26-2. release interval
29-1. table description
fml 8.0 (fml-devel) project homepage is www.fml.org/software/fml8/.
fml 4.0 project homepage is www.fml.org/software/fml4/.
about one floppy bsd routers, see www.bsdrouter.org/.
other free softwares are found at www.fml.org/software/.

author's homepage is www.fml.org/home/fukachan/.
Also, visit nuinui's world :) at www.nuinui.net.

For questions about FML, e-mail <fml-bugs@fml.org>.