summaryrefslogtreecommitdiff
path: root/fml/doc
diff options
context:
space:
mode:
authorfukachan <fukachan>2003-07-24 15:37:33 +0000
committerfukachan <fukachan>2003-07-24 15:37:33 +0000
commit071445b25b9522ae289f4b96f3fb34e4caafeace (patch)
tree128a12f1cb98746681f805001d5db76ac5415a82 /fml/doc
parent7836dc5e837d4902eea5c741669950c058ba86d2 (diff)
downloadfml8-071445b25b9522ae289f4b96f3fb34e4caafeace.tar.gz
fml8-071445b25b9522ae289f4b96f3fb34e4caafeace.tar.bz2
fml8-071445b25b9522ae289f4b96f3fb34e4caafeace.zip
translation. (partly submitted, phase 1)
Diffstat (limited to 'fml/doc')
-rw-r--r--fml/doc/en/Makefile.template70
-rw-r--r--fml/doc/en/tutorial/.cvsignore4
-rwxr-xr-xfml/doc/en/tutorial/.fix_charset.pl19
-rw-r--r--fml/doc/en/tutorial/00_README9
-rw-r--r--fml/doc/en/tutorial/@faq_template15
-rw-r--r--fml/doc/en/tutorial/@recipe_template25
-rw-r--r--fml/doc/en/tutorial/@sect1_template11
-rw-r--r--fml/doc/en/tutorial/Makefile41
-rw-r--r--fml/doc/en/tutorial/Makefile.local43
-rw-r--r--fml/doc/en/tutorial/book.sgml210
-rw-r--r--fml/doc/en/tutorial/command/chapter.sgml22
-rw-r--r--fml/doc/en/tutorial/command/dataflow.sgml15
-rw-r--r--fml/doc/en/tutorial/command/extension.sgml164
-rw-r--r--fml/doc/en/tutorial/command/module.sgml95
-rw-r--r--fml/doc/en/tutorial/glossary.sgml228
-rw-r--r--fml/doc/en/tutorial/include/bookinfo.sgml69
-rw-r--r--fml/doc/en/tutorial/include/chapters.ent199
-rw-r--r--fml/doc/en/tutorial/include/terms.sgml35
-rw-r--r--fml/doc/en/tutorial/install/download.sgml87
-rw-r--r--fml/doc/en/tutorial/install/fml_on_nt.sgml17
-rw-r--r--fml/doc/en/tutorial/install/postfix.sgml76
-rw-r--r--fml/doc/en/tutorial/install/qmail.sgml70
-rw-r--r--fml/doc/en/tutorial/install/upgrade.sgml48
-rw-r--r--fml/doc/en/tutorial/internals/CURPROC.sgml65
-rw-r--r--fml/doc/en/tutorial/overview/ml.sgml65
-rw-r--r--fml/doc/en/tutorial/terms.sgml29
-rw-r--r--fml/doc/en/tutorial/troubleshoot/chapter.sgml25
-rw-r--r--fml/doc/en/tutorial/variables/class.sgml647
28 files changed, 2403 insertions, 0 deletions
diff --git a/fml/doc/en/Makefile.template b/fml/doc/en/Makefile.template
new file mode 100644
index 00000000..4675ba19
--- /dev/null
+++ b/fml/doc/en/Makefile.template
@@ -0,0 +1,70 @@
+#
+# $FML: Makefile.template,v 1.5 2001/06/05 13:28:44 fukachan Exp $
+#
+
+TMP_DIR = /tmp/sgmltools
+
+# targets
+SOURCE = book
+BOOK = tech
+BOOK_ID = tips
+TARGET_HTML_DIR = ../../../../Documentation/en/$(BOOK)
+TARGET_TEXT_DIR = ../../../../Documentation/en/text
+
+# programs (except for /bin/*)
+UNIQ = uniq
+PERL = perl
+FIND = find
+GREP = grep
+CVS = cvs
+ENV = env
+EXPORTER = rsync -a
+SGML_DIR = ../../share/sgml
+SGML_CATALOG_FILES = ../../share/sgml/catalog
+JADE_OPTS = -v -c $(SGML_DIR)/catalog
+FML_DSSSL = -d $(SGML_DIR)/fml.dsl
+HTMLify = sgmltools -v -d -j "$(JADE_OPTS) $(FML_DSSSL)"
+TEXTify = sgmltools -v -d -j "$(JADE_OPTS)"
+FIX_CHARSET = ../utils/bin/fix_charset.pl
+
+ENV_VARS = TMPDIR=$(TMP_DIR) SGML_CATALOG_FILES=$(SGML_CATALOG_FILES) COLS=72
+
+
+###
+### RULES
+###
+
+all: export
+
+html:
+ $(ENV) $(ENV_VARS) $(HTMLify) -b html $(SOURCE).sgml 2>&1 | $(UNIQ)
+ @ $(PERL) -i.bak $(FIX_CHARSET) $(SOURCE)/$(BOOK_ID).html
+ @ rm -f $(SOURCE)/@*/*.html.bak
+
+txt:
+ $(ENV) $(ENV_VARS) $(TEXTify) -b txt $(SOURCE).sgml 2>&1 | $(UNIQ)
+
+lynx:
+ $(ENV) $(ENV_VARS) $(TEXTify) -b lynx $(SOURCE).sgml 2>&1 | $(UNIQ)
+
+ps:
+ $(ENV) $(ENV_VARS) $(TEXTify) -b ps $(SOURCE).sgml 2>&1 | $(UNIQ)
+
+clean:
+ $(FIND) . -type f -print |$(GREP) '~' |$(PERL) -nple unlink
+ rm -f book.txt
+ rm -fr $(SOURCE)
+
+export: _init html lynx
+ $(EXPORTER) $(SOURCE)/ $(TARGET_HTML_DIR)/
+ @ rsync -a ../../en/figures/*.gif $(TARGET_HTML_DIR)/
+ @ cp book.txt $(TARGET_TEXT_DIR)/$(BOOK).txt
+ chmod 755 $(TARGET_HTML_DIR)
+
+scan:
+ @ $(CVS) -n update 2>&1 |$(GREP) -v : || echo ''
+
+_init:
+ test -d $(TARGET_HTML_DIR) || mkdir $(TARGET_HTML_DIR)
+ test -d $(TARGET_TEXT_DIR) || mkdir $(TARGET_TEXT_DIR)
+ test -d $(TMP_DIR) || mkdir $(TMP_DIR)
diff --git a/fml/doc/en/tutorial/.cvsignore b/fml/doc/en/tutorial/.cvsignore
new file mode 100644
index 00000000..87e2eb7d
--- /dev/null
+++ b/fml/doc/en/tutorial/.cvsignore
@@ -0,0 +1,4 @@
+fml-devel.fot
+fml-devel
+book
+book.txt
diff --git a/fml/doc/en/tutorial/.fix_charset.pl b/fml/doc/en/tutorial/.fix_charset.pl
new file mode 100755
index 00000000..664c5fb9
--- /dev/null
+++ b/fml/doc/en/tutorial/.fix_charset.pl
@@ -0,0 +1,19 @@
+#!/usr/local/bin/perl
+#
+# $FML$
+# $jaFML: .fix_charset.pl,v 1.1 2001/04/23 17:15:52 fukachan Exp $
+#
+
+use strict;
+
+my $meta = q#
+<META http-equiv="Content-Type"
+ content="text/html; charset=EUC-JP">
+#;
+
+while (<>) {
+ s/<META/${meta}$&/;
+ print;
+}
+
+exit 0;
diff --git a/fml/doc/en/tutorial/00_README b/fml/doc/en/tutorial/00_README
new file mode 100644
index 00000000..bc472967
--- /dev/null
+++ b/fml/doc/en/tutorial/00_README
@@ -0,0 +1,9 @@
+file formats in this directory is SGML (Standard Generalized Markup
+Language).
+
+You can compile it to html format by sgmltools and openjade.
+
+
+
+ Ken'ichi Fukamachi
+ fukachan@fml.org
diff --git a/fml/doc/en/tutorial/@faq_template b/fml/doc/en/tutorial/@faq_template
new file mode 100644
index 00000000..bc9c59a8
--- /dev/null
+++ b/fml/doc/en/tutorial/@faq_template
@@ -0,0 +1,15 @@
+<qandaset>
+<qandaentry>
+<question>
+ <para>
+
+ </para>
+</question>
+
+<answer>
+ <para>
+
+ </para>
+</answer>
+</qandaentry>
+</qandaset>
diff --git a/fml/doc/en/tutorial/@recipe_template b/fml/doc/en/tutorial/@recipe_template
new file mode 100644
index 00000000..76b0d2b7
--- /dev/null
+++ b/fml/doc/en/tutorial/@recipe_template
@@ -0,0 +1,25 @@
+<!--
+# $FML$
+ $jaFML: @recipe_template,v 1.1 2003/01/07 11:39:13 fukachan Exp $
+-->
+
+
+<qandaentry>
+
+<question>
+<para>
+
+</para>
+</question>
+
+<answer>
+<para>
+
+<screen>
+
+</screen>
+
+</para>
+</answer>
+
+</qandaentry>
diff --git a/fml/doc/en/tutorial/@sect1_template b/fml/doc/en/tutorial/@sect1_template
new file mode 100644
index 00000000..d6e86662
--- /dev/null
+++ b/fml/doc/en/tutorial/@sect1_template
@@ -0,0 +1,11 @@
+<sect1>
+ <title>
+ </title>
+
+<para>
+</para>
+
+<para>
+</para>
+
+</sect1>
diff --git a/fml/doc/en/tutorial/Makefile b/fml/doc/en/tutorial/Makefile
new file mode 100644
index 00000000..ccd0e990
--- /dev/null
+++ b/fml/doc/en/tutorial/Makefile
@@ -0,0 +1,41 @@
+#
+# $FML$
+# $jaFML: Makefile,v 1.11 2001/05/01 09:15:21 fukachan Exp $
+#
+
+# targets
+TARGET = book
+TARGET_DIR = ../../../../Documentation/en/tutorial
+ID = techtips.html
+
+###
+### CONFIGURATIONS
+###
+
+SOURCE = book
+BOOK = tutorial
+BOOK_ID = index
+TARGET_DIR = ../../../../Documentation/en/$(BOOK)
+
+
+###
+### RULES
+###
+
+_ARGV = SOURCE=$(SOURCE) BOOK=$(BOOK) BOOK_ID=$(BOOK_ID)
+_MAKE = $(MAKE) -f ../Makefile.template $(_ARGV)
+
+
+all: export
+
+html:
+ @ $(_MAKE) html
+
+clean:
+ @ $(_MAKE) clean
+
+export:
+ @ $(_MAKE) export
+
+scan:
+ @ $(_MAKE) scan
diff --git a/fml/doc/en/tutorial/Makefile.local b/fml/doc/en/tutorial/Makefile.local
new file mode 100644
index 00000000..e45bfb9c
--- /dev/null
+++ b/fml/doc/en/tutorial/Makefile.local
@@ -0,0 +1,43 @@
+#
+# $FML$
+# $jaFML: Makefile.local,v 1.5 2003/06/20 22:03:11 fukachan Exp $
+#
+
+SHOW_CONFIG = ../../../utils/bin/show_config.pl --sgml
+PROG_LIST = ../../../utils/bin/varlist.pl --sgml
+PROG_CLASS = ../../../utils/bin/varclass.pl --sgml
+SOURCE = ../../../etc/default_config.cf.en.in
+
+# destination
+VARLIST = variables/list.sgml
+VARCLASS = variables/class.sgml
+SGML_FILTER_RULES = variables/filter.rules.sgml
+SGML_FILTER_SIZE = variables/filter.size.sgml
+
+
+all: $(VARLIST) $(VARCLASS) $(SGML_FILTER_RULES) $(SGML_FILTER_SIZE)
+
+$(VARLIST): $(SOURCE)
+ $(PROG_LIST) $(SOURCE) > $(VARLIST).new
+ mv $(VARLIST).new $(VARLIST)
+
+$(VARCLASS): $(SOURCE)
+ $(PROG_CLASS) $(SOURCE) > $(VARCLASS).new
+ mv $(VARCLASS).new $(VARCLASS)
+
+install: install_image
+
+install_image: ../../en/figures/command.dataflow.gif
+
+../../en/figures/command.dataflow.gif: command/states.gif
+ cp command/states.gif ../../en/figures/command.dataflow.gif
+
+$(SGML_FILTER_RULES): $(SOURCE)
+ $(SHOW_CONFIG) --type filter_rules $(SOURCE) \
+ > $(SGML_FILTER_RULES).new
+ mv $(SGML_FILTER_RULES).new $(SGML_FILTER_RULES)
+
+$(SGML_FILTER_SIZE): $(SOURCE)
+ $(SHOW_CONFIG) --type filter_size $(SOURCE) \
+ > $(SGML_FILTER_SIZE).new
+ mv $(SGML_FILTER_SIZE).new $(SGML_FILTER_SIZE)
diff --git a/fml/doc/en/tutorial/book.sgml b/fml/doc/en/tutorial/book.sgml
new file mode 100644
index 00000000..641adc74
--- /dev/null
+++ b/fml/doc/en/tutorial/book.sgml
@@ -0,0 +1,210 @@
+<!--
+This is an sgml using DocBook dtd. Use sgmltools version 2.0.x or above
+to generate various output formats.
+
+# $FML$
+$jaFML: book.sgml,v 1.58 2003/05/31 08:51:07 fukachan Exp $
+-->
+
+<!doctype book public "-//FML//DTD DocBook V3.1-Based Extension//EN" [
+ <!entity % include SYSTEM "include/chapters.ent"> %include;
+]>
+
+<book>
+
+ &bookinfo;
+
+ &preface;
+
+ <toc></toc>
+
+ <part>
+ <title> fml fundamental usage </title>
+ <partintro>
+ <para>
+ This part describes brief guide for beginners.
+ </para>
+ <para>
+ See &www.fml.org; and other sites for more details on
+ the mailing list.
+ </para>
+ </partintro>
+
+ <!-- chapters ... -->
+ &chapter.overview.ml;
+ &chapter.overview.fml;
+ </part>
+
+
+ <part>
+ <title> fml: how to set up ML.</title>
+ <partintro>
+ <para>
+ topics driven in this part.
+ </para>
+ </partintro>
+
+ &chapter.download;
+
+ <!-- unix -->
+ &chapter.install.fml.unix;
+ &chapter.setup.newml;
+
+ <!-- 2000/nt -->
+ &chapter.install.fml.nt;
+
+ <!-- misc around installation/setup -->
+ &chapter.upgrade;
+
+ <!-- CGI -->
+ &chapter.setup.cgi;
+
+ <!-- test -->
+ &chapter.setup.test;
+ </part>
+
+
+ <part>
+ <title> fml: how to customise </title>
+ <partintro>
+ <para>
+ topics driven in this part.
+ </para>
+ </partintro>
+
+ &chapter.usage.user;
+ &chapter.usage.onhost;
+ &chapter.config;
+ &chapter.filename; <!-- appropriate here ? -->
+
+ <!-- customize -->
+ &chapter.customize.mlstyle;
+ &chapter.customize.header;
+ &chapter.customize.command;
+ &chapter.customize.filter;
+
+ <!-- thread track system -->
+ &chapter.threadtrack;
+ </part>
+
+
+ <part>
+ <title> troubleshooting </title>
+ <partintro>
+ <para>
+ This part describes how to shoot troubles.
+ </para>
+ </partintro>
+
+
+ &chapter.troubleshoot;
+
+ </part>
+
+
+ <part>
+ <title> fml design </title>
+ <partintro>
+ <para>
+ THis part describes the design policy of fml.
+ </para>
+ </partintro>
+
+ &chapter.design;
+ &chapter.programingstyle;
+ </part>
+
+
+ <part>
+ <title> fml internals </title>
+ <partintro>
+ <para>
+ This part describles the fml internals for developers.
+ </para>
+ </partintro>
+
+ <!-- boot -->
+ &chapter.bootloader;
+ &chapter.config.cf;
+
+ <!-- how to write a new program -->
+ &chapter.program.create;
+
+ <!-- delivery and command processing -->
+ &chapter.delivery;
+ &chapter.digest;
+ &chapter.message;
+ &chapter.filter;
+ <!-- &chapter.replybyfml; -->
+
+ <!-- user access control -->
+ &chapter.userctl;
+
+ <!-- command -->
+ &chapter.command;
+
+ <!-- CGI -->
+ &chapter.internal.cgi;
+
+ <!-- directory -->
+ &chapter.directory;
+
+ <!-- security -->
+ &chapter.restriction;
+ &chapter.credential;
+
+ <!-- hook -->
+ &chapter.hook;
+
+ <!-- virtual domains -->
+ &chapter.virtual;
+
+ <!-- misc -->
+ &chapter.io.abstraction;
+ &chapter.lock;
+ &chapter.db.modules;
+ &chapter.dbms;
+ </part>
+
+
+ <part>
+ <title> modules </title>
+ <partintro>
+ <para>
+ This part descripbes how to use most important modules.
+ </para>
+ </partintro>
+
+ &chapter.module.io.adapter;
+ &chapter.module.mail.message;
+ &chapter.module.nl;
+ &chapter.module.encode;
+ &chapter.module.create;
+ </part>
+
+
+ <!--
+ *************** appendixes hereafter **************
+ -->
+ <part>
+ <title> Apendixes </title>
+
+ &chapter.glossary;
+
+<!--
+
+ &chapter.cvstree;
+ &chapter.docbook;
+ &chapter.inet6;
+
+ <!-- thread track -->
+ &chapter.threadtrack.tools;
+
+-->
+
+ <!-- internals -->
+ &chapter.struct;
+ </part>
+
+
+</book>
diff --git a/fml/doc/en/tutorial/command/chapter.sgml b/fml/doc/en/tutorial/command/chapter.sgml
new file mode 100644
index 00000000..eabf70c6
--- /dev/null
+++ b/fml/doc/en/tutorial/command/chapter.sgml
@@ -0,0 +1,22 @@
+<!--
+# $FML$
+ $jaFML: chapter.sgml,v 1.7 2002/12/25 11:50:42 fukachan Exp $
+-->
+
+<chapter>
+ <title>
+ command (command mail, CUI, GUI)
+ </title>
+
+
+<!-- module usage, FML::Command::* modules -->
+&sect.command.module;
+
+&sect.command.dataflow;
+
+&sect.command.extension;
+
+&sect.command.internal;
+
+
+</chapter>
diff --git a/fml/doc/en/tutorial/command/dataflow.sgml b/fml/doc/en/tutorial/command/dataflow.sgml
new file mode 100644
index 00000000..2fb765ff
--- /dev/null
+++ b/fml/doc/en/tutorial/command/dataflow.sgml
@@ -0,0 +1,15 @@
+<!--
+# $FML$
+ $jaFML: dataflow.sgml,v 1.1 2002/12/25 11:50:42 fukachan Exp $
+-->
+
+
+<sect1 id="fml.command.dataflow">
+ <title>
+ data flow of command request processing
+ </title>
+
+
+<graphic entityref="image.command.dataflow"></graphic>
+
+</sect1>
diff --git a/fml/doc/en/tutorial/command/extension.sgml b/fml/doc/en/tutorial/command/extension.sgml
new file mode 100644
index 00000000..bf1cf0a7
--- /dev/null
+++ b/fml/doc/en/tutorial/command/extension.sgml
@@ -0,0 +1,164 @@
+<!--
+ $FML$
+ $jaFML: extension.sgml,v 1.10 2003/04/15 14:51:36 fukachan Exp $
+-->
+
+
+<sect1 id="fml.command.hack.commandmail">
+ <title>
+ command extensoin: command mail
+ </title>
+
+
+<warning>
+<para>
+To make a new command usable for all ML's on this host,
+put the module you wrote at
+<screen>
+/usr/local/lib/fml/site_local/
+</screen>
+
+If you permit the command is used only for the specifiec ML
+(e.g. elena ML), put it at the ML local library path
+<screen>
+/var/spool/ml/elena/local/lib/
+</screen>
+.
+</para>
+
+<para>
+In this section, we consider the former case.
+In both cases, the module codes are same.
+</para>
+</warning>
+
+
+<sect2>
+ <title>
+ create a new user command
+ </title>
+
+<para>
+Consider to make a new user command "uja".
+Pick up a command at FML::Command, cut and paste it.
+Please put it at
+<screen>
+/usr/local/lib/fml/site_local/FML/Command/User/uja.pm
+</screen>
+Edit site_default_config.cf to add it into $commands_for_user
+to permit the user of "uja" command.
+<screen>
+commands_for_user += uja
+</screen>
+</para>
+
+</sect2>
+
+
+<sect2>
+ <title>
+ create a new admin command "admin uja"
+ </title>
+
+<para>
+In the same way describe above, hack the module!:)
+but the location differs.
+Put it at the FML::Command::Admin:: class.
+<screen>
+/usr/local/lib/fml/site_local/FML/Command/Admin/uja.pm
+</screen>
+Edit site_default_config.cf to add it into $commands_for_privileged_user
+to permit the use of "admin uja" command.
+<screen>
+commands_for_privileged_user += uja
+</screen>
+</para>
+
+</sect2>
+
+</sect1>
+
+
+<sect1 id="fml.command.hack.makefml">
+ <title>
+ CUI command extension: makefml/fml
+ </title>
+
+<warning>
+<para>
+To make a new command usable for all ML's on this host,
+put the module you wrote at
+<screen>
+/usr/local/lib/fml/site_local/
+</screen>
+
+If you permit the command is used only for the specifiec ML
+(e.g. elena ML), put it at the ML local library path
+<screen>
+/var/spool/ml/elena/local/lib/
+</screen>
+.
+</para>
+
+<para>
+In this section, we consider the former case.
+In both cases, the module codes are same.
+</para>
+</warning>
+
+<para>
+Create a module "uja" and put it at
+<screen>
+/usr/local/lib/fml/site_local/FML/Command/Admin/uja.pm
+</screen>
+No editing of .cf files.
+The existence of module file enables the command automatically
+in the case CUI since the use of CUI implies administrator use.
+</para>
+
+</sect1>
+
+
+<sect1 id="fml.command.hack.cgi">
+ <title>
+ GUI command extension: CGI
+ </title>
+
+
+<warning>
+<para>
+To make a new command usable for all ML's on this host,
+put the module you wrote at
+<screen>
+/usr/local/lib/fml/site_local/
+</screen>
+
+If you permit the command is used only for the specifiec ML
+(e.g. elena ML), put it at the ML local library path
+<screen>
+/var/spool/ml/elena/local/lib/
+</screen>
+.
+</para>
+
+<para>
+In this section, we consider the former case.
+In both cases, the module codes are same.
+</para>
+</warning>
+
+
+<para>
+craete a module "uja" and put it at
+<screen>
+/usr/local/lib/fml/site_local/FML/Command/Admin/uja.pm
+</screen>
+Edit site_default_config.cf to add it into $commands_for_admin_cgi
+to permit the use of "uja" command.
+<screen>
+commands_for_admin_cgi += uja
+</screen>
+</para>
+
+
+</sect1>
diff --git a/fml/doc/en/tutorial/command/module.sgml b/fml/doc/en/tutorial/command/module.sgml
new file mode 100644
index 00000000..e2738b3e
--- /dev/null
+++ b/fml/doc/en/tutorial/command/module.sgml
@@ -0,0 +1,95 @@
+<!--
+ $FML$
+ $jaFML: module.sgml,v 1.4 2003/04/15 14:51:36 fukachan Exp $
+-->
+
+
+<sect1 id="fml.command.module.hierarchy">
+ <title>
+ modules for commands
+ </title>
+
+<para>
+In &fmldevel;, all command modules are shared among command mail,
+CUI(makefml, fml) and GUI.
+Commands are caregorized into user and administrative ones by the
+priviledge.
+</para>
+
+<para>
+FML::Command:: consists of the following classes:
+<screen>
+FML::Command entrance into FML::Command
+FML::Command::User command for usual ML users.
+FML::Command::Admin command for administrators.
+</screen>
+For example, a user command in a command mail kicks off
+FML::Command firstly, after some steps,
+calls FML::Command::User::$command where $command is the specified
+command name.
+</para>
+
+
+<sect2>
+ <title>
+ usre command in command mail
+ </title>
+
+<para>
+FML::Process::Command call FML::Command::User::$command for $command
+via FML::Command.
+</para>
+
+<para>
+
+Finally, some module calls FML::Command::Admin::$command for real work even if it is
+a user command.
+For example,
+FML::Command::Admin::subscribe works for subscription.
+In this case,
+FML::Command::User::subscribe module is a wrapper or an entrance for
+confirmation before the real subscription work.
+</para>
+</sect2>
+
+<sect2>
+ <title>
+ admin command (administrative command in command mail)
+ </title>
+
+<para>
+call FML::Command::Admin::$command for $command via FML::Command
+via FML::Process::Command.
+</para>
+
+</sect2>
+
+
+<sect2>
+ <title>
+ CUI (makefml/fml)
+ </title>
+
+<para>
+FML::Process::Configure calls
+FML::Command::Admin::$command via FML::Command.
+</para>
+
+</sect2>
+
+
+<sect2>
+ <title>
+ GUI (CGI)
+ </title>
+
+
+<para>
+FML::Process::CGI calls
+FML::Command::Admin::$command via FML::Command.
+</para>
+
+</sect2>
+
+
+</sect1>
diff --git a/fml/doc/en/tutorial/glossary.sgml b/fml/doc/en/tutorial/glossary.sgml
new file mode 100644
index 00000000..ba707d8c
--- /dev/null
+++ b/fml/doc/en/tutorial/glossary.sgml
@@ -0,0 +1,228 @@
+<!--
+# $FML$
+ $jaFML: glossary.sgml,v 1.5 2003/04/15 14:51:34 fukachan Exp $
+-->
+
+<glossary id="glossary">
+ <title>
+ Glossary (function and variable names)
+ </title>
+
+
+ <glossentry>
+ <glossterm> fml 4 </glossterm>
+ <glossdef>
+ <para>
+ &fml4; series
+ </para>
+ </glossdef>
+
+ </glossentry>
+
+
+ <glossentry>
+ <glossterm> fml-devel </glossterm>
+ <glossdef>
+ <para>
+ current development version on the way to &fmldevel; in the future.
+ </para>
+
+ <para>
+ We call it fml 8, too.
+ </para>
+ </glossdef>
+
+
+ </glossentry>
+
+
+ <glossentry>
+ <glossterm> curproc </glossterm>
+ <glossdef>
+ <para>
+ abbrebiation of "current process".
+ </para>
+
+ <para>
+ Typical abbrebiation form used in UNIX kernel.
+ </para>
+
+ </glossdef>
+
+ </glossentry>
+
+
+ <glossentry>
+ <glossterm> PCB </glossterm>
+ <glossdef>
+ <para>
+ Process Control Block.
+ </para>
+
+ <para>
+ Typical abbrebiation form used in UNIX kernel.
+ </para>
+
+ </glossdef>
+
+ </glossentry>
+
+
+ <glossentry>
+ <glossterm> config </glossterm>
+ <glossdef>
+ <para>
+ configuration.
+ </para>
+ </glossdef>
+ </glossentry>
+
+
+ <glossentry>
+ <glossterm> conf </glossterm>
+ <glossdef>
+ <para>
+ configuration.
+ </para>
+ </glossdef>
+ </glossentry>
+
+
+ <glossentry>
+ <glossterm> arg / args </glossterm>
+ <glossdef>
+ <para>
+ argument.
+ </para>
+ </glossdef>
+
+
+ </glossentry>
+
+
+ <glossentry>
+ <glossterm> fh </glossterm>
+ <glossdef>
+ <para>
+ file handle.
+ </para>
+ </glossdef>
+
+
+ </glossentry>
+
+
+ <glossentry>
+ <glossterm> dh </glossterm>
+ <glossdef>
+ <para>
+ directory handle.
+ </para>
+ </glossdef>
+
+
+ </glossentry>
+
+
+ <glossentry>
+ <glossterm> fp </glossterm>
+ <glossdef>
+ <para>
+ function pointer == code reference for perl 5.
+ </para>
+ </glossdef>
+ </glossentry>
+
+
+ <glossentry>
+ <glossterm> _foobar </glossterm>
+ <glossdef>
+ <para>
+ keyword begininng with _ is used for internal function or variable.
+ </para>
+
+ <para>
+ private in other words.
+ </para>
+ </glossdef>
+ </glossentry>
+
+
+ <glossentry>
+ <glossterm> rfoobar </glossterm>
+ <glossdef>
+ <para>
+ The first "r" implies "reference".
+ This called hangalian form but we use it little in fml8.
+ </para>
+ </glossdef>
+ </glossentry>
+
+
+ <glossentry>
+ <glossterm> STR </glossterm>
+ <glossdef>
+ <para>
+ string.
+ </para>
+ </glossdef>
+
+ </glossentry>
+
+
+ <glossentry>
+ <glossterm> Japanese character set name </glossterm>
+ <glossdef>
+ <para>
+ JIS SJIS EUC ...
+ </para>
+ </glossdef>
+ </glossentry>
+
+
+ <glossentry>
+ <glossterm> 2 </glossterm>
+ <glossdef>
+ <para>
+ the same pronounciation as "to".
+ </para>
+ <para>
+ STR2EUC (== STRing to EUC)
+<screen>
+use String qw(STR2EUC);
+$euc_string = STR2EUC($string);
+</screen>
+ </para>
+ </glossdef>
+ </glossentry>
+
+
+ <glossentry>
+ <glossterm> 4 </glossterm>
+ <glossdef>
+ <para>
+ the same pronounciation as "for".
+ </para>
+ </glossdef>
+ </glossentry>
+
+
+ <glossentry>
+ <glossterm> command mail </glossterm>
+ <glossdef>
+ <para>
+ a mail which message body includes commands for fml.
+ </para>
+
+ <para>
+ By sending the command mail to some address,
+ a user can make fml8 action something, such as
+ subscribe, file retrieve, unsubscribe et.al,
+ The address is typically $ml-ctl@$domain.
+ </para>
+
+ </glossdef>
+ </glossentry>
+
+
+</glossary>
diff --git a/fml/doc/en/tutorial/include/bookinfo.sgml b/fml/doc/en/tutorial/include/bookinfo.sgml
new file mode 100644
index 00000000..73d93abd
--- /dev/null
+++ b/fml/doc/en/tutorial/include/bookinfo.sgml
@@ -0,0 +1,69 @@
+<!--
+# $FML$
+ $jaFML: bookinfo.sgml,v 1.11 2003/02/11 13:54:11 fukachan Exp $
+-->
+
+<bookinfo>
+ <bookbiblio>
+ <title>
+ fml 8 tutorial
+ </title>
+
+ <author>
+ <honorific> Dr </honorific>
+ <firstname> Ken'ichi </firstname>
+ <surname> Fukamachi </surname>
+ <affiliation>
+ <orgname>FML.ORG</orgname>
+ <address>
+ <email>
+ <ulink url="mailto:fukachan@fml.org">
+ fukachan@fml.org
+ </ulink>
+ </email>
+ </address>
+ </affiliation>
+ </author>
+
+ <copyright>
+ <year> 2001,2002,2003 </year>
+ <holder> Ken'ichi Fukamachi </holder>
+ </copyright>
+
+ </bookbiblio>
+
+ <legalnotice>
+ <para>
+ All rights reserved. This program is free software; you can
+ redistribute it and/or modify it under the same terms as Perl itself.
+ </para>
+
+
+ <para>
+ The current TODO is seen at
+ <ulink url="../../../fml/doc/ja/todo/STATUS.html">
+ http://www.fml.org/software/fml-devel/fml/doc/ja/todo/STATUS.html
+ </ulink>
+ (Japanese only now, sorry).
+ </para>
+
+ <para>
+ It is verified that &fml8; works on the following environemnt now.
+<screen>
+ perl 5.6.1 on NetBSD 1.5.x (1.5 stable)
+ perl 5.6.1 on NetBSD 1.6
+ 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 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
+</screen>
+ </para>
+
+ </legalnotice>
+
+
+</bookinfo>
diff --git a/fml/doc/en/tutorial/include/chapters.ent b/fml/doc/en/tutorial/include/chapters.ent
new file mode 100644
index 00000000..5f63e97d
--- /dev/null
+++ b/fml/doc/en/tutorial/include/chapters.ent
@@ -0,0 +1,199 @@
+<!--
+ $FML$
+ $jaFML: chapters.ent,v 1.75 2003/06/20 22:03:12 fukachan Exp $
+-->
+
+<!entity versin "1.1">
+
+<!-- pointer -->
+<!entity fmlbible "fml bible(oreilly japan)">
+<!entity www.fml.org "http://www.fml.org/software/fml/">
+<!entity fml4 "fml 4">
+<!entity fmldevel "fml 8">
+
+
+<!-- images -->
+<!entity image.architecture SYSTEM "architecture.gif" ndata gif>
+<!entity image.command.dataflow SYSTEM "command.dataflow.gif" ndata gif>
+<!entity image.ml SYSTEM "ml.gif" ndata gif>
+<!entity image.cgi.top SYSTEM "cgi.top.gif" ndata gif>
+<!entity image.cgi.newml SYSTEM "cgi.newml.gif" ndata gif>
+<!entity image.cgi.useradd SYSTEM "cgi.useradd.gif" ndata gif>
+
+
+<!-- meta -->
+<!entity bookinfo SYSTEM "include/bookinfo.sgml">
+<!entity preface SYSTEM "preface.sgml">
+<!entity sect.terms SYSTEM "terms.sgml">
+
+
+<!-- part I: introduction .. test -->
+<!entity chapter.overview.fml SYSTEM "overview/fml.sgml">
+<!entity chapter.overview.ml SYSTEM "overview/ml.sgml">
+
+
+<!-- part II: set up -->
+<!entity chapter.download SYSTEM "install/download.sgml">
+<!entity chapter.install.fml.unix SYSTEM "install/fml_on_unix.sgml">
+<!entity chapter.install.fml.nt SYSTEM "install/fml_on_nt.sgml">
+<!entity sect.install.postfix SYSTEM "install/postfix.sgml">
+<!entity sect.install.qmail SYSTEM "install/qmail.sgml">
+<!entity chapter.upgrade SYSTEM "install/upgrade.sgml">
+
+<!entity chapter.setup.newml SYSTEM "setup/newml.sgml">
+<!entity sect.setup.postfix SYSTEM "setup/postfix.sgml">
+<!entity sect.setup.qmail SYSTEM "setup/qmail.sgml">
+<!entity sect.setup.config.cf SYSTEM "setup/config.cf.sgml">
+<!entity chapter.setup.cgi SYSTEM "setup/cgi.sgml">
+<!entity chapter.setup.test SYSTEM "setup/test.sgml">
+
+
+<!-- part III: customize -->
+
+<!entity chapter.config SYSTEM "customize/chapter.config.sgml">
+<!entity chapter.usage.user SYSTEM "usage/chapter.user.sgml">
+<!entity chapter.usage.onhost SYSTEM "usage/chapter.onhost.sgml">
+<!entity chapter.customize.mlstyle SYSTEM "customize/chapter.ml_style.sgml">
+<!entity chapter.customize.header SYSTEM "customize/chapter.header.sgml">
+<!entity chapter.customize.command SYSTEM "customize/chapter.command.sgml">
+
+<!entity sect.config.autoreply SYSTEM "customize/autoreply.sgml">
+<!entity sect.config.command.permit.anyone SYSTEM "customize/command_permit_anyone.sgml">
+<!entity sect.config.command.rejectall SYSTEM "customize/command_rejectall.sgml">
+<!entity sect.config.mailmagazine SYSTEM "customize/mailmagazine.sgml">
+<!entity sect.config.post.permit.anyone SYSTEM "customize/post_permit_anyone.sgml">
+
+<!entity sect.config.ml.hier SYSTEM "customize/ml.hier.ml">
+
+<!entity sect.customize.casestudies SYSTEM "customize/case_studies.sgml">
+
+
+
+<!entity recipe.header.tag.uppercase SYSTEM "customize/recipe.header.tag.uppercase.sgml">
+<!entity recipe.header.tag.lowercase SYSTEM "customize/recipe.header.tag.lowercase.sgml">
+
+<!-- filter -->
+<!entity chapter.customize.filter SYSTEM "customize/filter.sgml">
+<!entity recipe.filter.notice SYSTEM "customize/recipe.filter.notice.sgml">
+<!entity chapter.filter SYSTEM "internals/filter.sgml">
+<!entity var.filter.rules SYSTEM "variables/filter.rules.sgml">
+<!entity var.filter.size SYSTEM "variables/filter.size.sgml">
+
+
+<!entity sect.usage.guide SYSTEM "usage/guide.sgml">
+<!entity sect.usage.subscribe SYSTEM "usage/subscribe.sgml">
+<!entity sect.usage.unsubscribe SYSTEM "usage/unsubscribe.sgml">
+<!entity sect.usage.get SYSTEM "usage/get.sgml">
+<!entity sect.usage.help SYSTEM "usage/help.sgml">
+<!entity sect.usage.post SYSTEM "usage/post.sgml">
+<!entity sect.usage.command SYSTEM "usage/command.sgml">
+<!entity sect.usage.procmail SYSTEM "setup/procmail.sgml">
+<!entity sect.usage.makefml SYSTEM "usage/makefml.sgml">
+<!entity sect.usage.fml SYSTEM "usage/fml.sgml">
+<!entity sect.usage.fmladdr SYSTEM "usage/fmladdr.sgml">
+<!entity sect.usage.fmlalias SYSTEM "usage/fmlalias.sgml">
+<!entity sect.usage.fmlconf SYSTEM "usage/fmlconf.sgml">
+<!entity sect.usage.fmldoc SYSTEM "usage/fmldoc.sgml">
+<!entity sect.usage.fmlthread SYSTEM "usage/fmlthread.sgml">
+<!entity sect.usage.fmlhtmlify SYSTEM "usage/fmlhtmlify.sgml">
+<!entity sect.usage.fmlsummary SYSTEM "usage/fmlsummary.sgml">
+
+
+<!-- command -->
+<!entity chapter.command SYSTEM "command/chapter.sgml">
+<!entity sect.command.dataflow SYSTEM "command/dataflow.sgml">
+<!entity sect.command.internal SYSTEM "command/internal.sgml">
+<!entity sect.command.extension SYSTEM "command/extension.sgml">
+<!entity sect.command.module SYSTEM "command/module.sgml">
+
+
+<!-- ? ;-) -->
+<!entity chapter.directory SYSTEM "internals/directory.sgml">
+<!entity chapter.db SYSTEM "internals/db.sgml">
+<!entity chapter.db.modules SYSTEM "internals/db_modules.sgml">
+<!entity chapter.dbms SYSTEM "internals/dbms.sgml">
+<!entity chapter.hook SYSTEM "internals/hook.sgml">
+<!entity chapter.policy SYSTEM "policy.sgml">
+
+<!entity chapter.filename SYSTEM "internals/filename.sgml">
+
+<!entity chapter.userctl SYSTEM "internals/userctl.sgml">
+
+
+
+<!-- delivery -->
+<!entity chapter.delivery SYSTEM "delivery/chapter.sgml">
+<!entity sect.mailqueue SYSTEM "delivery/queue.sgml">
+
+<!-- digest -->
+<!entity chapter.digest SYSTEM "digest/chapter.sgml">
+
+
+<!entity recipe.delivery.forward SYSTEM "delivery/recipe.forward.sgml">
+
+
+<!-- internals -->
+<!entity chapter.bootloader SYSTEM "internals/bootloader.sgml">
+<!entity sect.main.cf SYSTEM "internals/main.cf.sgml">
+<!entity chapter.internal.cgi SYSTEM "internals/cgi.sgml">
+<!entity chapter.programingstyle SYSTEM "internals/style.sgml">
+<!entity chapter.design SYSTEM "internals/design.sgml">
+<!entity chapter.config.cf SYSTEM "internals/config.cf.sgml">
+<!entity chapter.restriction SYSTEM "internals/restriction.sgml">
+<!entity chapter.credential SYSTEM "internals/credential.sgml">
+<!entity chapter.lock SYSTEM "internals/lock.sgml">
+<!entity chapter.io.abstraction SYSTEM "internals/io_abstraction.sgml">
+
+<!entity chapter.virtual SYSTEM "virtual/chapter.sgml">
+
+<!-- variable list -->
+<!entity var.table.list.variables SYSTEM "variables/list.sgml">
+<!entity var.table.class.variables SYSTEM "variables/class.sgml">
+
+<!-- -->
+<!entity chapter.struct SYSTEM "internals/struct.sgml">
+<!entity struct.curproc SYSTEM "internals/CURPROC.sgml">
+
+
+
+<!-- message -->
+<!entity chapter.message SYSTEM "message/chapter.sgml">
+<!entity sect.message.nl SYSTEM "message/language.sgml">
+<!entity sect.message.discuss SYSTEM "message/discussion.sgml">
+
+
+<!-- development -->
+<!entity chapter.cvstree SYSTEM "devel/cvstree.sgml">
+<!entity chapter.cvstags SYSTEM "devel/cvstags.sgml">
+<!entity chapter.docbook SYSTEM "devel/docbook.sgml">
+<!entity chapter.inet6 SYSTEM "devel/inet6.sgml">
+<!entity chapter.program.create SYSTEM "devel/create_program.sgml">
+
+
+<!-- misc -->
+<!entity chapter.threadtrack SYSTEM "threadtrack/chapter.sgml">
+<!entity sect.threadtrack.states SYSTEM "threadtrack/states.sgml">
+<!entity sect.threadtrack.model SYSTEM "threadtrack/model.sgml">
+<!entity sect.threadtrack.db SYSTEM "threadtrack/db.sgml">
+<!entity chapter.threadtrack.tools SYSTEM "threadtrack/tools.sgml">
+
+
+<!-- Appendix -->
+<!entity chapter.glossary SYSTEM "glossary.sgml">
+
+
+<!-- modules -->
+<!entity chapter.module.io.adapter SYSTEM "module/IO.sgml">
+<!entity chapter.module.mail.message SYSTEM "module/Message.sgml">
+<!entity chapter.module.nl SYSTEM "module/nativelanguage.sgml">
+<!entity chapter.module.create SYSTEM "module/create.sgml">
+<!entity chapter.module.encode SYSTEM "module/encode.sgml">
+
+
+
+<!-- trouble shoot -->
+<!entity chapter.troubleshoot SYSTEM "troubleshoot/chapter.sgml">
+
+<!entity recipe.version SYSTEM "troubleshoot/recipe.version.sgml">
+<!entity recipe.listup.addresses SYSTEM "troubleshoot/recipe.listup.addresses.sgml">
+<!entity recipe.listup.aliases SYSTEM "troubleshoot/recipe.listup.aliases.sgml">
diff --git a/fml/doc/en/tutorial/include/terms.sgml b/fml/doc/en/tutorial/include/terms.sgml
new file mode 100644
index 00000000..7d2380e5
--- /dev/null
+++ b/fml/doc/en/tutorial/include/terms.sgml
@@ -0,0 +1,35 @@
+<!--
+ $FML$
+ $jaFML: terms.sgml,v 1.3 2002/07/02 10:39:34 fukachan Exp $
+-->
+
+<sect1 id="terms">
+
+<title> terms in tutorial </title>
+
+<variablelist>
+
+ <varlistentry>
+ <term> % </term>
+ <listitem>
+ <para> user prompt </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term> # </term>
+ <listitem>
+ <para> root prompt </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term> fml4 </term>
+ <listitem>
+ <para> &fml4; series </para>
+ </listitem>
+ </varlistentry>
+
+</variablelist>
+
+</sect1>
diff --git a/fml/doc/en/tutorial/install/download.sgml b/fml/doc/en/tutorial/install/download.sgml
new file mode 100644
index 00000000..77b79453
--- /dev/null
+++ b/fml/doc/en/tutorial/install/download.sgml
@@ -0,0 +1,87 @@
+<!--
+# $FML$
+ $jaFML: download.sgml,v 1.2 2002/07/06 14:55:17 fukachan Exp $
+-->
+
+<chapter id="download">
+ <title>
+ Download &fmldevel; source code.
+ </title>
+
+
+<!-- ==================================================== -->
+<sect1 id="ftp.fml.org">
+ <title>
+ Download via ftp.
+ </title>
+
+<para>
+You can find &fml8; source at
+ <ulink url="ftp://ftp.fml.org/pub/fml-devel/">
+ ftp://ftp.fml.org/pub/fml-devel/
+ </ulink>.
+You can get it by ftp.
+</para>
+
+<para>
+We build snapshot as a tarball in some interval.
+The file name contains date such as YYYYMMDD form.
+Please get the latest one.
+</para>
+
+<para>
+Also, you can find a daily snapshot at
+<ulink url="ftp://ftp.fml.org/pub/fml/daily-snapshots/fml-devel/source/">
+ftp://ftp.fml.org/pub/fml/daily-snapshots/fml-devel/source/
+</ulink>.
+This snapshot is auto-build.
+So it may not work well.
+</para>
+
+</sect1>
+
+
+<!-- ==================================================== -->
+<sect1 id="anoncvs">
+ <title>
+ Access to cvs.
+ </title>
+
+<para>
+You can find &fmldevel; under /fmlsrc in anoncvs.fml.org.
+</para>
+
+<para>
+If you have cvs account of cvs.fml.org, use cvs over ssh.
+<screen>
+cvs -d cvs.fml.org:/cvsroot co fmlsrc
+</screen>
+</para>
+
+</sect1>
+
+
+<!-- ==================================================== -->
+<sect1 id="cvsweb">
+ <title>
+ Access to cvs via cvsweb.
+ </title>
+
+<para>
+<ulink url="http://www.fml.org/cvsweb/fmlsrc/">
+http://www.fml.org/cvsweb/fmlsrc/
+</ulink>
+provides the cvs acesss via web interface.
+</para>
+
+<warning>
+<para>
+It is useful to retrieve the specified version of the file.
+Instead, it is not useful to get the whole source.
+</para>
+</warning>
+
+</sect1>
+
+
+</chapter>
diff --git a/fml/doc/en/tutorial/install/fml_on_nt.sgml b/fml/doc/en/tutorial/install/fml_on_nt.sgml
new file mode 100644
index 00000000..249b0cf3
--- /dev/null
+++ b/fml/doc/en/tutorial/install/fml_on_nt.sgml
@@ -0,0 +1,17 @@
+<!--
+ $FML$
+ $jaFML: fml_on_nt.sgml,v 1.3 2003/04/15 14:51:39 fukachan Exp $
+-->
+
+<chapter id="install.fml.nt">
+ <title>
+ &fmldevel; installation on Microsft 2000/NT
+ </title>
+
+<warning>
+<para>
+not yet implemented.
+</para>
+</warning>
+
+</chapter>
diff --git a/fml/doc/en/tutorial/install/postfix.sgml b/fml/doc/en/tutorial/install/postfix.sgml
new file mode 100644
index 00000000..8117b929
--- /dev/null
+++ b/fml/doc/en/tutorial/install/postfix.sgml
@@ -0,0 +1,76 @@
+<!--
+ $FML$
+ $jaFML: postfix.sgml,v 1.3 2003/04/15 14:51:39 fukachan Exp $
+-->
+
+<sect1 id="install.postfix">
+ <title>
+ MTA configuration (postfix)
+ </title>
+
+
+<sect2>
+ <title>
+ default domain (example: fml.org)
+ </title>
+
+
+<para>
+set up /etc/postfix/main.cf like this:
+<screen>
+allow_mail_to_commands = alias,forward,include
+
+alias_maps = hash:/etc/mail/aliases
+ hash:/var/spool/ml/etc/mail/aliases
+</screen>
+</para>
+
+<warning>
+<para>
+Please check that $mydestination contains the default domain (may be
+$mydomain).
+</para>
+</warning>
+
+</sect2>
+
+
+<sect2>
+ <title>
+ virtual domain (example: nuinui.net)
+ </title>
+
+<para>
+You need to edit both main.cf and virtual_map.
+<screen>
+allow_mail_to_commands = alias,forward,include
+
+alias_maps = hash:/etc/mail/aliases
+ hash:/var/spool/ml/etc/mail/aliases
+ hash:/var/spool/nuinui.net/etc/mail/aliases
+
+virtual_maps = hash:/var/spool/nuinui.net/etc/postfix/virtual
+
+</screen>
+/var/spool/nuinui.net/etc/postfix/virtual is updated by makefml
+automatically.
+</para>
+
+<warning>
+
+<para>
+$mydestination should contain the default domain (may be $mydomain)
+but not virtual domain. Please see postfix document for more details.
+</para>
+
+<para>
+When a new virtual domain is added,
+add the new aliases file to $alias_maps but do not edit virtual_maps.
+</para>
+
+</warning>
+
+</sect2>
+
+
+</sect1>
diff --git a/fml/doc/en/tutorial/install/qmail.sgml b/fml/doc/en/tutorial/install/qmail.sgml
new file mode 100644
index 00000000..0248fee4
--- /dev/null
+++ b/fml/doc/en/tutorial/install/qmail.sgml
@@ -0,0 +1,70 @@
+<!--
+ $FML$
+ $jaFML: qmail.sgml,v 1.3 2003/04/15 14:51:39 fukachan Exp $
+-->
+
+<sect1 id="install.qmail">
+ <title>
+ MTA configuration (qmail)
+ </title>
+
+<warning>
+<para>
+&fmldevel; assumes that qmail configurations is based on
+/var/qmail/control/virtualdomains always regardless of the default
+domain or not.
+</para>
+</warning>
+
+<para>
+The template of /var/qmail/control/virtualdomains is created at
+/var/spool/ml/etc/qmail by makefml.
+</para>
+
+
+<sect2>
+ <title>
+ The default domain (example: fml.org)
+ </title>
+
+<para>
+At
+<screen>
+/var/qmail/control/virtualdomains
+</screen>
+specify the following rule
+<screen>
+fml.org:fml-fml.org
+</screen>
+.
+"makefml newml" can set up ~/.qmail-* automatically.
+</para>
+
+<para>
+See
+<link linkend="setup.qmail.aliases">
+the section on "makefml newml and qmail"
+</link>
+for ~/.qmail-* "makefml newml" creates.
+</para>
+
+</sect2>
+
+
+<sect2>
+ <title>
+ virtual domain (example: nuinui.net)
+ </title>
+
+<para>
+For nuinui.net domain, not the default one, specify
+<screen>
+nuinui.net:fml-nuinui.net
+</screen>
+at /var/qmail/control/virtualdomains.
+</para>
+
+</sect2>
+
+
+</sect1>
diff --git a/fml/doc/en/tutorial/install/upgrade.sgml b/fml/doc/en/tutorial/install/upgrade.sgml
new file mode 100644
index 00000000..a608319d
--- /dev/null
+++ b/fml/doc/en/tutorial/install/upgrade.sgml
@@ -0,0 +1,48 @@
+<!--
+ $FML$
+ $jaFML: upgrade.sgml,v 1.3 2003/04/15 14:51:39 fukachan Exp $
+-->
+
+<chapter>
+ <title>
+ upgrade/downgrade
+ </title>
+
+<sect1 id="upgrade">
+ <title>
+ upgrade
+ </title>
+
+<para>
+<link linkend="install.fml.unix">
+Install
+</link>
+again.
+</para>
+
+<para>
+After &fml8; installation,
+rewrite fml_version line in /etc/fml/main.cf to the version installed now.
+Just when the file is saved, fml is changed to the new version.
+</para>
+</sect1>
+
+
+<sect1 id="downgrade">
+ <title>
+ downgrade.
+ </title>
+
+<para>
+No need to install. Edit /etc/fml/main.cf to back the fml_version to
+the previous one.
+</para>
+
+<para>
+Just when the file is saved, fml is changed to the new version.
+</para>
+
+</sect1>
+
+
+</chapter>
diff --git a/fml/doc/en/tutorial/internals/CURPROC.sgml b/fml/doc/en/tutorial/internals/CURPROC.sgml
new file mode 100644
index 00000000..e6fc8f2b
--- /dev/null
+++ b/fml/doc/en/tutorial/internals/CURPROC.sgml
@@ -0,0 +1,65 @@
+<para>
+<screen>
+__parent_args => HASH {
+ ARGV => ARRAY
+ argv => ARRAY
+ cf_list => ARRAY
+ fml_version
+ main_cf => HASH
+ module_info => HASH
+ myname
+ need_ml_name
+ options => HASH
+ program_name
+ }
+
+__print_style => 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
+ }
+
+main_cf => HASH {
+ _hints
+ config_dir
+ debug
+ default_command_line_option_config
+ default_config_cf
+ default_config_dir
+ default_domain
+ default_ml_home_prefix
+ default_module_config
+ default_paths_cf
+ domain_default_config
+ exec_prefix
+ executable_prefix
+ fml_group
+ fml_owner
+ fml_version
+ lib_dir
+ libexec_dir
+ local_lib_dir
+ prefix
+ prefix_dir
+ share_dir
+ virtual_maps
+ }
+
+pcb => FML::PCB
+
+scheduler => FML::Process::Scheduler
+
+</screen>
+</para>
diff --git a/fml/doc/en/tutorial/overview/ml.sgml b/fml/doc/en/tutorial/overview/ml.sgml
new file mode 100644
index 00000000..45d9e2d6
--- /dev/null
+++ b/fml/doc/en/tutorial/overview/ml.sgml
@@ -0,0 +1,65 @@
+<!--
+ $FML$
+ $jaFML: ml.sgml,v 1.3 2003/04/15 14:51:43 fukachan Exp $
+-->
+
+<chapter id="overview.ml">
+ <title>
+ mailing list ?
+ </title>
+
+<sect1 id="overview.email">
+ <title>
+ Email
+ </title>
+
+<para>
+Email is an electirc version of mail.
+</para>
+
+<para>
+One email has the following structure: the former is the header, the
+latter is the body. The separator is one null line (empty line).
+<screen>
+From: rudo@nuinui.net
+To: kenken@nuinui.net
+Subject: asobo.
+
+Hi, Kenken. I am Rudo.
+
+// rudo
+</screen>
+See RFC822 and RFC2822 for more details of definitions.
+</para>
+
+</sect1>
+
+
+
+<sect1 id="overview.mailinglist">
+ <title>
+ mailing list (ML)
+ </title>
+
+<para>
+Mailing list (ML) is forwarding mechanism of email.
+The program to do it is called as an ML driver.
+An ML driver receives the email injected via MTA over the network,
+copy it and redistributes it to ML members.
+</para>
+
+<sect2 id="overview.mldriver">
+ <title>
+ model of an ML.
+ </title>
+
+<para>
+<graphic entityref="image.ml"></graphic>
+</para>
+
+</sect2>
+
+</sect1>
+
+
+</chapter>
diff --git a/fml/doc/en/tutorial/terms.sgml b/fml/doc/en/tutorial/terms.sgml
new file mode 100644
index 00000000..be5b7925
--- /dev/null
+++ b/fml/doc/en/tutorial/terms.sgml
@@ -0,0 +1,29 @@
+<!--
+# $FML$
+ $jaFML: terms.sgml,v 1.5 2003/04/15 14:51:35 fukachan Exp $
+-->
+
+<sect1 id="terms">
+ <title>
+ Technical terms in this tutorial
+ </title>
+
+<variablelist>
+
+ <varlistentry>
+ <term> % </term>
+ <listitem>
+ <para> prompt of a user on the shell </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term> # </term>
+ <listitem>
+ <para> prompt of the user root </para>
+ </listitem>
+ </varlistentry>
+
+</variablelist>
+
+</sect1>
diff --git a/fml/doc/en/tutorial/troubleshoot/chapter.sgml b/fml/doc/en/tutorial/troubleshoot/chapter.sgml
new file mode 100644
index 00000000..d91c5eed
--- /dev/null
+++ b/fml/doc/en/tutorial/troubleshoot/chapter.sgml
@@ -0,0 +1,25 @@
+<!--
+ $FML$
+ $jaFML: chapter.sgml,v 1.3 2002/11/09 14:16:19 fukachan Exp $
+-->
+
+
+<chapter id="troubleshoot">
+ <title>
+ troubleshoot
+ </title>
+
+
+<qandaset>
+
+&recipe.version;
+&recipe.listup.addresses;
+&recipe.listup.aliases;
+
+</qandaset>
+
+
+</chapter>
+
+
+
diff --git a/fml/doc/en/tutorial/variables/class.sgml b/fml/doc/en/tutorial/variables/class.sgml
new file mode 100644
index 00000000..d9a046a4
--- /dev/null
+++ b/fml/doc/en/tutorial/variables/class.sgml
@@ -0,0 +1,647 @@
+<para>
+<screen>
+__exceptional__ {
+ ? $timezone
+}
+
+admin {
+
+ admin_command {
+ $admin_command_restrictions
+ }
+
+ 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_base_dir
+ }
+}
+
+admin_command {
+
+ admin_command {
+ }
+}
+
+article {
+
+ article_delivery {
+ $use_article_delivery
+ }
+
+ 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_size_filter {
+ $article_size_filter_rules
+ $use_article_size_filter
+ }
+
+ article_text_plain_filter {
+ $article_text_plain_filter_rules
+ $use_article_text_plain_filter
+ }
+
+ article_* {
+ $article_sequence_file
+ ? $article_subject_tag
+ }
+}
+
+body {
+
+ body_loop_check {
+ $body_loop_check_rules
+ $use_body_loop_check
+ }
+
+ body_* {
+ $body_cksum_cache_dir
+ }
+}
+
+cgi {
+
+ cgi_* {
+ $cgi_base_dir
+ ? $cgi_charset
+ ? $cgi_main_menu_color
+ $cgi_menu_default_map
+ ? $cgi_menu_map_list
+ ? $cgi_navigation_bar_color
+ }
+}
+
+chaddr_command {
+
+ chaddr_command {
+ $chaddr_command_auth_type
+ }
+}
+
+command {
+
+ command_mail {
+ $command_mail_line_length_limit
+ $use_command_mail_program
+ }
+
+ 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_size_filter {
+ $command_mail_size_filter_rules
+ $use_command_mail_size_filter
+ }
+
+ command_mail_valid_command {
+ $command_mail_valid_command_limit
+ }
+
+ command_* {
+ ? $command_prompt
+ $command_restrictions
+ }
+}
+
+confirm_command {
+
+ confirm_command {
+ ? $confirm_command_prefix
+ }
+}
+
+default {
+
+ default_* {
+ ? $default_cgi_charset
+ ? $default_charset
+ ? $default_directory_mode
+ ? $default_file_mode
+ $default_mail_body_size_limit
+ $default_mail_header_size_limit
+ ? $default_message_subject
+ ? $default_umask
+ }
+}
+
+digest {
+
+ digest {
+ $digest_sequence_file
+ $use_digest_program
+ }
+
+ 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
+ }
+}
+
+directory {
+
+ directory_* {
+ ? $directory_private_mode
+ ? $directory_public_mode
+ }
+}
+
+distribute {
+
+ distribute {
+ $use_distribute_program
+ }
+}
+
+domain {
+
+ domain_* {
+ $domain_config_base_dir
+ $domain_exim_config_dir
+ $domain_mail_config_dir
+ $domain_postfix_config_dir
+ $domain_procmail_config_dir
+ $domain_qmail_config_dir
+ $domain_sendmail_config_dir
+ }
+}
+
+error {
+
+ error_analyzer {
+ $error_analyzer_cache_dir
+ ? $error_analyzer_cache_mode
+ ? $error_analyzer_cache_size
+ $error_analyzer_cache_type
+ ? $error_analyzer_function
+ ? $error_analyzer_function_list
+ $error_analyzer_simple_count_limit
+ $use_error_analyzer_program
+ }
+}
+
+get_command {
+
+ get_command {
+ $get_command_request_limit
+ }
+}
+
+has {
+
+ has_* {
+ $has_alarm
+ $has_fork
+ $has_getpwgid
+ $has_getpwuid
+ $has_select
+ }
+}
+
+header {
+
+ header_loop_check {
+ $header_loop_check_rules
+ $use_header_loop_check
+ }
+}
+
+html {
+
+ html_archive {
+ $html_archive_dir
+ $html_archive_index_order_type
+ $use_html_archive
+ }
+}
+
+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_cache {
+ $incoming_mail_cache_dir
+ ? $incoming_mail_cache_size
+ $use_incoming_mail_cache
+ }
+}
+
+ldap {
+
+ ldap_* {
+ ? $ldap_query_filter
+ ? $ldap_search_base
+ ? $ldap_server_bind
+ ? $ldap_server_password
+ ? $ldap_servers
+ }
+}
+
+lock {
+
+ lock {
+ $lock_dir
+ $lock_file
+ $lock_type
+ $use_lock
+ }
+}
+
+log {
+
+ log {
+ $log_dir
+ $log_file
+ $log_format_type
+ $log_type
+ $use_log
+ }
+}
+
+mail {
+
+ mail_* {
+ $mail_aliases_file
+ $mail_queue_dir
+ }
+}
+
+maintainer {
+
+ maintainer_recipient {
+ $maintainer_recipient_maps
+ }
+
+ maintainer_* {
+ ? $maintainer
+ }
+}
+
+member {
+
+ member {
+ $member_maps
+ $primary_member_map
+ }
+}
+
+message_template {
+
+ message_template_* {
+ $message_template_dir
+ }
+}
+
+ml_local {
+
+ ml_local_* {
+ $ml_local_dir
+ $ml_local_lib_dir
+ $ml_local_message_template_dir
+ $ml_local_share_dir
+ }
+}
+
+moderator {
+
+ moderator_member {
+ $moderator_member_maps
+ $primary_moderator_member_map
+ }
+
+ moderator_recipient {
+ $moderator_recipient_maps
+ $primary_moderator_recipient_map
+ }
+}
+
+newml_command {
+
+ newml_command {
+ $newml_command_init_private_dirs
+ $newml_command_init_public_dirs
+ ? $newml_command_mta_config_list
+ $newml_command_postfix_template_files
+ $newml_command_qmail_template_files
+ $newml_command_template_files
+ }
+}
+
+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
+ }
+}
+
+path {
+
+ path_* {
+ $path_bunzip2
+ $path_bzip2
+ $path_cksum
+ $path_compress
+ $path_gpg
+ $path_gunzip
+ $path_gzcat
+ $path_gzip
+ $path_ish
+ $path_kakasi
+ $path_less
+ $path_lha
+ $path_ls
+ $path_makemap
+ $path_md5
+ $path_more
+ $path_namazu
+ $path_newaliases
+ $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_w3m
+ $path_zcat
+ }
+}
+
+postfix {
+
+ postfix_* {
+ ? $postfix_verp_delimiters
+ $postfix_virtual_map_file
+ }
+}
+
+privileged_command {
+
+ privileged_command {
+ ? $privileged_command_prefix
+ }
+}
+
+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
+ }
+}
+
+report_mail {
+}
+
+rmml_command {
+
+ rmml_command {
+ ? $rmml_command_mta_config_list
+ }
+}
+
+sendmail {
+
+ sendmail_* {
+ $sendmail_virtual_map_file
+ }
+}
+
+smtp {
+
+ smtp_* {
+ ? $smtp_sender
+ ? $smtp_servers
+ }
+}
+
+spool {
+
+ spool {
+ $spool_dir
+ ? $spool_subdir_unit
+ $spool_type
+ $use_spool
+ }
+}
+
+sql {
+
+ sql_* {
+ ? $sql_add
+ ? $sql_database
+ ? $sql_delete
+ ? $sql_find
+ ? $sql_get_next_key
+ ? $sql_getline
+ ? $sql_password
+ ? $sql_server
+ ? $sql_table
+ ? $sql_user
+ }
+}
+
+subscribe_command {
+
+ subscribe_command {
+ $subscribe_command_auth_type
+ }
+}
+
+system {
+
+ system_* {
+ ? $system_accounts
+ }
+}
+
+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
+ }
+}
+
+unsubscribe_command {
+
+ unsubscribe_command {
+ $unsubscribe_command_auth_type
+ }
+}
+
+x {
+
+ x_* {
+ ? $x_ml_name
+ }
+}
+
+
+_file$ {
+ $guide_file
+ $help_file
+ $objective_file
+ $sequence_file
+ $summary_file
+}
+
+_dir$ {
+ $db_dir
+ $event_queue_dir
+ $listinfo_base_dir
+ $listinfo_dir
+ $listinfo_template_dir
+ $message_id_cache_dir
+ $ml_admin_cgi_base_dir
+ $shared_db_dir
+ $tmp_dir
+ $udb_base_dir
+ $var_dir
+}
+
+
+*** unclassified ***
+ ? $commands_for_admin
+ ? $commands_for_admin_cgi
+ ? $commands_for_privileged_user
+ ? $commands_for_stranger
+ ? $commands_for_user
+ ? $list_addresses
+ $post_restrictions
+ $post_restrictions_reject_notice_data_type
+ ? $reply_message_charset
+ ? $reply_message_subject
+ ? $summary_format_address_length
+ ? $summary_format_style
+ ? $template_file_charset
+ ? $unsafe_header_fields
+</screen>
+</para>