summaryrefslogtreecommitdiff
path: root/fml/doc/en/tutorial/customize
diff options
context:
space:
mode:
authorfukachan <fukachan>2003-07-26 07:31:27 +0000
committerfukachan <fukachan>2003-07-26 07:31:27 +0000
commitc4d052f52ad6631ddd8891c49d158f990b1bce60 (patch)
treed106f5e25bbd5e57a1c28902bab03e02ccc9abee /fml/doc/en/tutorial/customize
parenta4dd4a4cce04c1578cea2b21e54982ec3ea1ee2f (diff)
downloadfml8-c4d052f52ad6631ddd8891c49d158f990b1bce60.tar.gz
fml8-c4d052f52ad6631ddd8891c49d158f990b1bce60.tar.bz2
fml8-c4d052f52ad6631ddd8891c49d158f990b1bce60.zip
translated
Diffstat (limited to 'fml/doc/en/tutorial/customize')
-rw-r--r--fml/doc/en/tutorial/customize/autoreply.sgml39
-rw-r--r--fml/doc/en/tutorial/customize/case_studies.sgml106
-rw-r--r--fml/doc/en/tutorial/customize/chapter.command.sgml30
-rw-r--r--fml/doc/en/tutorial/customize/chapter.config.sgml29
-rw-r--r--fml/doc/en/tutorial/customize/chapter.header.sgml34
-rw-r--r--fml/doc/en/tutorial/customize/chapter.message.sgml30
-rw-r--r--fml/doc/en/tutorial/customize/chapter.ml_style.sgml25
-rw-r--r--fml/doc/en/tutorial/customize/command_permit_anyone.sgml20
-rw-r--r--fml/doc/en/tutorial/customize/command_rejectall.sgml32
-rw-r--r--fml/doc/en/tutorial/customize/filter.sgml17
-rw-r--r--fml/doc/en/tutorial/customize/mailmagazine.sgml44
-rw-r--r--fml/doc/en/tutorial/customize/post_permit_anyone.sgml30
-rw-r--r--fml/doc/en/tutorial/customize/recipe.filter.notice.sgml53
-rw-r--r--fml/doc/en/tutorial/customize/recipe.header.tag.lowercase.sgml23
-rw-r--r--fml/doc/en/tutorial/customize/recipe.header.tag.uppercase.sgml23
15 files changed, 535 insertions, 0 deletions
diff --git a/fml/doc/en/tutorial/customize/autoreply.sgml b/fml/doc/en/tutorial/customize/autoreply.sgml
new file mode 100644
index 00000000..4c891b83
--- /dev/null
+++ b/fml/doc/en/tutorial/customize/autoreply.sgml
@@ -0,0 +1,39 @@
+<!--
+ $FML$
+ $jaFML: autoreply.sgml,v 1.2 2003/01/05 08:00:59 fukachan Exp $
+-->
+
+<sect1 id="config.autoreply">
+ <title>
+ case study: auto file responder
+ </title>
+
+<para>
+Modify delivery process ( libexec/distribute ) to send back
+/etc/fml/help file. For example, when a user can send anything to
+help@fml.org, fml sends back help file to the sender.
+</para>
+
+<para>
+In this case, set at config.cf
+<screen>
+post_restrictions = permit_anyone
+</screen>
+and define the following hook after =cut line.
+<screen>
+$distribute_run_start_hook = q{
+
+ $curproc->reply_message( {
+ type => "text/plain; charset=iso-2022-jp",
+ path => "/etc/fml/help",
+ filename => "help",
+ disposition => "help example",
+ });
+
+ $curproc->refuse_further_processing();
+
+};
+</screen>
+</para>
+
+</sect1>
diff --git a/fml/doc/en/tutorial/customize/case_studies.sgml b/fml/doc/en/tutorial/customize/case_studies.sgml
new file mode 100644
index 00000000..4294cdd9
--- /dev/null
+++ b/fml/doc/en/tutorial/customize/case_studies.sgml
@@ -0,0 +1,106 @@
+<!--
+ $FML$
+ $jaFML: case_studies.sgml,v 1.4 2003/04/15 14:51:36 fukachan Exp $
+-->
+
+
+<sect1 id="sect.casestudy.01">
+ <title>
+ case study: office (1)
+ </title>
+
+<para>
+no tag of subject.
+<footnote>
+<para>
+This is default in &fml8;.
+</para>
+</footnote>
+<screen>
+article_header_rewrite_rules -= rewrite_article_subject_tag
+</screen>
+</para>
+
+<para>
+Prepend office# at X-ML-Name:. That is,
+mlname is changed to office#mlname.
+<screen>
+# office#$mlname
+x_ml_name = office#$ml_name
+</screen>
+</para>
+
+<para>
+Anybody can post to this ML since customers send mail to here.
+<screen>
+post_restrictions = permit_anyone
+</screen>
+Disale almost all filters.
+<screen>
+use_body_filter = no
+use_article_body_filter = no
+use_article_non_mime_filter = no
+use_article_mime_component_filter = no
+use_article_text_plain_filter = no
+</screen>
+</para>
+
+<para>
+change spool type as subdir since the number of articles may become
+over milion.
+<screen>
+spool_type = subdir
+</screen>
+</para>
+
+<para>
+disable command mail.
+<screen>
+use_command_mail_program = no
+</screen>
+To enable the use of command mail by CGI, we use this variable.
+It is recommended to remove proper alias entries if could.
+</para>
+
+</sect1>
+
+
+<sect1 id="sect.casestudy.02">
+ <title>
+ case study: office (2)
+ </title>
+
+<para>
+Edit /etc/fml/site_default_config.cf and reflects all ML's.
+</para>
+
+<para>
+Add uppercase-ed ML name to the article subject tag.
+<screen>
+article_subject_tag = (\U$ml_name\E %05d)
+</screen>
+For example, an article of support@example.co.jp has the tag
+<screen>
+Subject: (SUPPORT 10000)
+</screen>
+.
+</para>
+
+<para>
+Allow the use of command mail, which comes only from the specific
+domain (my domain e.g. example.co.jp). This hook enables it.
+<screen>
+$command_verify_request_end_hook = q{
+ my $cred = $curproc->{ credential };
+ my $from = $cred->sender();
+
+ unless ($from =~ /\@example\.co\.jp/i) {
+ $curproc->stop_this_process();
+ LogError("deny command request from $from");
+ }
+};
+</screen>
+</para>
+
+
+</sect1>
diff --git a/fml/doc/en/tutorial/customize/chapter.command.sgml b/fml/doc/en/tutorial/customize/chapter.command.sgml
new file mode 100644
index 00000000..7af1cf35
--- /dev/null
+++ b/fml/doc/en/tutorial/customize/chapter.command.sgml
@@ -0,0 +1,30 @@
+<!--
+ $FML$
+ $jaFML: chapter.command.sgml,v 1.1 2002/09/15 01:46:30 fukachan Exp $
+-->
+
+<chapter id="customize.command">
+ <title>
+ Extend command
+ </title>
+
+
+<sect1 id="customize.command.myproc">
+ <title>
+ case study: create your own help command.
+ </title>
+
+<para>
+To extend help command of elena ML.
+Create help.pm perl module at
+<screen>
+/var/spool/ml/elena/local/lib/FML/Command/User/help.pm
+</screen>
+In loading module, libraries under local/ path is preferred. So, this
+help command is loaded for help command (FML::Command::User::help).
+</para>
+
+</sect1>
+
+
+</chapter>
diff --git a/fml/doc/en/tutorial/customize/chapter.config.sgml b/fml/doc/en/tutorial/customize/chapter.config.sgml
new file mode 100644
index 00000000..72a3b25c
--- /dev/null
+++ b/fml/doc/en/tutorial/customize/chapter.config.sgml
@@ -0,0 +1,29 @@
+<!--
+ $FML$
+ $jaFML: chapter.config.sgml,v 1.3 2003/04/15 14:51:36 fukachan Exp $
+-->
+
+<chapter id="config">
+ <title>
+ Modify configuration files
+ </title>
+
+
+<sect1 id="config.sitedefaultconfig.cf">
+ <title>
+ change default for all ML's on thie host
+ </title>
+
+<para>
+Edit /usr/local/etc/fml/site_default_config.cf.
+The format is same as config.cf.
+</para>
+
+<para>
+This file corresponds to site_init.ph of &fml4;.
+</para>
+
+</sect1>
+
+
+</chapter>
diff --git a/fml/doc/en/tutorial/customize/chapter.header.sgml b/fml/doc/en/tutorial/customize/chapter.header.sgml
new file mode 100644
index 00000000..2b87456a
--- /dev/null
+++ b/fml/doc/en/tutorial/customize/chapter.header.sgml
@@ -0,0 +1,34 @@
+<!--
+ $FML$
+ $jaFML: chapter.header.sgml,v 1.3 2003/04/15 14:51:36 fukachan Exp $
+-->
+
+<chapter id="customize.header">
+ <title>
+ header rewriting
+ </title>
+
+<para>
+Header information is stored at FML::Header class object.
+FML::Header class inherits Mail::Header.
+See Mail::Header for method details.
+</para>
+
+
+
+<sect1 id="recipies.cutomize.header">
+ <title>
+ Recipe's
+ </title>
+
+<qandaset>
+
+&recipe.header.tag.uppercase;
+&recipe.header.tag.lowercase;
+
+</qandaset>
+
+</sect1>
+
+
+</chapter>
diff --git a/fml/doc/en/tutorial/customize/chapter.message.sgml b/fml/doc/en/tutorial/customize/chapter.message.sgml
new file mode 100644
index 00000000..48116d8a
--- /dev/null
+++ b/fml/doc/en/tutorial/customize/chapter.message.sgml
@@ -0,0 +1,30 @@
+<!--
+ $FML$
+ $jaFML: chapter.message.sgml,v 1.2 2003/04/15 14:51:36 fukachan Exp $
+-->
+
+<chapter id="customize.message">
+ <title>
+ extend message
+ </title>
+
+
+<sect1 id="customize.message.myproc">
+ <title>
+ case study: customze message
+ </title>
+
+<para>
+Create file at
+<screen>
+/var/spool/ml/elena/local/share/message/$language/class
+</screen>
+See
+/usr/local/share/fml/$version/message/$language/class
+as samples. Copy, cut and paste one of them :)
+</para>
+
+</sect1>
+
+
+</chapter>
diff --git a/fml/doc/en/tutorial/customize/chapter.ml_style.sgml b/fml/doc/en/tutorial/customize/chapter.ml_style.sgml
new file mode 100644
index 00000000..b43ab7bb
--- /dev/null
+++ b/fml/doc/en/tutorial/customize/chapter.ml_style.sgml
@@ -0,0 +1,25 @@
+<!--
+ $FML$
+ $jaFML: chapter.ml_style.sgml,v 1.4 2003/02/16 13:07:15 fukachan Exp $
+-->
+<chapter id="cuctomize">
+ <title>
+ Case studies of customization
+ </title>
+
+
+&sect.config.autoreply;
+&sect.config.command.permit.anyone;
+&sect.config.command.rejectall;
+&sect.config.mailmagazine;
+&sect.config.post.permit.anyone;
+&sect.config.ml.hier;
+
+<!-- procmail -->
+&sect.usage.procmail;
+
+<!-- case studies -->
+&sect.customize.casestudies;
+
+
+</chapter>
diff --git a/fml/doc/en/tutorial/customize/command_permit_anyone.sgml b/fml/doc/en/tutorial/customize/command_permit_anyone.sgml
new file mode 100644
index 00000000..b33fd0b9
--- /dev/null
+++ b/fml/doc/en/tutorial/customize/command_permit_anyone.sgml
@@ -0,0 +1,20 @@
+<!--
+ $FML$
+ $jaFML: command_permit_anyone.sgml,v 1.2 2003/01/05 08:00:59 fukachan Exp $
+-->
+
+<sect1 id="config.command.permitanyone">
+ <title>
+ case study: anyonen can use command mail.
+ </title>
+
+<para>
+$command_restrictions defines who can use command mail.
+By default user registerd as a poster can use command mail.
+To set anyone can use command mail, set
+<screen>
+command_restrictions = permit_anyone
+</screen>
+</para>
+
+</sect1>
diff --git a/fml/doc/en/tutorial/customize/command_rejectall.sgml b/fml/doc/en/tutorial/customize/command_rejectall.sgml
new file mode 100644
index 00000000..aaf44c69
--- /dev/null
+++ b/fml/doc/en/tutorial/customize/command_rejectall.sgml
@@ -0,0 +1,32 @@
+<!--
+ $FML$
+ $jaFML: command_rejectall.sgml,v 1.3 2003/04/15 14:51:36 fukachan Exp $
+-->
+
+<sect1 id="config.command.rejectall">
+ <title>
+ case study: disable command mail
+ </title>
+
+<para>
+It is most safe to remove entries from aliases.
+</para>
+
+<para>
+<screen>
+use_command_mail_program = no
+</screen>
+In this case, /usr/local/libexec/fml/command is kicked off once but
+does not work and exit as soon as possible.
+</para>
+
+<para>
+In another level of rejection, this configuration is possible:
+<screen>
+command_restrictions = reject
+</screen>
+When fml receives the command mail,
+it inform the rejection to the sender.
+</para>
+
+</sect1>
diff --git a/fml/doc/en/tutorial/customize/filter.sgml b/fml/doc/en/tutorial/customize/filter.sgml
new file mode 100644
index 00000000..5baf6c30
--- /dev/null
+++ b/fml/doc/en/tutorial/customize/filter.sgml
@@ -0,0 +1,17 @@
+<!--
+ $FML$
+ $jaFML: filter.sgml,v 1.2 2003/04/13 04:36:11 fukachan Exp $
+-->
+
+<chapter>
+ <title>
+ Firtering
+ </title>
+
+<qandaset>
+
+&recipe.filter.notice;
+
+</qandaset>
+
+</chapter>
diff --git a/fml/doc/en/tutorial/customize/mailmagazine.sgml b/fml/doc/en/tutorial/customize/mailmagazine.sgml
new file mode 100644
index 00000000..1e4168e5
--- /dev/null
+++ b/fml/doc/en/tutorial/customize/mailmagazine.sgml
@@ -0,0 +1,44 @@
+<!--
+ $FML$
+ $jaFML$
+-->
+
+<sect1 id="config.mailmagazine">
+ <title>
+ case study: mail magazine
+ </title>
+
+
+<para>
+Consider asymmetric case of member list (list of persons who can post)
+and recipient list.
+</para>
+
+<para>
+Firstly, remove primary_member_maps from $member_maps. Instead, add
+$ml_home_dir/members-mailmag who can post to $member_maps.
+<screen>
+member_maps = $ml_home_dir/members-mailmag
+</screen>
+</para>
+
+<para>
+In this case, when a new user is subscribed, the user address is added
+to both $ml_home_dir/members and $ml_home_dir/recipinets.
+But $member_maps is defined as $ml_home_dir/members-mailmag.
+$ml_home_dir/members is not used.
+Hence, recipients is updated but the list of posters is unchanged.
+</para>
+
+<warning>
+<para>
+Strictly speaking, this configuration is not enough safe. If somebody
+fakes From: address, he/she can post since fml checks only From:
+address.
+</para>
+</warning>
+
+<para>
+
+
+</sect1>
diff --git a/fml/doc/en/tutorial/customize/post_permit_anyone.sgml b/fml/doc/en/tutorial/customize/post_permit_anyone.sgml
new file mode 100644
index 00000000..f8664a7b
--- /dev/null
+++ b/fml/doc/en/tutorial/customize/post_permit_anyone.sgml
@@ -0,0 +1,30 @@
+<!--
+ $FML$
+ $jaFML: post_permit_anyone.sgml,v 1.3 2003/04/15 14:51:37 fukachan Exp $
+-->
+
+<sect1 id="config.post.permitanyone">
+ <title>
+ case study: anyone can post.
+ </title>
+
+<para>
+<screen>
+post_restrictions = permit_anyone
+</screen>
+$post_restrictions parameter controls who can post to this ML.
+To set this as "permit_anyone", anybody can post.
+</para>
+
+<para>
+By default,
+<screen>
+post_restrictions = reject_system_accounts
+ permit_member_maps
+ reject
+</screen>
+"reject_system_accounts" denys post if
+From: looks like system accounts e.g. root, postmaster.
+</para>
+
+</sect1>
diff --git a/fml/doc/en/tutorial/customize/recipe.filter.notice.sgml b/fml/doc/en/tutorial/customize/recipe.filter.notice.sgml
new file mode 100644
index 00000000..919ec236
--- /dev/null
+++ b/fml/doc/en/tutorial/customize/recipe.filter.notice.sgml
@@ -0,0 +1,53 @@
+<!--
+ $FML$
+ $jaFML: recipe.filter.notice.sgml,v 1.2 2003/04/15 14:51:37 fukachan Exp $
+-->
+
+
+<qandaentry>
+
+<question>
+<para>
+where the mail is sent back to when filter system rejects ?
+</para>
+</question>
+
+<answer>
+
+<para>
+By default, these are defined
+<screen>
+use_article_filter_reject_notice = yes
+article_filter_reject_notice_recipient = maintainer sender
+</screen>
+When the filter system rejects the request,
+fml sends back it to the ML maintainer not the sender.
+</para>
+
+
+<para>
+To change the recipient to the sender (From: address), set
+<screen>
+article_filter_reject_notice_recipient = sender
+</screen>
+</para>
+
+
+<para>
+To notify the rejection to both ML maintainer and the sender, set
+<screen>
+article_filter_reject_notice_recipient = maintainer sender
+</screen>
+</para>
+
+
+<para>
+To disable notification of rejection, set
+<screen>
+use_article_filter_reject_notice = no
+</screen>
+</para>
+
+</answer>
+
+</qandaentry>
diff --git a/fml/doc/en/tutorial/customize/recipe.header.tag.lowercase.sgml b/fml/doc/en/tutorial/customize/recipe.header.tag.lowercase.sgml
new file mode 100644
index 00000000..5089baf5
--- /dev/null
+++ b/fml/doc/en/tutorial/customize/recipe.header.tag.lowercase.sgml
@@ -0,0 +1,23 @@
+<!--
+ $FML$
+ $jaFML: recipe.header.tag.lowercase.sgml,v 1.1 2002/10/29 03:32:21 fukachan Exp $
+-->
+
+
+<qandaentry>
+
+<question>
+<para>
+lower the tag in article Subject:
+</para>
+</question>
+
+<answer>
+<para>
+<screen>
+article_subject_tag = [\L$ml_name\E:%05d]
+</screen>
+</para>
+</answer>
+
+</qandaentry>
diff --git a/fml/doc/en/tutorial/customize/recipe.header.tag.uppercase.sgml b/fml/doc/en/tutorial/customize/recipe.header.tag.uppercase.sgml
new file mode 100644
index 00000000..7c0a6af9
--- /dev/null
+++ b/fml/doc/en/tutorial/customize/recipe.header.tag.uppercase.sgml
@@ -0,0 +1,23 @@
+<!--
+ $FML$
+ $jaFML: recipe.header.tag.uppercase.sgml,v 1.1 2002/10/29 03:32:21 fukachan Exp $
+-->
+
+
+<qandaentry>
+
+<question>
+<para>
+upper the tag in article Subject:
+</para>
+</question>
+
+<answer>
+<para>
+<screen>
+article_subject_tag = [\U$ml_name\E:%05d]
+</screen>
+</para>
+</answer>
+
+</qandaentry>