variable list (cf/MANIFEST)

    [Index]

         Fundamental Configuration (CF Version, debug, Language)
         Mailing List Policy (for Post, Commands), Maintainer
         Directory
         Manual Registration
         Automatic Registration
         Confirmd
         Remote Administration
         Moderations; moderators check posted articles
         Security
         Header Customization
         Commands, Command Traps, File Operations (e.g. mget)
         Digest/Matome Okuri Configurations
         Other Files for Configurations and Logs
         SMTP and Delivery
         MISC
         Expire and Archive
         Library Commands
         Html Configurations
         Interface to DataBase Management System
         Interface to other Services (http,ftp,gopher,www)
         Architecture Dependence

    * Fundamental Configuration (CF Version, debug, Language)

    $LANGUAGE
       fml 3.0 generates template files, $DIR/{help,welcome} in $LANGUAGE
       in "makefml newml". You define this variable in installation.
       The value is controlled by /usr/local/fml/.fml/system.
       value: Japanese/English

    $MESSAGE_LANGUAGE
       Error message language fml returns.
       If $MESSAGE_LANGUAGE is not defined, fml 3.0 uses $LANGUAGE.
       &Mesg() tries to translate the given message to this language.
       value: Japanese/English

    $DOMAINNAME
       fml automatically set up DNS for this host, but check it again by yourself.

       DOMAINNAME the domain name              e.g. fml.org
       FQDN       Fully Qualified Domain Name  e.g. beth.fml.org

       value: string

    $FQDN
       fml automatically set up DNS for this host, but check it again by yourself.

       DOMAINNAME the domain name              e.g. fml.org
       FQDN       Fully Qualified Domain Name  e.g. beth.fml.org

       value: string

    * Mailing List Policy (for Post, Commands), Maintainer

    $MAIL_LIST

       $MAIL_LIST is the address for post. For example 'elena@fml.org'.

       $PERMIT_POST_FROM is one of "anyone", "members_only" and "moderator".
       It defines who can post to this ML.
       When post from not a member is rejected,
       fml calls $REJECT_POST_HANDLER.
       $REJECT_POST_HANDLER is one of "reject", "auto_subscribe" and "ignore".
       HISTORY: you can use "auto_regist" used in fml 2.x.

       value: string

    $PERMIT_POST_FROM

       $MAIL_LIST is the address for post. For example 'elena@fml.org'.

       $PERMIT_POST_FROM is one of "anyone", "members_only" and "moderator".
       It defines who can post to this ML.
       When post from not a member is rejected,
       fml calls $REJECT_POST_HANDLER.
       $REJECT_POST_HANDLER is one of "reject", "auto_subscribe" and "ignore".
       HISTORY: you can use "auto_regist" used in fml 2.x.

       value: string

    $REJECT_POST_HANDLER

       $MAIL_LIST is the address for post. For example 'elena@fml.org'.

       $PERMIT_POST_FROM is one of "anyone", "members_only" and "moderator".
       It defines who can post to this ML.
       When post from not a member is rejected,
       fml calls $REJECT_POST_HANDLER.
       $REJECT_POST_HANDLER is one of "reject", "auto_subscribe" and "ignore".
       HISTORY: you can use "auto_regist" used in fml 2.x.

       value: string

    $CONTROL_ADDRESS
       $CONTROL_ADDRESS is the address you send a command request to.
       For example 'elena-ctl@fml.org'.

       $PERMIT_COMMAND_FROM is one of "anyone", "members_only" and "moderator".
       It defines who can post to this ML.
       When command request from not a member is rejected,
       fml calls $REJECT_COMMAND_HANDLER.

       $REJECT_COMMAND_HANDLER is one of "reject", "auto_subscribe" and "ignore".
       HISTORY: you can use "auto_regist" used in fml 2.x.

       Typical Configuration is

       (default)
       $PERMIT_COMMAND_FROM    = "members_only";
       $REJECT_COMMAND_HANDLER = "reject";

       (automatic subscribe: fml automatically handles subscribe request)
       $PERMIT_COMMAND_FROM    = "members_only";
       $REJECT_COMMAND_HANDLER = "auto_subscribe";

       value: string

    $PERMIT_COMMAND_FROM
       $CONTROL_ADDRESS is the address you send a command request to.
       For example 'elena-ctl@fml.org'.

       $PERMIT_COMMAND_FROM is one of "anyone", "members_only" and "moderator".
       It defines who can post to this ML.
       When command request from not a member is rejected,
       fml calls $REJECT_COMMAND_HANDLER.

       $REJECT_COMMAND_HANDLER is one of "reject", "auto_subscribe" and "ignore".
       HISTORY: you can use "auto_regist" used in fml 2.x.

       Typical Configuration is

       (default)
       $PERMIT_COMMAND_FROM    = "members_only";
       $REJECT_COMMAND_HANDLER = "reject";

       (automatic subscribe: fml automatically handles subscribe request)
       $PERMIT_COMMAND_FROM    = "members_only";
       $REJECT_COMMAND_HANDLER = "auto_subscribe";

       value: string

    $REJECT_COMMAND_HANDLER
       $CONTROL_ADDRESS is the address you send a command request to.
       For example 'elena-ctl@fml.org'.

       $PERMIT_COMMAND_FROM is one of "anyone", "members_only" and "moderator".
       It defines who can post to this ML.
       When command request from not a member is rejected,
       fml calls $REJECT_COMMAND_HANDLER.

       $REJECT_COMMAND_HANDLER is one of "reject", "auto_subscribe" and "ignore".
       HISTORY: you can use "auto_regist" used in fml 2.x.

       Typical Configuration is

       (default)
       $PERMIT_COMMAND_FROM    = "members_only";
       $REJECT_COMMAND_HANDLER = "reject";

       (automatic subscribe: fml automatically handles subscribe request)
       $PERMIT_COMMAND_FROM    = "members_only";
       $REJECT_COMMAND_HANDLER = "auto_subscribe";

       value: string

    $MAIL_LIST_ACCEPT_COMMAND
       obsolete (though you can use it)
       When $MAIL_LIST_ACCEPT_COMMAND = 1,
       both $MAIL_LIST and $CONTROL_ADDRESS accept commands
       which format is "# command".
       value: 1/0

    $MAINTAINER
       mailing list maintainer/administrator address e.g. 'elena-admin@fml.org'.
       $MAINTAINER != $MAIL_LIST IS REQUIRED AGAINST MAIL LOOP!
       value: string

    $MAINTAINER_SIGNATURE
       mailing list maintainer/administrator address e.g. 'elena-admin@fml.org'.
       $MAINTAINER != $MAIL_LIST IS REQUIRED AGAINST MAIL LOOP!
       value: string

    $ML_FN
       obsolete

       You can enforce To: field of posted article by rewriting it.
       To: $MAIL_LIST $ML_FN => To: Elena@fml.org (Elena Lolabrigita ML)

       value: string

    * Directory

    $SPOOL_DIR
       article spool
       value: directory string

    $TMP_DIR
       tmp, after chdir, under DIR
       value: directory string

    $VAR_DIR
       multi-purpose log, temporary, transient, and spool files (4.4BSD style)
       $LOGFILE and $SPOOL_DIR is exceptional but others is under var/.
       value: directory string

    $VARLOG_DIR
       multi-purpose log, temporary, transient, and spool files (4.4BSD style)
       $LOGFILE and $SPOOL_DIR is exceptional but others is under var/.
       value: directory string

    $VARRUN_DIR
       multi-purpose log, temporary, transient, and spool files (4.4BSD style)
       $LOGFILE and $SPOOL_DIR is exceptional but others is under var/.
       value: directory string

    $VARDB_DIR
       multi-purpose log, temporary, transient, and spool files (4.4BSD style)
       $LOGFILE and $SPOOL_DIR is exceptional but others is under var/.
       value: directory string

    * Manual Registration

    $MANUAL_REGISTRATION_TYPE

       Term "Manual Registration" may be ambiguous but it implies
       ML maintainer needs to do some action to add a new member.
       When the maintainer receives subscribe request, he/she
       1. remote login to the fml host and edit actives/members
       2. remote login to the fml host and run "makefml add ML address"
       3. send a command to add an address e.g. "admin add address".
       You need to enable remote administration function to do it.
       See "remote administration" section for more details.

       On contrary, "automatic registration" is fml does everything
       to add a new member except for some error cases.

       only support 'confirmation' or 'forward_to_admin'
       In "confirmation", fml confirms the subscribe request is valid to
       avoid a tricky attack.
       If "forward_to_admin" is selected, subscribe request is forwarded
       to $MAINTAINER without further check.

       value: confirmation/forward_to_admin

    $MANUAL_REGISTRATION_CONFIRMATION_FILE
       value: directory string

    * Automatic Registration

    $AUTO_REGISTRATION_TYPE

       When REJECT_{POST,COMMAND}_HANDLER is "auto_subscribe" or
       "auto_regist", fml does everything to add a new member except for some
       error cases. The subscription request type is as follows.

       value: confirmation/subject/body/no-keyword

    $AUTO_REGISTRATION_KEYWORD
       keyword of subscribe request
       $REQUIRE_SUBSCRIBE (CFVersion 2) => $AUTO_REGISTRATION_KEYWORD
       value: string

    $AUTO_REGISTRATION_DEFAULT_MODE
       when automatic registration,
       we apply $AUTO_REGISTRATION_DEFAULT_MODE e.g. "m=3mp s=1" to the address.
       Please see "file operation" in doc/tutorial for more details.
       value: string

    $CONFIRMATION_ADDRESS
       "confirmation" (default) mode configurations
       please see doc/tutorial for the detail of "confirmation"
       value: string

    $CONFIRMATION_SUBSCRIBE
       "confirmation" (default) mode configurations
       please see doc/tutorial for the detail of "confirmation"
       value: string

    $CONFIRMATION_KEYWORD
       "confirmation" (default) mode configurations
       please see doc/tutorial for the detail of "confirmation"
       value: string

    $CONFIRMATION_WELCOME_STATEMENT
       "confirmation" (default) mode configurations
       please see doc/tutorial for the detail of "confirmation"
       value: string

    $CONFIRMATION_SUBSCRIBE_NEED_YOUR_NAME
       "subscribe" needs no YOUR NAME.
       value: 1/0

    $CONFIRMATION_FILE
       file to send back "what is confirmation?" with "confirmation request"
       reply mail in "confirmation" mode.
       value: filename string

    $CONFIRMATION_EXPIRE
       Expire of request queue. The unit is "hour". (default, 168 == 7*24)
       value: number

    $CONFIRMATION_LIST
       confirmation request queue (you should not manually edit it)
       value: filename string

    $DEFAULT_SUBSCRIBE
       In fact, obsolete.
       default keyword for trap
       value: string

    $WELCOME_FILE
       In adding a new member, fml sends $WELCOME_FILE to him/her.
       ML maintainer should set up this file as a guide of mailing list.
       This function works in automatic registration.
       value: filename string

    $WELCOME_STATEMENT
       subject of mail ($WELCOME_FILE) sent to a new member
       value: string

    $FILE_TO_REGIST
       Enforce file to add a new member address for some purposes.
       In default fml adds it to both $ACTIVE_LIST and $MEMBER_LIST.
       value: filename string

    $AUTO_REGISTERED_UNDELIVER_P
       obsolete in fact.

       In default if body lines > $AUTO_REGISTRATION_LINES_LIMIT,
       we forward this mail to $MAIL_LIST. If $AUTO_REGISTERED_UNDELIVER_P is set,
       we ALWAYS DO NOT Forward it to $MAIL_LIST.
       value: 1/0

    $AUTO_REGISTRATION_LINES_LIMIT
       obsolete in fact.

       In default if body lines > $AUTO_REGISTRATION_LINES_LIMIT,
       we forward this mail to $MAIL_LIST. If $AUTO_REGISTERED_UNDELIVER_P is set,
       we ALWAYS DO NOT Forward it to $MAIL_LIST.
       value: 1/0

    * Confirmd

    $CONFIRMD_ACK_REQ_FILE
       confirmd
       value: filename string

    $CONFIRMD_ACK_LOGFILE
       confirmd
       value: filename string

    $CONFIRMD_ACK_EXPIRE_UNIT
       value: number / ( number + month/week/day )

    $CONFIRMD_ACK_WAIT_UNIT
       value: number / ( number + month/week/day )

    * Remote Administration

    $REMOTE_ADMINISTRATION

       For security, I do not recommend you use remote control of fml.
       If $REMOTE_ADMINISTRATION is set, you can control FML by sending
       a command mail from remote host.
       Another choice from remote host is CGI interface but fml 3.0 does not
       provide it. CGI development is underway.

       value: 1/0

    $REMOTE_ADMINISTRATION_AUTH_TYPE
       Of course, the remote control requires some kind of authentication.
       The choice of authentication is $REMOTE_ADMINISTRATION_AUTH_TYPE,
       which is one of
       address		From: field
       crypt		From: field + password (e.g. "#admin pass PASSWORD")
       md5		From: field + password (e.g. "#admin pass PASSWORD")
       pgp                PGP(Pretty Good Privacy) signature

       The difference of "crypt" and "md5" is $PASSWD_FILE format.
       HISTORY: $REMOTE_ADMINISTRATION_REQUIRE_PASSWORD <=> "crypt"

       value: crypt/address/md5/pgp/pgp2/pgp5/gpgp

    $ADMIN_MEMBER_LIST
       address list of members who can send a command mail from remote
       value: filename string

    $ADMIN_HELP_FILE
       help file of admin commands
       value: filename string

    $PASSWD_FILE
       password file to authenticate members
       The format is "address encrypted-password" and uses one line for one address.
       value: filename string

    $ADMIN_ADD_SEND_WELCOME_FILE
       "admin add" to add an address to a member list. If it succeeds, fml
       sends back $WELCOME_FILE if this variable is defined. In default fml
       does not do it, so the maintainer needs to send the success of subscribe
       and guide to the new member.
       value: 1/0

    $ADMIN_LOG_DEFAULT_LINE_LIMIT
       N, the number of lines, of "tail -N $LOGFILE".
       "admin log" is "tail -100 log" in default to avoid too big mail.
       value: number

    $PGP_PATH
       PGP directory path (obsolete in fml 4.0)
       value: filename string

    $USE_FML40_PGP_PATH
       If you enforce the following *KEYRING_DIR in $CFVersion < 6.1,
       set this variable on.
       value: 1/0

    $DIST_AUTH_KEYRING_DIR
       fml 4.0
       value: directory string

    $DIST_ENCRYPT_KEYRING_DIR
       fml 4.0
       value: directory string

    $ADMIN_AUTH_KEYRING_DIR
       fml 4.0
       value: directory string

    $ADMIN_ENCRYPT_KEYRING_DIR
       fml 4.0
       value: directory string

    * Moderations; moderators check posted articles

    $MODERATOR_FORWARD_TYPE
       "moderator" certification type
       value: 1/2/3

    $MODERATOR_MEMBER_LIST
       member list who receives submitted article.
       If this file does not exist, it is forwarded to only $MAINTAINER.
       A moderator who certificate submitted articles and permit the post
       to mailing list.

       fml does not check moderator's addresses. fml check only "moderators
       knows passwords or identifiers (one time password)".

       value: filename string

    $MODERATOR_EXPIRE_LIMIT
       expire old submitted but not certified articles
       default: 2 weeks
       value: number

    * Security

    $REJECT_ADDR
       We reject $REJECT_ADDR@ARBITRARY.DOM.AIN since these are clearly NOT
       individuals. It also may be effective to avoid mail loop since
       some error or automatic reply comes from not individual addresses.
       This restriction is stronger than $PERMIT_*_FROM variable.
       For example, if $PERMIT_POST_FROM is "anyone", fml does not permit
       post from root@some.domain. If you permit it, please define $REJECT_ADDR.

       XXX This variable name is ambiguous. It should be $REJECT_ACCOUNT?

       value: regexp string

    $REJECT_ADDR_LIST
       list of addresses fml should reject. fml checks From: field for this but
       it may be ineffective since SMTP has no general authentication method.
       value: filename string

    $NOT_USE_UNIX_FROM_LOOP_CHECK
       check UNIX from to avoid mail loop. check in default.
       value: 1/0

    $CHECK_MESSAGE_ID
       check Message-Id: duplication to avoid mail loop
       value: 1/0

    $CHECK_MAILBODY_CKSUM
       check mail body content md5 checksum to avoid mail loop
       do not check it in default.
       value: 1/0

    $LOG_CONNECTION
       obsolete today
       Logs the getpeername()
       value: 1/0

    $ADDR_CHECK_MAX
       address check levels, which level is the tree depth from the root.
       For example
       fukachan@phys.titech.ac.jp
       fukachan@axion.phys.titech.ac.jp

       fml checks $ADDR_CHECK_MAX level from the name space root. That is
       compare "jp" -> compare "ac" -> titech -> phys -> axion ...

       When $ADDR_CHECK_MAX = 3, fml regards these two are the same.
       When $ADDR_CHECK_MAX = 4, fml regards these two are the same.
       When $ADDR_CHECK_MAX = 5, fml regards these two are DIFFERENT!

       value: number

    $INCOMING_MAIL_SIZE_LIMIT
       fml reject too big mail.
       In-coming mail size > $INCOMING_MAIL_SIZE_LIMIT, fml discards it
       and send a warning only to the maintainer.
       0 (default) implies infinite (no limit)
       value: number

    $NOTIFY_MAIL_SIZE_OVERFLOW
       When fml reject too big mail,
       if $NOTIFY_MAIL_SIZE_OVERFLOW is set, notify the rejection to the sender.
       value: 1/0

    $ANNOUNCE_MAIL_SIZE_OVERFLOW
       When fml reject too big mail,
       if $ANNOUNCE_MAIL_SIZE_OVERFLOW is set, announce "too big mail from someone"
       to mailing list (SARASHIMONO:-).
       value: 1/0

    $MAX_MEMBER_LIMIT
       Resource Limit (useful for ISP ?): (default 0 == not check this limit)
       the maximum of ML delivery members when auto registration routine works.

       If member > $MAX_MEMBER_LIMIT, auto registration rejects the request.
       We check actives to permit aliases of post-able addresses.
       We check @ACTIVE_LIST effective members, not @MEMBER_LIST.
       value: number

    $USE_DISTRIBUTE_FILTER
       Filter of posted article.
       &EnvelopeFilter is called in the top of &Distribute if you set
       $USE_DISTRIBUTE_FILTER = 1;
       value: 1/0

    $DISTRIBUTE_FILTER_HOOK
       Filter of posted article.
       You can use $DISTRIBUTE_FILTER_HOOK for advanced customizes.
       value: string

    $FILTER_NOTIFY_REJECTION
       $FILTER_NOTIFY_REJECTION enables fml.pl notifies the rejection to
       the sender.
       value: 1/0

    $FILTER_ATTR_REJECT_NULL_BODY
       Attribute of filter of posted article
       value: 1/0

    $FILTER_ATTR_REJECT_COMMAND
       Attribute of filter of posted article
       When $FILTER_ATTR_REJECT_COMMAND is 1 under distribution mode,
       rejects "# command" syntax just before distribution (&Distribute;)
       value: 1/0

    $FILTER_ATTR_REJECT_2BYTES_COMMAND
       Attribute of filter of posted article
       reject Japanese "2byes English words"
       value: 1/0

    $FILTER_ATTR_REJECT_INVALID_COMMAND
       Attribute of filter of posted article
       reject command mail sent to the address for posting.
       value: 1/0

    $FILTER_ATTR_REJECT_ONE_LINE_BODY
       Attribute of filter of posted article
       reject a mail with "one line" mail body (must be invalid command mail)
       one line means the input mail has one line in the first paragraph
       except for signature (last paragraph).
       Even if it has one line, the paragraph ends with period '.'
       it must be an effective paragraph. So we should not reject it.
       value: 1/0

    $FILTER_ATTR_REJECT_MS_GUID
       Attribute of filter of posted article
       reject MIME/multipart mails with Microsoft GUID within it,
       We intend to reject "Melissa virus" family by it.
       value: 1/0

    $FILTER_ATTR_REJECT_INVALID_JAPANESE
       reject not ascii nor ISO-2022-JP
       value: 1/0

    $CONTENT_HANDLER_CUTOFF_EMPTY_MESSAGE
       cutoff empty message.
       value: 1/0

    $CONTENT_HANDLER_REJECT_EMPTY_MESSAGE
       reject empty message after cut off process.
       value: 1/0

    $USE_HANKAKU_CONVERTER
       try to convert Japanese HANKAKU chars in the mail body to ZENAKKU
       value: 1/0

    $HTML_MAIL_DEFAULT_HANDLER
       reject HTML mails that the same content exist in the form of both
       plain and html. e.g. some versions of M$ outlook, netscape mail
       "AGAINST_HTML_MAIL: 1/0" is old style, which works for compatibility though.
       NULL (default) is "pass through a html mail".
       value: "strip" / "reject" / ""

    $USE_MTI
       Traffic Monitoring Mechanism within fml
       Mail Traffic Information: internal traffic monitor
       value: 1/0

    $MTI_WARN_INTERVAL
       MIT warning (mail bomb report) negative cache interval
       to avoid mail bomb of "mail bomb attack report" itself.
       value: number

    $MTI_WARN_LASTLOG
       value: filename string

    $MTI_EXPIRE_UNIT
       garbage collection
       how old data (cache) to remove in clean up
       value: number

    $MTI_BURST_SOFT_LIMIT
       low water mark
       value: number

    $MTI_BURST_HARD_LIMIT
       high water mark
       value: number

    $MTI_COST_EVAL_FUNCTION
       function name to evaluate the current traffic load
       value: funtion string

    $MTI_MAIL_FROM_HINT_LIST
       cache of spammer candidates
       value: filename string

    $SUBSCRIBE_ANNOUNCE_FORWARD_TYPE
       how to announce the new comer if $AUTO_REGISTERED_UNDELIVER_P is 0.
       value: raw / prepend_info

    $UNSUBSCRIBE_AUTH_TYPE
       Optional. If UNSUBSCRIBE_AUTH_TYPE is 'confirmation', fml sends back
       confirmation against a fake. In default, FML does not do confirmation.
       available type is "confirmation" only.
       value: confirmation

    $CHADDR_AUTH_TYPE
       chaddr checks confirmation
       value: confirmation / ""

    $USE_LOG_MAIL
       LOGGING THE LATEST IN-COMING MAILS
       Logs an in-coming mail to $LOG_MAIL_DIR/$id
       where ($id = `cat $LOG_MAIL_SEQ`; $id = $id % $NUM_LOG_MAIL; $id++).
       Latest $NUM_LOG_MAIL files are stored in $LOG_MAIL_DIR and
       the message size of each file except for the header
       is limited up to $LOG_MAIL_FILE_SIZE_MAX bytes to save disk.
       value: 1/0

    $LOG_MAIL_DIR
       value: filename string

    $LOG_MAIL_SEQ
       value: filename string

    $NUM_LOG_MAIL
       value: number

    $LOG_MAIL_FILE_SIZE_MAX
       value: number

    $USE_ENCRYPTED_DISTRIBUTION
       PGP Encrypted ML
       value: 1/0

    $ENCRYPTED_DISTRIBUTION_TYPE
       value: pgp / pgp2 / pgp5 / gpgp

    * Header Customization

    $DATE_TYPE
       Date: definition ("makefml config" can control this)
       1 original-date			Date:
       * Date: == when distribute() works
       2 distribute-date+posted		Date: + Posted:
       3 distribute-date+x-posted		Date: + X-Posted:
       4 distribute-date+x-original-date	Date: + X-Original-Date:
       * Date: == when fml.pl receives or is kicked off.
       5 received-date+posted		Date: + Posted:
       6 received-date+x-posted		Date: + X-Posted:
       7 received-date+x-original-date	Date: + X-Original-Date:
       value: original-date/distribute-date+posted/distribute-date+x-posted
       /distribute-date+x-original-date/received-date+posted
       /received-date+x-posted/received-date+x-original-date

    $XMLNAME
       In article header, fml adds following header fields.

       $XMLNAME
       $XMLCOUNT: sequence-number

       e.g.
       X-ML-Name: Elena
       X-Mail-Count: 00007

       value: string

    $XMLCOUNT
       In article header, fml adds following header fields.

       $XMLNAME
       $XMLCOUNT: sequence-number

       e.g.
       X-ML-Name: Elena
       X-Mail-Count: 00007

       value: string

    $SUBJECT_TAG_TYPE
       In default subject tag does not exist to show more and more effective
       subject and body. Client Interface SHOULD CONTROL subject descriptions.

       The available type is [:] [,] [ ] (:) (,) ( ).
       e.g. [:]  => [Elena:00100] format (here $BRACKET is "Elena").
       But you can customize SUBJECT_FREE_* series variables.
       Please see doc/tutorial for the detail

       value:  (:) / [:] / () / [] / (,) / [,] / () / [] / (ID) / [ID] / ""

    $BRACKET
       BRACKET of "Subject: [BRACKET:ID] ..." form
       value: string

    $STRIP_BRACKETS
       obsolete
       We strip off e.g. [ML:fukachan] form in Subject
       but this operations depends on special forms, so not functional.
       You do not expect a lot on this option.

    $BRACKET_SEPARATOR
       You can customize your own bracket by these variables.
       See doc/tutorial and libtagdef.pl on examples.
       value: regexp string

    $SUBJECT_FREE_FORM
       You can customize your own bracket by these variables.
       See doc/tutorial and libtagdef.pl on examples.
       value: regexp string

    $SUBJECT_FREE_FORM_REGEXP
       You can customize your own bracket by these variables.
       See doc/tutorial and libtagdef.pl on examples.
       value: regexp string

    $SUBJECT_FORM_LONG_ID
       You can customize your own bracket by these variables.
       See doc/tutorial and libtagdef.pl on examples.
       value: regexp string

    $USE_ERRORS_TO
       obsolete based on RFC1123
       value: 1/0

    $ERRORS_TO
       obsolete based on RFC1123
       value: string

    $USE_ORIGINAL_MESSAGE_ID
       Message-Id: use original Message-Id or Server Defined Message-Id ?
       if 1, original and
       if 0, fml generates a message-id like $day.FMLAAA.$pid.$MAIL_LIST
       value: 1/0

    $PRECEDENCE
       Precedence: field;
       value: string

    $APPEND_STARDATE
       append STARTREK stardate :-) in article.
       Stardate calculation algorithm is ambiguous.
       X-Stardate: field
       value: 1/0

    $USE_RFC2369
       RFC2369 e.g. list-post: ..
       value: 1/0

    $LIST_SOFTWARE
       List-*

    $LIST_POST
       List-*

    $LIST_OWNER
       List-*

    $LIST_HELP
       List-*

    $LIST_SUBSCRIBE
       List-*

    $LIST_UNSUBSCRIBE
       List-*

    $LIST_ID
       List-*

    $REWRITE_TO
       obsolete in fml 3.0
       We should force "To: $MAIL_LIST" form "For Eye" or NOT?
       default is "NO".

       0 Pass the original field To:
       1 We rewrite "To: $MAIL_LIST, original-to-fields".
       2 Force "To: $MAIL_LIST".

       REWRITE_TO = 1 if NOT_REWRITE_TO == 0 (2.1 Release)
       value: 0/1/2

    $TZONE_DST
       time zone within summer time if you use summer time.
       thank HIROSHIMA Naoki <naoki@bcrossing.com> on this idea

    $PASS_ALL_FIELDS_IN_HEADER
       In some cases you need to pass only defined fields of the header
       which is defined in @HdrFieldsOrder (see "sub SetDefaults" in fml.pl).
       All files except $SKIP_FIELDS is passed through
       when $PASS_ALL_FIELDS_IN_HEADER is set.
       The old variable name is $SUPERFLUOUS_HEADERS.
       value: 1/0

    $SKIP_FIELDS
       ignore header field irrespective of @HdrFieldsOrder and
       $PASS_ALL_FIELDS_IN_HEADER setting
       value: regexp string

    $ALLOW_WRONG_LINES_IN_HEADER
       correct a wrong input
       value: 1/0

    * Commands, Command Traps, File Operations (e.g. mget)

    $COMMAND_SYNTAX_EXTENSION
       obsolete
       COMMAND format is "#help" == "# help" if $COMMAND_SYNTAX_EXTENSION is set.
       value: 1/0

    $USE_SUBJECT_AS_COMMANDS
       "Subject: # commands" is available?
       value: 1/0

    $USE_WARNING
       obsolete
       If NOT "# command" syntax commands is given, ignore or warn to the user?
       Our default is not, since most such cases are "signature".
       value: 1/0

    $COMMAND_ONLY_SERVER
       obsolete: since this is the same as --ctladdr.
       value: 1/0

    $COMMAND_CHECK_LIMIT
       obsolete
       when $MAIL_LIST == $CONTROL_ADDRESS,
       the first $COMMAND_CHECK_LIMIT lines is checked for commands mail or not?
       $GUIDE_CHECK_LIMIT is the same kind of variable but for "# guide" trap.
       $GUIDE_KEYWORD determines "guide" of "$ guide" trap.
       value: number

    $GUIDE_CHECK_LIMIT
       obsolete
       value: number

    $GUIDE_KEYWORD
       obsolete
       value: string

    $MAXLEN_COMMAND_INPUT
       The maximum length for each command. 128 bytes by default.
       value: number

    $MAXNUM_COMMAND_INPUT
       The maximum number of commands in one command mail.
       The variable \$MAXNUM_COMMAND_INPUT controls this.
       If the value is 3, fml permits 3 commands in one command mail.
       0 or NULL implies infinite (default).
       value: number

    $CHADDR_KEYWORD
       "# chaddr" command name aliases
       value: regexp string

    $CHADDR_REPLY_TO
       choise of addresses to return for "chaddr" command reply
       value: newaddr curaddr maintainer

    $ADMIN_CHADDR_REPLY_TO
       choise of addresses to return for "admin chaddr" command reply
       value: newaddr curaddr maintainer

    $MGET_MODE_DEFAULT
       The default mode of "mget" without mode (default is "tar.gz" form).
       $MGET_TEXT_MODE_DEFAULT is used by &SendFileBySplit
       value: mode string

    $MGET_TEXT_MODE_DEFAULT
       The default mode of "mget" without mode (default is "tar.gz" form).
       $MGET_TEXT_MODE_DEFAULT is used by &SendFileBySplit
       value: mode string

    $MAIL_LENGTH_LIMIT
       The reply for "mget" commands sends long reply mails as splitten mails
       by the unit $MAIL_LENGTH_LIMIT lines once at $SLEEPTIME secs..
       value: number

    $SLEEPTIME
       The reply for "mget" commands sends long reply mails as splitten mails
       by the unit $MAIL_LENGTH_LIMIT lines once at $SLEEPTIME secs..
       value: number

    $MIME_VERSION
       almost obsolete
       special case of "mget" routine uses these variables.
       It is not user defined variable.
       See doc/tutorial and libfop.pl for the detail.
       You change MIME/Multipart default.
       value: string

    $MIME_CONTENT_TYPE
       almost obsolete
       special case of "mget" routine uses these variables.
       It is not user defined variable.
       See doc/tutorial and libfop.pl for the detail.
       You change MIME/Multipart default.
       value: string

    $MIME_MULTIPART_BOUNDARY
       almost obsolete
       special case of "mget" routine uses these variables.
       It is not user defined variable.
       See doc/tutorial and libfop.pl for the detail.
       You change MIME/Multipart default.
       value: string

    $MIME_MULTIPART_CLOSE_DELIMITER
       almost obsolete
       special case of "mget" routine uses these variables.
       It is not user defined variable.
       See doc/tutorial and libfop.pl for the detail.
       You change MIME/Multipart default.
       value: string

    $MIME_MULTIPART_DELIMITER
       almost obsolete
       special case of "mget" routine uses these variables.
       It is not user defined variable.
       See doc/tutorial and libfop.pl for the detail.
       You change MIME/Multipart default.
       value: string

    $MIME_MULTIPART_PREAMBLE
       almost obsolete
       special case of "mget" routine uses these variables.
       It is not user defined variable.
       See doc/tutorial and libfop.pl for the detail.
       You change MIME/Multipart default.
       value: string

    $MIME_MULTIPART_TRAILER
       almost obsolete
       special case of "mget" routine uses these variables.
       It is not user defined variable.
       See doc/tutorial and libfop.pl for the detail.
       You change MIME/Multipart default.
       value: string

    $USE_SJIS_IN_ISH
       Japanese specific
       sjis conversion in "mget ish" mode.
       value: 1/0

    $RFC1153_ISSUE
       RFC1153 configurations; see doc/tutorial for the detail
       value: number

    $RFC1153_VOL
       value: number / string

    $RFC1153_SEQUENCE_FILE
       value: filename string

    $USE_DOT_QMAIL_EXT
       qmail specific extension
       To send "get 1" to ml-ctl@domain is equivalent to that
       send anything to ml-get-1@domain if this variable is defined.
       value: 1/0

    $FORCE_COMMAND_REPLY_TO
       obsolete
       For the reply for commands from fml,
       we force Reply-To: $FORCE_COMMAND_REPLY_TO ?(default is $CONTROL_ADDRESS)
       value: string

    $MGET_SUBJECT_TEMPLATE
       Subject template in "mget" reply.
       automatic substitute is done before send the reply; For example,
       Subject: result for mget [last:3 tar + gzip] (1/1) (Elena Lolabrigita ML)

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

       $NOT_SHOW_DOCMODE is obsolete, it equals you discard _PART_.

       value: string

    $MESSAGE_RETURN_ADDR_POLICY
       send error message to Reply-To: ? or From: ?
       (Of course From: if Reply-To: is not defined).
       If $MESSAGE_RETURN_ADDR_POLICY is null,
       it implies we prefer Reply-To: (by default).
       value: from / reply-to

    * Digest/Matome Okuri Configurations

    $MSEND_SUBJECT_TEMPLATE
       Subject template in Digest/matome okuri.
       automatic substitute is done before send the reply; For example,
       Digest -Matome Okuri- Article 768 [last:10 tar + gzip] (1/1) (Elena ML)

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

       $NOT_SHOW_DOCMODE is obsolete, it equals you discard _PART_.

       value: string

    $MSEND_RC
       Digest/Matome Okuri rc file
       value: filename string

    $MSEND_MODE_DEFAULT
       rfc1153 or rfc934
       obsoletes $USE_RFC1153, $USE_RFC1153_DIGEST, $USE_RFC934
       value: mode string

    $MSEND_DEFAULT_SUBJECT
       Subject:
       value: string

    $MSEND_NOTIFICATION
       If no articles to send, we send "no traffic" to the member of $MAIL_LIST
       with the subject $MSEND_NOTIFICATION_SUBJECT if $MSEND_NOTIFICATION is set.
       value: 1/0

    $MSEND_NOTIFICATION_SUBJECT
       value: string

    $MSEND_NOT_USE_X_ML_INFO
       not require X-ML-Info: in the "mget";
       value: 1/0

    $MSEND_NOT_USE_NEWSYSLOG
       not do newsyslog in the Sundays morning. $NOT_USE_NEWSYSLOG (CFVersion 2)
       value: 1/0

    * Other Files for Configurations and Logs

    $LOG_MESSAGE_ID
       cache file of Message-ID: loop check
       value: filename string

    $MESSAGE_ID_CACHE_BUFSIZE
       cache size of Message-ID: negative cache
       value: number

    $LOG_MAILBODY_CKSUM
       cache file of mailbody cksum mail loop check
       value: filename string

    $MEMBER_LIST
       $MEMBER_LIST 	member who can post and use commands
       $ACTIVE_LIST 	delivery list
       value: filename string

    $ACTIVE_LIST
       $MEMBER_LIST 	member who can post and use commands
       $ACTIVE_LIST 	delivery list
       value: filename string

    $GUIDE_FILE
       ATTENTION: only "guide" is also send to strangers

       $GUIDE_FILE 		sent by "# guide" command,
       $OBJECTIVE_FILE 	sent by "# objective" command
       $HELP_FILE 		sent by "# help" command
       value: filename string

    $OBJECTIVE_FILE
       ATTENTION: only "guide" is also send to strangers

       $GUIDE_FILE 		sent by "# guide" command,
       $OBJECTIVE_FILE 	sent by "# objective" command
       $HELP_FILE 		sent by "# help" command
       value: filename string

    $HELP_FILE
       ATTENTION: only "guide" is also send to strangers

       $GUIDE_FILE 		sent by "# guide" command,
       $OBJECTIVE_FILE 	sent by "# objective" command
       $HELP_FILE 		sent by "# help" command
       value: filename string

    $DENY_FILE
       When fml rejects mail from someone, fml sends back this file to the sender.
       value: filename string

    $LOGFILE
       $LOGFILE		log file
       $MGET_LOGFILE		log file for mget routine, $LOGFILE in default.
       value: filename string

    $MGET_LOGFILE
       $LOGFILE		log file
       $MGET_LOGFILE		log file for mget routine, $LOGFILE in default.
       value: filename string

    $LOGFILE_SUFFIX
       suffix extension if defined. For example log.2000
       For example $LOGFILE_SUFFIX = ".%C%y", file name is "log.2000".
       See UNIX manual "strftime(3)" for more details on format.
       value: srtings

    $DEBUG_LOGFILE
       when -d2 ($debug = 2), logs this file for convenience.
       value: filename string

    $SUMMARY_FILE
       article summary file
       value: filename string

    $SEQUENCE_FILE
       sequence number file
       value: filename string

    $LOCK_FILE
       rename(2) lock (liblock.pl)
       value: filename string

    * SMTP and Delivery

    $USE_INET6
       always try IPv6 connection by default
       value: 1/0

    $HOST
       value: string

    $PORT
       value: number

    $SMTP_SENDER
       enforce MAIL FROM:<$SMTP_SENDER> if defined
       value: address

    $SMTP_LOG
       IF $NOT_TRACE_SMTP IS 1 (default 0), we log the SMTP session to $SMTP_LOG
       value: filename string

    $USE_SMTP_LOG_ROTATE
       rotate use of var/log/_smtplog.$i (where $i is the number)
       value: 1/0

    $SMTP_LOG_ROTATE_EXPIRE_LIMIT
       expire how old _smtplog.$date
       value: number

    $NUM_SMTP_LOG_ROTATE
       the number of var/log/_smtplog.$i files. This is the value of modulus.
       value: number

    $SMTP_LOG_ROTATE_TYPE
       type of suffix for _smtplog
       value: number / day

    $NOT_TRACE_SMTP
       IF $NOT_TRACE_SMTP IS 1 (default 0), we log the SMTP session to $SMTP_LOG
       IF $TRACE_SMTP_DELAY IS 1, we log the delay of response between SMTP server.
       value: 1/0

    $TRACE_SMTP_DELAY
       IF $NOT_TRACE_SMTP IS 1 (default 0), we log the SMTP session to $SMTP_LOG
       IF $TRACE_SMTP_DELAY IS 1, we log the delay of response between SMTP server.
       value: 1/0

    $USE_SMTP_PROFILE
       smtp profile for debug
       value: 1/0

    $MCI_SMTP_HOSTS
       You can use plural MTA for parallel delivery.
       $MCI_SMTP_HOSTS is the number of hosts you use.
       @HOSTS is the array of hosts you use.
       value: number

    $DEFAULT_RELAY_SERVER
       obsolete today
       value: string

    $RELAY_HACK
       obsolete today
       CF (by motonori@wide.ad.jp) base relay control if $RELEY_HACK is on.
       with %RELAY_GW, %RELAY_NGW, %RELAY_NGW_DOM (set in librelayhack.pl)
       $CF_DEF is CF's configuration files;
       **ATTENTION**; we do not use sendmail.cf but CF's configuration.
       value: 1/0

    $CF_DEF
       obsolete today
       value: filename string

    $USE_OUTGOING_ADDRESS
       list-outgoing@domain is a real distribution address. Fml does not
       sends article to all recipient list to MTA but only this address.
       MTA expands address list and distribute article.
       In default fml does not use this but effective for poor machine like
       486 16M ;-)

       fml -> list-outgoing -> expanded and distributed to $ACTIVE_LIST members

       XXX dedicated to minmin sama:D

       value: 1/0

    $OUTGOING_ADDRESS
       list-outgoing@domain is a real distribution address. Fml does not
       sends article to all recipient list to MTA but only this address.
       MTA expands address list and distribute article.
       In default fml does not use this but effective for poor machine like
       486 16M ;-)

       fml -> list-outgoing -> expanded and distributed to $ACTIVE_LIST members

       value: string

    $USE_VERP
       VERPs: Variable Envelope Return Paths. See qmail documents for more details.
       XXX you need additional configuration so that MTA receives VERPs addresses.

       value: 1/0

    $POSTFIX_VERP_DELIMITERS
       postfix $verp_delimiters
       value: string

    $TRY_VERP_PER_DAY
       try VERPs once a day for efficient delivery.
       value: 1/0

    $NOT_USE_ESMTP_PIPELINING
       we use ESMTP pipelining mechanism by default.
       value: 1/0

    $USE_SMTPFEED_F_OPTION
       smtpfeed special option which provides VERPs like error track trick.
       value: 1/0

    * MISC

    $USE_MIME
       Mime Decode On if $USE_MIME for ISO-2022-JP statements.
       e.g. Decode $SUMMARY_FILE subject and so on.
       default 1 from 2.1C#13
       value: 1/0

    $MIME_BROKEN_ENCODING_FIXUP
       special hack to treat broken MIME ending (e.g. by MacOS X)
       value: 1/0

    $MIME_DECODED_ARTICLE
       obsolete and Japanese specific
       NOT RECOMMENDED OPTION:
       articles in the spool are MIME-DECODED for poor environment users.
       These articles may be insane in strict MIME oriented mail interfaces.
       value: 1/0

    $PREAMBLE_MAILBODY
       FOR COMMAND RESULT MAIL,
       you always append some message in the command reply mail body.
       For example, the mail body becomes

       $PREAMBLE_MAILBODY
       original body
       $TRAILER_MAILBODY

       If you use the article distributed in ML, you must use some hooks.
       For example, append this in the last of config.ph (but before 1;)
       $SMTP_OPEN_HOOK = q
       $e{'Body'} = $PREAMBLE_MAILBODY. $e{'Body'} .$TRAILER_MAILBODY;
       #;
       Please see doc/tutorial for our policy behind this.

       value: string

    $TRAILER_MAILBODY
       FOR COMMAND RESULT MAIL,
       you always append some message in the command reply mail body.
       For example, the mail body becomes

       $PREAMBLE_MAILBODY
       original body
       $TRAILER_MAILBODY

       If you use the article distributed in ML, you must use some hooks.
       For example, append this in the last of config.ph (but before 1;)
       $SMTP_OPEN_HOOK = q
       $e{'Body'} = $PREAMBLE_MAILBODY. $e{'Body'} .$TRAILER_MAILBODY;
       #;
       Please see doc/tutorial for our policy behind this.

       value: string

    $GOOD_BYE_PHRASE
       In the last of e.g. "command status report", we add
       "$GOOD_BYE_PHRASE $FACE_MARK" :-) in the last of the reply.
       So the standard form is

       message
       FYI message generated by the function $PROC_GEN_INFO.
       $GOOD_BYE_PHRASE $FACE_MARK
       for example, "	--$MAIL_LIST, Be Seeing You!"

       value: string

    $FACE_MARK
       In the last of e.g. "command status report", we add
       "$GOOD_BYE_PHRASE $FACE_MARK" :-) in the last of the reply.
       So the standard form is

       message
       FYI message generated by the function $PROC_GEN_INFO.
       $GOOD_BYE_PHRASE $FACE_MARK
       for example, "	--$MAIL_LIST, Be Seeing You!"

       value: string

    $PROC_GEN_INFO
       value: function name string

    $USE_FLOCK
       use flock for lock algorithm if $USE_FLOCK is on.
       see flock(2), alarm(3). If not, we rename(2) base lock.
       The timeout of rename(2) lock is rand(3) *  $MAX_TIMEOUT secs.
       value: 1/0

    $MAX_TIMEOUT
       In rename(2) base lock case,
       the timeout of rename(2) lock is rand(3) *  $MAX_TIMEOUT secs.
       value: number

    $NOT_USE_SPOOL
       Not spooling of articles (default is "spooling")
       It may be used for some secret ML, ML on diskless machihe;-), ISP services
       value: 1/0

    $COMPAT_FML15
       "$CFVersion < 2" equals "$COMPAT_FML15 = 1;"
       value: 1/0

    $NEWSYSLOG_MAX
       newsyslog library maximum number. default is 4.
       log.4 is removed and
       log.3 -> log.4, log.2 -> log.3, log.1 -> log.2, log.0 -> log.1, log -> log.0
       value: number

    $CRONTAB
       not used generally. This is "cron of fml package" configuration.
       $CRONTAB 	configuratoin file
       $CRON_PIDFILE	pid file
       value: filename string

    $CRON_PIDFILE
       not used generally. This is "cron of fml package" configuration.
       $CRONTAB 	configuratoin file
       $CRON_PIDFILE	pid file
       value: filename string

    $CRON_NOTIFY
       not used generally. This is "cron of fml package" configuration.
       cron notifies what is done to $MAINTAINER.
       value: 1/0

    $USE_CROSSPOST
       cross operations
       value: 1/0

    $USE_MEMBER_NAME
       Under $USE_MEMBER_NAME is set, commands on member lists
       are with Gecos Fields which are extracted from From: field
       in the time of auto registration.
       Author: Masayuki FUKUI <fukui@sonic.nm.fujitsu.co.jp>
       value: 1/0

    * Expire and Archive

    $USE_EXPIRE
       If $USE_EXPIRE is set, we do expire articles in $SPOOL_DIR.
       The default is "no". You need to remove articles if you do so.

       Expiration limit is $EXPIRE_LIMIT, which syntax is
       e.g. 7days(days) or 100 (articles left in spool)
       If you re-generate $SUMMARY_FILE, set $EXPIRE_SUMMARY

       value: 1/0

    $EXPIRE_SUMMARY
       expire summary file when $USE_EXPIRE is enabled.
       value: 1/0

    $EXPIRE_LIMIT
       expire how old articles
       value: number / ( number + day/week/month )

    $USE_ARCHIVE
       If $USE_ARCHIVE is on, we do automatically archive, which is
       spool/articles is aggregated to e.g. "$ARCHIVE_DIR/100.tar.gz"
       by the unit $ARCHIVE_UNIT.

       the location of store (when $USE_ARCHIVE on):	$ARCHIVE_DIR
       the search path order                       : $ARCHIVE_DIR @ARCHIVE_DIR

       If @ARCHIVE_DIR is set and $ARCHIVE_DIR is not set,
       we use $ARCHIVE_DIR[0] as the $ARCHIVE_DIR.

       value: 1/0

    $ARCHIVE_UNIT
       spool/articles is aggregated to "$ARCHIVE_DIR/100.tar.gz"
       by the unit $ARCHIVE_UNIT.
       value: number

    $DEFAULT_ARCHIVE_UNIT
       spool/articles is aggregated to "$ARCHIVE_DIR/100.tar.gz"
       by the unit $ARCHIVE_UNIT.
       value: number

    $ARCHIVE_DIR
       spool/articles is aggregated to "$ARCHIVE_DIR/100.tar.gz"
       value: directory string

    $INDEX_FILE
       "index" command
       In default we scan spool and archives and reports, but
       send back $INDEX_FILE if $INDEX_FILE exists.
       value: filename string

    $INDEX_SHOW_DIRNAME
       show directory name in "index" command result? default is "no".
       value: 1/0

    * Library Commands

    $LIBRARY_DIR

       "library" command is a small mailing list within mailing list.
       It is useful to exchange some files.
       You can put and get files by "library" commands.

       In default, @DenyProcedure = ('library'); So 'library' command is disabled;
       Set @DenyProcedure = ('') in LOCAL CONFIG part (the last of config.ph).

       value: directory string

    $LIBRARY_ARCHIVE_DIR

       "library" command is a small mailing list within mailing list.
       It is useful to exchange some files.
       You can put and get files by "library" commands.

       In default, @DenyProcedure = ('library'); So 'library' command is disabled;
       Set @DenyProcedure = ('') in LOCAL CONFIG part (the last of config.ph).

       value: directory string

    $LOGFILE_NEWSYSLOG_LIMIT
       to turn over \$DIR/log
       value: number

    $AMLIST_NEWSYSLOG_LIMIT
       to turn over $ACTIVE_LIST and $MEMBER_LIST if the file size over this value,
       default 150K = 30*5000
       value: number / (number + K/M)

    * Html Configurations

    $AUTO_HTML_GEN

       HTML article generator: Please see doc/tutorial for the details.
       AUTO_HTML_GEN == AUTOmatic HTML GENeration
       if $AUTO_HTML_GEN, we generate html'ed articles in $DIR/$HTML_DIR
       value: 1/0

    $USE_NEW_HTML_GEN
       use Mail::HTML::Lite in fml-devel (fml next generation).
       value: 1/0

    $HTML_THREAD
       value: 1/0

    $HTML_INDEX_REVERSE_ORDER
       value: 1/0

    $HTML_DIR
       generate html articles under htdocs/
       value: directory string

    $HTML_EXPIRE_LIMIT
       expire old html articles if non-zero value is defined.
       not expire in default since the value is 0 or NULL.
       options: Please see doc/tutorial for the details.
       value: number

    $HTML_INDEX_TITLE
       title of index.html
       value: string

    $HTML_DATA_CACHE
       cache file
       value: filename string

    $HTML_DATA_THREAD
       cache file
       value: filename string

    $HTML_OUTPUT_FILTER
       filter in generate html file
       value: filename string

    $HTML_STYLESHEET_BASENAME
       stylesheet file name (see HTML 4.0)
       "fml.css" is default.
       value: filename string

    $HTML_THREAD_REF_TYPE
       threading algorithm type
       value: default / prefer-in-reply-to

    $HTML_THREAD_SORT_TYPE
       sort type for entries of thread.html
       default is "time" from past to latest,
       "reverse-number" is from latest to past.
       value: "" / reverse-number

    $HTML_INDEX_UNIT
       $subdir type of htdocs/$subdir/
       value: number / day / week / month / infinite

    $HTML_INDENT_STYLE
       threading type
       value: "" / UL

    $HTML_MULTIPART_IMAGE_REF_TYPE
       image file embedding style
       value: A / IMAGE

    $HTML_DEFAULT_UMASK
       html file umask
       value: "" / umask

    $HTML_WRITE_UMASK
       html file umask
       value: "" / umask

    * Interface to DataBase Management System

    $USE_DATABASE
       value: 1/0

    $DATABASE_METHOD
       value:

    $DATABASE_CACHE_FILE_SUFFIX
       value:

    $DATABASE_DRIVER
       value: filename

    $DATABASE_DRIVER_ATTRIBUTES
       attributes to inform database drivers
       value:

    $SQL_SERVER_HOST
       value: string

    $SQL_SERVER_PORT
       value: number

    $SQL_SERVER_USER
       value: string

    $SQL_DATABASE_NAME
       value: string

    $SQL_SERVER_PASSWORD
       value: string

    $SQL_DATABASE_NAME
       value: string

    $LDAP_SERVER_HOST
       value: string

    $LDAP_SERVER_PASSWORD
       value: string

    $LDAP_SEARCH_BASE
       value: string

    $LDAP_SERVER_BIND
       value: string

    $LDAP_QUERY_FILTER
       value: string

    * Interface to other Services (http,ftp,gopher,www)

    $USE_WHOIS
       "whois": default is search of local database file
       If "whois -h host" syntax is given, we connects "host" whois server.
       If $USE_WHOIS set, you can use local database $WHOIS_DB.
       If you have local whois server (inetd), you can also use it.
       If "whois help" is given, send back $WHOIS_HELP_FILE if it exists.

       value: 1/0

    $DEFAULT_WHOIS_SERVER
       value: string

    $WHOIS_DB
       value: filename string

    $WHOIS_HELP_FILE
       value: filename string

    $WHOIS_JCODE_P
       do Japanese conversion or not? for the result from whois server
       value: 1/0

    * Architecture Dependence

    $CPU_TYPE_MANUFACTURER_OS
       cpu-type manufacturer operating-system by GNU config.guess ("makefml")
       value: string

    $STRUCT_SOCKADDR
       struct sockaddr
       It is system dependent.
       value: string

    $LOCK_SH
       flock(2) system call; please see "/usr/include/sys/file.h"
       value: number

    $LOCK_EX
       flock(2) system call; please see "/usr/include/sys/file.h"
       value: number

    $LOCK_NB
       flock(2) system call; please see "/usr/include/sys/file.h"
       value: number

    $LOCK_UN
       flock(2) system call; please see "/usr/include/sys/file.h"
       value: number

    $COMPAT_SOLARIS2
       enforce solaris 2 compatible
       value: 1/0

    $NOT_USE_TIOCNOTTY
       used in cron of fml package
       we can emulate daemon(3) ?
       value: 1/0

    $HAS_GETPWUID
       On Unix, always yes set 1 in &SetDefaults;
       value: 1/0

    $HAS_GETPWGID
       On Unix, always yes set 1 in &SetDefaults;
       value: 1/0

    $HAS_ALARM
       On Unix, always yes set 1 in &SetDefaults;
       value: 1/0

    $UNISTD
       On Unix, always yes set 1 in &SetDefaults;
       value: 1/0

    $SENDMAIL
       program paths fml uses
       Usually "makefml newml" checks and expands this value.
       value: filename string

    $TAR
       program paths fml uses
       Usually "makefml newml" checks and expands this value.
       value: filename string

    $UUENCODE
       program paths fml uses
       Usually "makefml newml" checks and expands this value.
       value: filename string

    $COMPRESS
       program paths fml uses
       Usually "makefml newml" checks and expands this value.
       value: filename string

    $ZCAT
       program paths fml uses
       Usually "makefml newml" checks and expands this value.
       value: filename string

    $LHA
       program paths fml uses
       Usually "makefml newml" checks and expands this value.
       value: filename string

    $ISH
       program paths fml uses
       Usually "makefml newml" checks and expands this value.
       value: filename string

    $ZIP
       program paths fml uses
       Usually "makefml newml" checks and expands this value.
       value: filename string

    $BZIP2
       program paths fml uses
       Usually "makefml newml" checks and expands this value.
       value: filename string

    $PGP
       program paths fml uses
       Usually "makefml newml" checks and expands this value.
       value: filename string

    $PGP5
       program paths fml uses
       Usually "makefml newml" checks and expands this value.
       value: filename string

    $PGPE
       program paths fml uses
       Usually "makefml newml" checks and expands this value.
       value: filename string

    $PGPK
       program paths fml uses
       Usually "makefml newml" checks and expands this value.
       value: filename string

    $PGPS
       program paths fml uses
       Usually "makefml newml" checks and expands this value.
       value: filename string

    $PGPV
       program paths fml uses
       Usually "makefml newml" checks and expands this value.
       value: filename string

    $GPG
       program paths fml uses
       Usually "makefml newml" checks and expands this value.
       value: filename string

    $RCS
       program paths fml uses
       Usually "makefml newml" checks and expands this value.
       value: filename string

    $CI
       program paths fml uses
       Usually "makefml newml" checks and expands this value.
       value: filename string

    $BASE64_DECODE
       program paths fml uses
       Usually "makefml newml" checks and expands this value.
       value: filename string

    $BASE64_ENCODE
       program paths fml uses
       Usually "makefml newml" checks and expands this value.
       value: filename string

    $MD5
       program paths fml uses
       Usually "makefml newml" checks and expands this value.
       value: filename string