# # $FML: RULES.txt,v 1.11 2006/04/30 07:01:33 fukachan Exp $ # BASED ON fml/cf/MANIFEST 1.104 # # .convert よろしく変換して頑張る # .fml8_default fml8 のデフォルトと同じ、気にするな # .use_fml8_value fml8 で自動設定される値を使う # .not_yet_implemented まだ、実装されてない # まだ、設定変更できない # .ignore 実装方式が違うので、変換が無意味 # 対応するものがない、実装予定もない # # 新キーワード? # .convert 変換するルーチンを呼び出す # .use_fml8_value fml8 のデフォルトと同じ or fml8 の値が優先 # .not_yet_implemented 未実装(予定はあるが実装されていない) # .not_support fml8 ではサポート予定なしの機能。 # 「無視する」(.ignore)といっても良いが… ######################################################################### ##### Section: Fundamental Configuration (CF Version, debug, Language) ## # # config.ph configuration version # # define 5.0 for fml 3.0. # # define 6.0 for fml 3.0 + fukui-newconfig. # CFVersion: 6.1 .ok .if CFVersion .not_support # # global debug option. if non-nil, debug mode. # # In debug mode, fml does not distribute posted articles. # # value: 1/0 # debug: 0 .ok .if debug >= 1 use_debug = yes .ok .if debug == 0 use_debug = no # # 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 # LANGUAGE: Japanese .ok .if LANGUAGE == Japanese language_preference_order = ja en .ok .if LANGUAGE == English language_preference_order = en ja # # 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 # MESSAGE_LANGUAGE: .ok .if MESSAGE_LANGUAGE == Japanese language_preference_order = ja en .ok .if MESSAGE_LANGUAGE == English language_preference_order = en ja # # ## Sub Section: DNS ## # # 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 # DOMAINNAME: &fix:dn phys.titech.ac.jp .ok .if DOMAINNAME .use_fml8_value # FQDN: &fix:fqdn axion.phys.titech.ac.jp .ok .if FQDN .use_fml8_value ######################################################################### ##### Section: Mailing List Policy (for Post, Commands), Maintainer ### # # # # $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 # MAIL_LIST: # PERMIT_POST_FROM: members_only # REJECT_POST_HANDLER: reject .ok .if MAIL_LIST .convert .ok .if PERMIT_POST_FROM .convert .ok .if REJECT_POST_HANDLER .convert # # $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 # CONTROL_ADDRESS: # PERMIT_COMMAND_FROM: members_only # REJECT_COMMAND_HANDLER: reject .ok .if CONTROL_ADDRESS .convert .ok .if PERMIT_COMMAND_FROM .convert .ok .if REJECT_COMMAND_HANDLER .convert # # 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 # MAIL_LIST_ACCEPT_COMMAND: .ok .if MAIL_LIST_ACCEPT_COMMAND .not_support # # ## Sub Section: Maintainer ## # # mailing list maintainer/administrator address e.g. 'elena-admin@fml.org'. # # $MAINTAINER != $MAIL_LIST IS REQUIRED AGAINST MAIL LOOP! # # value: string # MAINTAINER: .ok .if MAINTAINER .convert # MAINTAINER_SIGNATURE: .ok .if MAINTAINER_SIGNATURE maintainer_signature = %s # # ## Sub Section: 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 # ML_FN: .ok .if ML_FN .not_support ######################################################################### ## ### Section: Directory ### ## $*DIR variable is relative under $DIR (defined in fml initialization phase). ## $FP*DIR is fully pathed directory name for each $*DIR variable. # # article spool # # value: directory string # SPOOL_DIR: spool .ok .if SPOOL_DIR .convert # # tmp, after chdir, under DIR # # value: directory string # TMP_DIR: tmp .ok .if TMP_DIR .convert # # 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 # VAR_DIR: var .ok .if VAR_DIR .use_fml8_value # VARLOG_DIR: var/log .ok .if VARLOG_DIR .use_fml8_value # VARRUN_DIR: var/run .ok .if VARRUN_DIR .use_fml8_value # VARDB_DIR: var/db .ok .if VARDB_DIR .use_fml8_value ######################################################################### ##### Section: Manual Registration ### # # # # 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_TYPE: confirmation .ok .if MANUAL_REGISTRATION_TYPE == confirmation subscribe_command_auth_type = confirmation .ok .if MANUAL_REGISTRATION_TYPE == forward_to_admin subscribe_command_auth_type = manual # # value: directory string # MANUAL_REGISTRATION_CONFIRMATION_FILE: $DIR/confirm.msub .ok .if MANUAL_REGISTRATION_CONFIRMATION_FILE .use_fml8_value ######################################################################### ##### Section: Automatic Registration ### # # # # 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_TYPE: confirmation .ok .if AUTO_REGISTRATION_TYPE == confirmation .use_fml8_value .ok .if AUTO_REGISTRATION_TYPE == subject .not_support .ok .if AUTO_REGISTRATION_TYPE == body .not_support .ok .if AUTO_REGISTRATION_TYPE == no-keyword .not_support # # keyword of subscribe request # # $REQUIRE_SUBSCRIBE (CFVersion 2) => $AUTO_REGISTRATION_KEYWORD # # value: string # AUTO_REGISTRATION_KEYWORD: subscribe .ok .if AUTO_REGISTRATION_KEYWORD == subscribe .use_fml8_value .ok .if AUTO_REGISTRATION_KEYWORD != subscribe .not_support # # 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 # AUTO_REGISTRATION_DEFAULT_MODE: .ok .if AUTO_REGISTRATION_DEFAULT_MODE .not_support # # "confirmation" (default) mode configurations # # please see doc/tutorial for the detail of "confirmation" # # value: string # CONFIRMATION_ADDRESS: .ok .if CONFIRMATION_ADDRESS == CONTROL_ADDRESS .use_fml8_value .ok .if CONFIRMATION_ADDRESS != CONTROL_ADDRESS .not_support # CONFIRMATION_SUBSCRIBE: subscribe .ok .if CONFIRMATION_SUBSCRIBE == subscribe .use_fml8_value .ok .if CONFIRMATION_SUBSCRIBE != subscribe .not_support # CONFIRMATION_KEYWORD: confirm .ok .if CONFIRMATION_KEYWORD == confirm .use_fml8_value .ok .if CONFIRMATION_KEYWORD != confirm .not_support # CONFIRMATION_WELCOME_STATEMENT: .ok .if CONFIRMATION_WELCOME_STATEMENT .not_support # # "subscribe" needs no YOUR NAME. # # value: 1/0 # CONFIRMATION_SUBSCRIBE_NEED_YOUR_NAME: 1 .ok .if CONFIRMATION_SUBSCRIBE_NEED_YOUR_NAME == 1 .not_support .ok .if CONFIRMATION_SUBSCRIBE_NEED_YOUR_NAME == 0 .use_fml8_value # # file to send back "what is confirmation?" with "confirmation request" # # reply mail in "confirmation" mode. # # value: filename string # CONFIRMATION_FILE: $DIR/confirm .ok .if CONFIRMATION_FILE .use_fml8_value # # Expire of request queue. The unit is "hour". (default, 168 == 7*24) # # value: number # CONFIRMATION_EXPIRE: 168 .ok .if CONFIRMATION_EXPIRE == 168 .use_fml8_value # # confirmation request queue (you should not manually edit it) # # value: filename string # CONFIRMATION_LIST: .ok .if CONFIRMATION_LIST .use_fml8_value # # In fact, obsolete. # # default keyword for trap # # value: string # DEFAULT_SUBSCRIBE: subscribe .ok .if DEFAULT_SUBSCRIBE == subscribe .use_fml8_value .ok .if DEFAULT_SUBSCRIBE != subscribe .not_support # # 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_FILE: $DIR/welcome .ok .if WELCOME_FILE .convert # # subject of mail ($WELCOME_FILE) sent to a new member # # value: string # WELCOME_STATEMENT:Welcome to our $ML_FN\n You are added automatically .ok .if WELCOME_STATEMENT == Welcome to our $ML_FN\n You are added automatically .not_support # # 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 # FILE_TO_REGIST: .ok .if FILE_TO_REGIST .convert # # 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_REGISTERED_UNDELIVER_P: 1 .ok .if AUTO_REGISTERED_UNDELIVER_P == 1 .use_fml8_value .ok .if AUTO_REGISTERED_UNDELIVER_P == 0 .not_support # TYPO .ok .if AUTO_REGISTERD_UNDELIVER_P == 1 .not_support # AUTO_REGISTRATION_LINES_LIMIT: 0 .ok .if AUTO_REGISTRATION_LINES_LIMIT == 0 .not_support .ok .if AUTO_REGISTRATION_LINES_LIMIT > 0 .not_support ######################################################################### ##### Section: Confirmd ### # # confirmd # # value: filename string # CONFIRMD_ACK_REQ_FILE: $DIR/confirmd.ackreq .if CONFIRMD_ACK_REQ_FILE == $DIR/confirmd.ackreq .not_yet_implemented # CONFIRMD_ACK_LOGFILE: $VARLOG_DIR/confirmd.ack .if CONFIRMD_ACK_LOGFILE == $VARLOG_DIR/confirmd.ack .not_yet_implemented # # value: number / ( number + month/week/day ) # CONFIRMD_ACK_EXPIRE_UNIT: 1month .if CONFIRMD_ACK_EXPIRE_UNIT == 1month .not_yet_implemented # CONFIRMD_ACK_WAIT_UNIT: 2weeks .if CONFIRMD_ACK_WAIT_UNIT == 2weeks .not_yet_implemented ######################################################################### ##### Section: 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: 0 .ok .if REMOTE_ADMINISTRATION == 0 use_admin_command_mail_function = no .ok .if REMOTE_ADMINISTRATION == 1 use_admin_command_mail_function = yes # COMPAT_CF_2 # if ($REMOTE_ADMINISTRATION_REQUIRE_PASSWORD) { # $REMOTE_ADMINISTRATION_AUTH_TYPE = "crypt"; # } # else { # $REMOTE_ADMINISTRATION_AUTH_TYPE = "address"; # } .ok .if REMOTE_ADMINISTRATION_REQUIRE_PASSWORD == 1 admin_command_mail_restrictions = reject_system_special_accounts check_admin_member_password reject .ok .if REMOTE_ADMINISTRATION_REQUIRE_PASSWORD == 0 admin_command_mail_restrictions = reject_system_special_accounts permit_admin_member_maps reject # # 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 # REMOTE_ADMINISTRATION_AUTH_TYPE: crypt .ok .if REMOTE_ADMINISTRATION_AUTH_TYPE == crypt admin_command_mail_restrictions = reject_system_special_accounts check_admin_member_password reject .ok .if REMOTE_ADMINISTRATION_AUTH_TYPE == address admin_command_mail_restrictions = reject_system_special_accounts permit_admin_member_maps reject .ok .if REMOTE_ADMINISTRATION_AUTH_TYPE == md5 admin_command_mail_restrictions = reject_system_special_accounts check_admin_member_password reject .ok .if REMOTE_ADMINISTRATION_AUTH_TYPE == pgp admin_command_mail_restrictions = reject_system_special_accounts check_pgp_signature reject .ok .if REMOTE_ADMINISTRATION_AUTH_TYPE == pgp2 admin_command_mail_restrictions = reject_system_special_accounts check_pgp_signature reject .ok .if REMOTE_ADMINISTRATION_AUTH_TYPE == pgp5 admin_command_mail_restrictions = reject_system_special_accounts check_pgp_signature reject .ok .if REMOTE_ADMINISTRATION_AUTH_TYPE == gpg admin_command_mail_restrictions = reject_system_special_accounts check_pgp_signature reject # # address list of members who can send a command mail from remote # # value: filename string # ADMIN_MEMBER_LIST: $DIR/members-admin .ok .if ADMIN_MEMBER_LIST .convert # # help file of admin commands # # value: filename string # ADMIN_HELP_FILE: $DIR/help-admin .ok .if ADMIN_HELP_FILE .use_fml8_value # # password file to authenticate members # # The format is "address encrypted-password" and uses one line for one address. # # value: filename string # PASSWD_FILE: $DIR/etc/passwd .ok .if PASSWD_FILE .convert # # "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_ADD_SEND_WELCOME_FILE: 0 .ok .if ADMIN_ADD_SEND_WELCOME_FILE == 0 .not_support .ok .if ADMIN_ADD_SEND_WELCOME_FILE == 1 .use_fml8_value # # N, the number of lines, of "tail -N $LOGFILE". # # "admin log" is "tail -100 log" in default to avoid too big mail. # # value: number # ADMIN_LOG_DEFAULT_LINE_LIMIT: 100 .ok .if ADMIN_LOG_DEFAULT_LINE_LIMIT log_command_tail_starting_location = %s # # PGP directory path (obsolete in fml 4.0) # # value: filename string # PGP_PATH: $DIR/etc/pgp .ok .if PGP_PATH == $DIR/etc/pgp .use_fml8_value # # If you enforce the following *KEYRING_DIR in $CFVersion < 6.1, # # set this variable on. # # value: 1/0 # USE_FML40_PGP_PATH: 1 .ok .if USE_FML40_PGP_PATH == 1 .use_fml8_value # # fml 4.0 # # value: directory string # DIST_AUTH_KEYRING_DIR: $DIR/etc/dist-auth .ok .if DIST_AUTH_KEYRING_DIR == $DIR/etc/dist-auth .use_fml8_value # DIST_ENCRYPT_KEYRING_DIR: $DIR/etc/dist-encrypt .ok .if DIST_ENCRYPT_KEYRING_DIR == $DIR/etc/dist-encrypt .use_fml8_value # ADMIN_AUTH_KEYRING_DIR: $DIR/etc/admin-auth .ok .if ADMIN_AUTH_KEYRING_DIR == $DIR/etc/admin-auth .use_fml8_value # ADMIN_ENCRYPT_KEYRING_DIR: $DIR/etc/admin-encrypt .ok .if ADMIN_ENCRYPT_KEYRING_DIR == $DIR/etc/admin-encrypt .use_fml8_value ######################################################################### ##### Section: Moderations; moderators check posted articles ### # # "moderator" certification type # # value: 1/2/3 # MODERATOR_FORWARD_TYPE: 2 # # !!! MODERATOR_FORWARD_TYPE は PERMIT_*_FROM の条件文の中でチェック !!! # # # 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_MEMBER_LIST: $DIR/moderators .ok .if MODERATOR_MEMBER_LIST .convert # # expire old submitted but not certified articles # # default: 2 weeks # # value: number # MODERATOR_EXPIRE_LIMIT: 14 .ok .if MODERATOR_EXPIRE_LIMIT == 14 .use_fml8_value ######################################################################### ##### Section: Security ### # # 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: root|postmaster|MAILER-DAEMON|msgs|nobody|news|majordomo|listserv|listproc|\S+\-help|\S+\-subscribe|\S+\-unsubscribe .ok .if REJECT_ADDR .convert # # 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 # REJECT_ADDR_LIST: $DIR/spamlist .ok .if REJECT_ADDR_LIST .convert # # check UNIX from to avoid mail loop. check in default. # # value: 1/0 # NOT_USE_UNIX_FROM_LOOP_CHECK: 0 .ok .if NOT_USE_UNIX_FROM_LOOP_CHECK == 0 .use_fml8_value .ok .if NOT_USE_UNIX_FROM_LOOP_CHECK == 1 incoming_mail_envelope_loop_check_rules -= check_envelope_sender # # check Message-Id: duplication to avoid mail loop # # value: 1/0 # CHECK_MESSAGE_ID: 1 .ok .if CHECK_MESSAGE_ID == 1 .use_fml8_value .ok .if CHECK_MESSAGE_ID == 0 incoming_mail_header_loop_check_rules -= check_message_id # # check mail body content md5 checksum to avoid mail loop # # do not check it in default. # # value: 1/0 # CHECK_MAILBODY_CKSUM: 0 .ok .if CHECK_MAILBODY_CKSUM == 1 .use_fml8_value .ok .if CHECK_MAILBODY_CKSUM == 0 incoming_mail_body_loop_check_rules -= check_body_checksum # # obsolete today # # Logs the getpeername() # # value: 1/0 # LOG_CONNECTION: 0 .ok .if LOG_CONNECTION .not_support # # 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 # ADDR_CHECK_MAX: 3 .ok .if ADDR_CHECK_MAX address_compare_function_domain_matching_level = %s # XXX SIZE OF THIS LIMIT = HEADER_SIZE + BODY_SIZE # # 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 # INCOMING_MAIL_SIZE_LIMIT: .ok .if INCOMING_MAIL_SIZE_LIMIT == 0 .not_support .ok .if INCOMING_MAIL_SIZE_LIMIT != 0 .convert # # When fml reject too big mail, # # if $NOTIFY_MAIL_SIZE_OVERFLOW is set, notify the rejection to the sender. # # value: 1/0 # NOTIFY_MAIL_SIZE_OVERFLOW: 1 .ok .if NOTIFY_MAIL_SIZE_OVERFLOW == 1 .use_fml8_value .ok .if NOTIFY_MAIL_SIZE_OVERFLOW == 0 .not_yet_implemented # # 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 # ANNOUNCE_MAIL_SIZE_OVERFLOW: 0 .ok .if ANNOUNCE_MAIL_SIZE_OVERFLOW == 0 .not_yet_implemented .ok .if ANNOUNCE_MAIL_SIZE_OVERFLOW == 1 .not_yet_implemented # # 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 # MAX_MEMBER_LIMIT: .ok .if MAX_MEMBER_LIMIT .convert # # Filter of posted article. # # &EnvelopeFilter is called in the top of &Distribute if you set # # $USE_DISTRIBUTE_FILTER = 1; # # value: 1/0 # USE_DISTRIBUTE_FILTER: .ok .if USE_DISTRIBUTE_FILTER == 1 use_article_filter = yes .ok .if USE_DISTRIBUTE_FILTER == 0 use_article_filter = no # # Filter of posted article. # # You can use $DISTRIBUTE_FILTER_HOOK for advanced customizes. # # value: string # DISTRIBUTE_FILTER_HOOK: .ok .if DISTRIBUTE_FILTER_HOOK .not_support # # $FILTER_NOTIFY_REJECTION enables fml.pl notifies the rejection to # # the sender. # # value: 1/0 # FILTER_NOTIFY_REJECTION: .ok .if FILTER_NOTIFY_REJECTION == 1 use_article_filter_reject_notice = yes .ok .if FILTER_NOTIFY_REJECTION == 0 use_article_filter_reject_notice = no # # Attribute of filter of posted article # # value: 1/0 # FILTER_ATTR_REJECT_NULL_BODY: 1 .ok .if FILTER_ATTR_REJECT_NULL_BODY == 1 article_text_plain_filter_rules += reject_null_mail_body .ok .if FILTER_ATTR_REJECT_NULL_BODY == 0 article_text_plain_filter_rules -= reject_null_mail_body # # 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_COMMAND: # XXX fml8 += operation meas append (but we need prepend here) .ok .if FILTER_ATTR_REJECT_COMMAND == 1 .use_fml8_value .ok .if FILTER_ATTR_REJECT_COMMAND == 0 article_text_plain_filter_rules -= reject_old_fml_command_syntax # # Attribute of filter of posted article # # reject Japanese "2byes English words" # # value: 1/0 # FILTER_ATTR_REJECT_2BYTES_COMMAND: # XXX fml8 += operation meas append (but we need prepend here) .ok .if FILTER_ATTR_REJECT_2BYTES_COMMAND == 1 .use_fml8_value .ok .if FILTER_ATTR_REJECT_2BYTES_COMMAND == 0 article_text_plain_filter_rules -= reject_japanese_command_syntax # # Attribute of filter of posted article # # reject command mail sent to the address for posting. # # value: 1/0 # FILTER_ATTR_REJECT_INVALID_COMMAND: 1 .ok .if FILTER_ATTR_REJECT_INVALID_COMMAND == 1 article_text_plain_filter_rules += reject_invalid_fml_command_syntax .ok .if FILTER_ATTR_REJECT_INVALID_COMMAND == 0 article_text_plain_filter_rules -= reject_invalid_fml_command_syntax # # 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_ONE_LINE_BODY: 1 .ok .if FILTER_ATTR_REJECT_ONE_LINE_BODY == 1 article_text_plain_filter_rules += reject_one_line_message .ok .if FILTER_ATTR_REJECT_ONE_LINE_BODY == 0 article_text_plain_filter_rules -= reject_one_line_message # # 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_MS_GUID: 1 .ok .if FILTER_ATTR_REJECT_MS_GUID == 1 article_text_plain_filter_rules += reject_ms_guid .ok .if FILTER_ATTR_REJECT_MS_GUID == 0 article_text_plain_filter_rules -= reject_ms_guid # # reject not ascii nor ISO-2022-JP # # value: 1/0 # FILTER_ATTR_REJECT_INVALID_JAPANESE: 0 # XXX fml8 += operation meas append (but we need prepend here) .ok .if FILTER_ATTR_REJECT_INVALID_JAPANESE == 1 .use_fml8_value .ok .if FILTER_ATTR_REJECT_INVALID_JAPANESE == 0 article_text_plain_filter_rules -= reject_not_iso2022jp_japanese_string # # cutoff empty message. # # value: 1/0 # CONTENT_HANDLER_CUTOFF_EMPTY_MESSAGE: 0 .ok .if CONTENT_HANDLER_CUTOFF_EMPTY_MESSAGE .not_support # # reject empty message after cut off process. # # value: 1/0 # CONTENT_HANDLER_REJECT_EMPTY_MESSAGE: 0 .ok .if CONTENT_HANDLER_REJECT_EMPTY_MESSAGE .not_support # # try to convert Japanese HANKAKU chars in the mail body to ZENAKKU # # value: 1/0 # USE_HANKAKU_CONVERTER: 0 .ok .if USE_HANKAKU_CONVERTER == 0 .not_yet_implemented .ok .if USE_HANKAKU_CONVERTER == 1 .not_yet_implemented # # 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" / "" # HTML_MAIL_DEFAULT_HANDLER: .ok .if HTML_MAIL_DEFAULT_HANDLER .not_support # # Traffic Monitoring Mechanism within fml # # Mail Traffic Information: internal traffic monitor # # value: 1/0 # USE_MTI: .if USE_MTI .not_yet_implemented # # MIT warning (mail bomb report) negative cache interval # # to avoid mail bomb of "mail bomb attack report" itself. # # value: number # MTI_WARN_INTERVAL: 3600 .if MTI_WARN_INTERVAL .not_yet_implemented # # value: filename string # MTI_WARN_LASTLOG: .if MTI_WARN_LASTLOG .not_yet_implemented # # garbage collection # # how old data (cache) to remove in clean up # # value: number # MTI_EXPIRE_UNIT: 3600 .if MTI_EXPIRE_UNIT # # low water mark # # value: number # MTI_BURST_SOFT_LIMIT: 1 .if MTI_BURST_SOFT_LIMIT .not_yet_implemented # # high water mark # # value: number # MTI_BURST_HARD_LIMIT: 2 .if MTI_BURST_HARD_LIMIT .not_yet_implemented # # function name to evaluate the current traffic load # # value: funtion string # MTI_COST_EVAL_FUNCTION: MTISimpleBomberP .if MTI_COST_EVAL_FUNCTION .not_yet_implemented # # cache of spammer candidates # # value: filename string # MTI_MAIL_FROM_HINT_LIST: $DIR/mti_mailfrom.hints .if MTI_MAIL_FROM_HINT_LIST .not_yet_implemented # # how to announce the new comer if $AUTO_REGISTERED_UNDELIVER_P is 0. # # value: raw / prepend_info # SUBSCRIBE_ANNOUNCE_FORWARD_TYPE: prepend_info .ok .if SUBSCRIBE_ANNOUNCE_FORWARD_TYPE == prepend_info .not_support .ok .if SUBSCRIBE_ANNOUNCE_FORWARD_TYPE == raw .not_support # # 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 # UNSUBSCRIBE_AUTH_TYPE: # XXX in fml8, encfore use of confirmation .ok .if UNSUBSCRIBE_AUTH_TYPE == confirmation unsubscribe_command_auth_type = confirmation .ok .if UNSUBSCRIBE_AUTH_TYPE != confirmation unsubscribe_command_auth_type = confirmation # # chaddr checks confirmation # # value: confirmation / "" # CHADDR_AUTH_TYPE: # XXX in fml8, encfore use of confirmation .ok .if CHADDR_AUTH_TYPE == confirmation chaddr_command_auth_type = confirmation .ok .if CHADDR_AUTH_TYPE != confirmation unsubscribe_command_auth_type = confirmation # # 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 # USE_LOG_MAIL: 0 .ok .if USE_LOG_MAIL == 0 use_incoming_mail_cache = no .ok .if USE_LOG_MAIL == 1 use_incoming_mail_cache = yes # # value: filename string # LOG_MAIL_DIR: $VAR_DIR/Mail .ok .if LOG_MAIL_DIR .use_fml8_value # LOG_MAIL_SEQ: $LOG_MAIL_DIR/.seq .ok .if LOG_MAIL_SEQ .use_fml8_value # # value: number # NUM_LOG_MAIL: 100 .ok .if NUM_LOG_MAIL incoming_mail_cache_size = %s # LOG_MAIL_FILE_SIZE_MAX: 2048 .ok .if LOG_MAIL_FILE_SIZE_MAX .use_fml8_value # # PGP Encrypted ML # # value: 1/0 # USE_ENCRYPTED_DISTRIBUTION: .ok .if USE_ENCRYPTED_DISTRIBUTION == 1 .not_yet_implemented .ok .if USE_ENCRYPTED_DISTRIBUTION == 0 .not_yet_implemented # # value: pgp / pgp2 / pgp5 / gpg # ENCRYPTED_DISTRIBUTION_TYPE: pgp2 .ok .if ENCRYPTED_DISTRIBUTION_TYPE == pgp .not_yet_implemented .ok .if ENCRYPTED_DISTRIBUTION_TYPE == pgp2 .not_yet_implemented .ok .if ENCRYPTED_DISTRIBUTION_TYPE == pgp5 .not_yet_implemented .ok .if ENCRYPTED_DISTRIBUTION_TYPE == gpg .not_yet_implemented # # obosolete in fml 4.0 # # value: 2/5/6 # # PGP_VERSION: 2 ######################################################################### ##### Section: Header Customization ### # # In general, you can control fields in header in the following: # # # # @HdrFieldsOrder Fields Order In Header # # # # &DEFINE_FIELD_ORIGINAL('field'); Conserve Original # # &DEFINE_FIELD_FORCED('field', "contents"); Overwrite # # # # In default, we discard fields not shown in @HdrFieldsOrder. # # 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 # DATE_TYPE: original-date .ok .if DATE_TYPE == original-date .use_fml8_value .ok .if DATE_TYPE != original-date .not_support # # In article header, fml adds following header fields. # # # # $XMLNAME # # $XMLCOUNT: sequence-number # # # # e.g. # # X-ML-Name: Elena # # X-Mail-Count: 00007 # # # # value: string # XMLNAME: X-ML-Name: Elena .ok .if XMLNAME == X-ML-Name: Elena .convert .ok .if XMLNAME != X-ML-Name: Elena .convert # XMLCOUNT: X-Mail-Count .ok .if XMLCOUNT == X-Mail-Count article_header_rewrite_rules += add_fml_traditional_article_id .ok .if XMLCOUNT != X-Mail-Count .not_support # # 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] / "" # SUBJECT_TAG_TYPE: .ok .if SUBJECT_TAG_TYPE .convert # # BRACKET of "Subject: [BRACKET:ID] ..." form # # value: string # BRACKET: Elena .ok .if BRACKET == Elena .not_support # # 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. # STRIP_BRACKETS: 0 .ok .if STRIP_BRACKETS == 0 .not_support # # You can customize your own bracket by these variables. # # See doc/tutorial and libtagdef.pl on examples. # # value: regexp string # BRACKET_SEPARATOR: .ok .if BRACKET_SEPARATOR .not_support # SUBJECT_FREE_FORM: .ok .if SUBJECT_FREE_FORM .not_support # SUBJECT_FREE_FORM_REGEXP: .ok .if SUBJECT_FREE_FORM_REGEXP .not_support # SUBJECT_FORM_LONG_ID: .ok .if SUBJECT_FORM_LONG_ID .convert # # obsolete based on RFC1123 # # value: 1/0 # USE_ERRORS_TO: .ok .if USE_ERRORS_TO == 1 article_header_rewrite_rules += rewrite_errors_to .ok .if USE_ERRORS_TO == 0 article_header_rewrite_rules -= rewrite_errors_to # # obsolete based on RFC1123 # # value: string # ERRORS_TO: .ok .if ERRORS_TO .convert # # 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 # USE_ORIGINAL_MESSAGE_ID: 1 .ok .if USE_ORIGINAL_MESSAGE_ID == 1 .use_fml8_value .ok .if USE_ORIGINAL_MESSAGE_ID == 0 .not_yet_implemented # # Precedence: field; # # value: string # PRECEDENCE: bulk .ok .if PRECEDENCE mail_header_default_precedence = %s # # append STARTREK stardate :-) in article. # # Stardate calculation algorithm is ambiguous. # # X-Stardate: field # # value: 1/0 # APPEND_STARDATE: .ok .if APPEND_STARDATE == 1 article_header_rewrite_rules += rewrite_stardate .ok .if APPEND_STARDATE == 0 article_header_rewrite_rules -= rewrite_stardate # # RFC2369 e.g. list-post: .. # # value: 1/0 # USE_RFC2369: 1 .ok .if USE_RFC2369 == 1 article_header_rewrite_rules += add_rfc2369 .ok .if USE_RFC2369 == 0 article_header_rewrite_rules -= add_rfc2369 # # List-* # LIST_SOFTWARE: .ok .if LIST_SOFTWARE .use_fml8_value # LIST_POST: .ok .if LIST_POST .convert # LIST_OWNER: .ok .if LIST_OWNER .convert # LIST_HELP: .ok .if LIST_HELP .convert # LIST_SUBSCRIBE: .ok .if LIST_SUBSCRIBE .convert # LIST_UNSUBSCRIBE: .ok .if LIST_UNSUBSCRIBE .convert # LIST_ID: .ok .if LIST_ID .convert # # 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 # REWRITE_TO: .ok .if REWRITE_TO == 2 .not_support .ok .if REWRITE_TO == 1 .not_support .ok .if REWRITE_TO == 0 .use_fml8_value # # Default values if no value (no field) is given. # # value: string # Subject: .ok .if Subject .not_support # From_address: not.found .ok .if From_address .not_support # User: not.found .ok .if User .not_support # Date: not.found .ok .if Date .not_support # # TIME ZONE; +0900 is RFC822 syntax (I like JST but ... ;-) # # value: +\d{4} / -\d{4} # TZone: +0900 .ok .if TZone .not_support # # time zone within summer time if you use summer time. # # thank HIROSHIMA Naoki on this idea # TZONE_DST: .ok .if TZONE_DST .not_support # # ## Sub Section: Pass All 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 # PASS_ALL_FIELDS_IN_HEADER: 1 .ok .if PASS_ALL_FIELDS_IN_HEADER == 1 .use_fml8_value .ok .if PASS_ALL_FIELDS_IN_HEADER == 0 .not_support .ok .if SUPERFLUOUS_HEADERS == 1 .use_fml8_value .ok .if SUPERFLUOUS_HEADERS == 0 .not_support # # ignore header field irrespective of @HdrFieldsOrder and # # $PASS_ALL_FIELDS_IN_HEADER setting # # value: regexp string # SKIP_FIELDS: Return-Receipt-To .ok .if SKIP_FIELDS .convert # # correct a wrong input # # value: 1/0 # ALLOW_WRONG_LINES_IN_HEADER: 1 # XXX after fml 4.0.3 .ok .if ALLOW_WRONG_LINES_IN_HEADER == 1 .not_support ######################################################################### ##### Section: Commands, Command Traps, File Operations (e.g. mget) ### # # obsolete # # COMMAND format is "#help" == "# help" if $COMMAND_SYNTAX_EXTENSION is set. # # value: 1/0 # COMMAND_SYNTAX_EXTENSION: 1 .ok .if COMMAND_SYNTAX_EXTENSION == 1 .use_fml8_value # # "Subject: # commands" is available? # # value: 1/0 # USE_SUBJECT_AS_COMMANDS: 0 .ok .if USE_SUBJECT_AS_COMMANDS .not_support # # 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 # USE_WARNING: 0 .ok .if USE_WARNING == 0 .use_fml8_value .ok .if USE_WARNING == 1 .not_support # # obsolete: since this is the same as --ctladdr. # # value: 1/0 # COMMAND_ONLY_SERVER: 0 .ok .if COMMAND_ONLY_SERVER .use_fml8_value # # **ATTENTION** # # $PROHIBIT_COMMAND_FOR_STRANGER is obsoletes since # # $PROHIBIT_COMMAND_FOR_STRANGER equals $PERMIT_COMMAND_FROM = "anyone"; # # ## Sub Section: traps ## # # 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 # COMMAND_CHECK_LIMIT: 3 .ok .if COMMAND_CHECK_LIMIT == 3 .not_support # # obsolete # # value: number # GUIDE_CHECK_LIMIT: 3 .ok .if GUIDE_CHECK_LIMIT == 3 .not_support # # obsolete # # value: string # GUIDE_KEYWORD: guide .ok .if GUIDE_KEYWORD == guide .not_support # # The maximum length for each command. 128 bytes by default. # # value: number # MAXLEN_COMMAND_INPUT: 128 .ok .if MAXLEN_COMMAND_INPUT > 0 .if MAXLEN_COMMAND_INPUT != 128 command_mail_line_length_limit = %s # # 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 # MAXNUM_COMMAND_INPUT: .ok .if MAXNUM_COMMAND_INPUT > 0 command_mail_valid_command_limit = %s # # "# chaddr" command name aliases # # value: regexp string # CHADDR_KEYWORD: chaddr|change\-address|change .ok .if CHADDR_KEYWORD == chaddr|change\-address|change .use_fml8_value # # choise of addresses to return for "chaddr" command reply # # value: newaddr curaddr maintainer # CHADDR_REPLY_TO: newaddr curaddr .ok .if CHADDR_REPLY_TO == newaddr curaddr .not_yet_implemented # # choise of addresses to return for "admin chaddr" command reply # # value: newaddr curaddr maintainer # ADMIN_CHADDR_REPLY_TO: newaddr curaddr .ok .if ADMIN_CHADDR_REPLY_TO == newaddr curaddr .not_yet_implemented # # ## Sub Section: mget ## # # The default mode of "mget" without mode (default is "tar.gz" form). # # $MGET_TEXT_MODE_DEFAULT is used by &SendFileBySplit # # value: mode string # MGET_MODE_DEFAULT: .ok .if MGET_MODE_DEFAULT .not_support # MGET_TEXT_MODE_DEFAULT: .ok .if MGET_TEXT_MODE_DEFAULT .not_support # # 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 # MAIL_LENGTH_LIMIT: 1000 .ok .if MAIL_LENGTH_LIMIT == 1000 .not_support # SLEEPTIME: 60 .ok .if SLEEPTIME .not_support # # 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_VERSION: .ok .if MIME_VERSION .not_support # MIME_CONTENT_TYPE: .ok .if MIME_CONTENT_TYPE .not_support # MIME_MULTIPART_BOUNDARY: .ok .if MIME_MULTIPART_BOUNDARY .not_support # MIME_MULTIPART_CLOSE_DELIMITER: .ok .if MIME_MULTIPART_CLOSE_DELIMITER .not_support # MIME_MULTIPART_DELIMITER: .ok .if MIME_MULTIPART_DELIMITER .not_support # MIME_MULTIPART_PREAMBLE: .ok .if MIME_MULTIPART_PREAMBLE .not_support # MIME_MULTIPART_TRAILER: .ok .if MIME_MULTIPART_TRAILER .not_support # # Japanese specific # # sjis conversion in "mget ish" mode. # # value: 1/0 # USE_SJIS_IN_ISH: .ok .if USE_SJIS_IN_ISH .not_support # # RFC1153 configurations; see doc/tutorial for the detail # # value: number # RFC1153_ISSUE: .ok .if RFC1153_ISSUE .not_support # # value: number / string # RFC1153_VOL: .ok .if RFC1153_VOL .not_support # # value: filename string # RFC1153_SEQUENCE_FILE: .ok .if RFC1153_SEQUENCE_FILE .not_support # # ## Sub Section: MTA specific ## # # 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 # USE_DOT_QMAIL_EXT: 0 .ok .if USE_DOT_QMAIL_EXT == 0 .use_fml8_value # # ## Sub Section: Headers of reply from FML ## # # obsolete # # For the reply for commands from fml, # # we force Reply-To: $FORCE_COMMAND_REPLY_TO ?(default is $CONTROL_ADDRESS) # # value: string # FORCE_COMMAND_REPLY_TO: .ok .if FORCE_COMMAND_REPLY_TO .not_yet_implemented # # 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 # MGET_SUBJECT_TEMPLATE: result for mget _DOC_MODE_ _PART_ _ML_FN_ .ok .if MGET_SUBJECT_TEMPLATE == result for mget _DOC_MODE_ _PART_ _ML_FN_ .not_support # # 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 # MESSAGE_RETURN_ADDR_POLICY: reply-to .ok .if MESSAGE_RETURN_ADDR_POLICY == reply-to .not_support ######################################################################### ##### Section: Digest/Matome Okuri Configurations ### # # # # $MSEND_MODE_DEFAULT is the default of msend (when e.g. m=3) # # and the format is the same as $MGET_MODE_DEFAULT. # # which is "tar.gz" format. # # 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_SUBJECT_TEMPLATE: Digest _ARTICLE_RANGE_ _PART_ _ML_FN_ .ok .if MSEND_SUBJECT_TEMPLATE .not_support # # Digest/Matome Okuri rc file # # value: filename string # MSEND_RC: $VARLOG_DIR/msendrc .ok .if MSEND_RC .not_support # # rfc1153 or rfc934 # # obsoletes $USE_RFC1153, $USE_RFC1153_DIGEST, $USE_RFC934 # # value: mode string # MSEND_MODE_DEFAULT: .ok .if MSEND_MODE_DEFAULT .not_support # # Subject: # # value: string # MSEND_DEFAULT_SUBJECT: .ok .if MSEND_DEFAULT_SUBJECT .not_support # # 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: .ok .if MSEND_NOTIFICATION .not_support # # value: string # MSEND_NOTIFICATION_SUBJECT: .ok .if MSEND_NOTIFICATION_SUBJECT .not_support # # not require X-ML-Info: in the "mget"; # # value: 1/0 # MSEND_NOT_USE_X_ML_INFO: .ok .if MSEND_NOT_USE_X_ML_INFO == 0 .use_fml8_value .ok .if MSEND_NOT_USE_X_ML_INFO == 1 .not_support # # not do newsyslog in the Sundays morning. $NOT_USE_NEWSYSLOG (CFVersion 2) # # value: 1/0 # MSEND_NOT_USE_NEWSYSLOG: .ok .if MSEND_NOT_USE_NEWSYSLOG == 0 .not_support ######################################################################### ##### Section: Other Files for Configurations and Logs ### # # cache file of Message-ID: loop check # # value: filename string # LOG_MESSAGE_ID: $VARRUN_DIR/msgidcache .ok .if LOG_MESSAGE_ID == $VARRUN_DIR/msgidcache .use_fml8_value # # cache size of Message-ID: negative cache # # value: number # MESSAGE_ID_CACHE_BUFSIZE: 6000 .ok .if MESSAGE_ID_CACHE_BUFSIZE == 6000 .use_fml8_value # # cache file of mailbody cksum mail loop check # # value: filename string # LOG_MAILBODY_CKSUM: $VARRUN_DIR/bodycksumcache .ok .if LOG_MAILBODY_CKSUM != $VARRUN_DIR/bodycksumcache .use_fml8_value # # $MEMBER_LIST member who can post and use commands # # $ACTIVE_LIST delivery list # # value: filename string # MEMBER_LIST: $DIR/members .ok .if MEMBER_LIST != $DIR/members .convert # ACTIVE_LIST: $DIR/actives .ok .if ACTIVE_LIST != $DIR/actives .convert # # 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 # GUIDE_FILE: $DIR/guide .ok .if GUIDE_FILE != $DIR/guide .convert # OBJECTIVE_FILE: $DIR/objective .ok .if OBJECTIVE_FILE != $DIR/objective .convert # HELP_FILE: $DIR/help .ok .if HELP_FILE .use_fml8_value # # When fml rejects mail from someone, fml sends back this file to the sender. # # value: filename string # DENY_FILE: $DIR/deny .ok .if DENY_FILE != $DIR/deny .convert # # $LOGFILE log file # # $MGET_LOGFILE log file for mget routine, $LOGFILE in default. # # value: filename string # LOGFILE: $DIR/log .ok .if LOGFILE != $DIR/log .convert # MGET_LOGFILE: $DIR/log .ok .if MGET_LOGFILE != $DIR/log .not_support # # 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 # LOGFILE_SUFFIX: .ok .if LOGFILE_SUFFIX .convert # # when -d2 ($debug = 2), logs this file for convenience. # # value: filename string # DEBUG_LOGFILE: $DIR/log.debug .ok .if DEBUG_LOGFILE == $DIR/log.debug .not_support # # article summary file # # value: filename string # SUMMARY_FILE: $DIR/summary .ok .if SUMMARY_FILE != $DIR/summary .convert # # sequence number file # # value: filename string # SEQUENCE_FILE: $DIR/seq .ok .if SEQUENCE_FILE != $DIR/seq .convert # # rename(2) lock (liblock.pl) # # value: filename string # LOCK_FILE: $VARRUN_DIR/lockfile.v7 .ok .if LOCK_FILE == $VARRUN_DIR/lockfile.v7 .not_support .ok .if LOCK_DIR .not_support .ok .if LOCKDIR .not_support .ok .if LOCKFILE .not_support ######################################################################### ##### Section: SMTP and Delivery ### # # # # fml sends mail via SMTP to mail server $HOST:$PORT/tcp. # # The default host is one fml runs on itself. # # $HOST is an arbitrary host (if you can access it) which runs MTA # # (e.g. sendmail). If the Mailing List Server machine is week, # # you can use the sendmail of another powerful host(host). # # always try IPv6 connection by default # # value: 1/0 # USE_INET6: 1 .ok .if USE_INET6 == 1 .use_fml8_value .ok .if USE_INET6 == 0 .not_support # # value: string # HOST: localhost .ok .if HOST .convert # # value: number # PORT: 25 .ok .if PORT .convert # # enforce MAIL FROM:<$SMTP_SENDER> if defined # # value: address # SMTP_SENDER: .ok .if SMTP_SENDER .convert # # IF $NOT_TRACE_SMTP IS 1 (default 0), we log the SMTP session to $SMTP_LOG # # value: filename string # SMTP_LOG: $VARLOG_DIR/_smtplog .ok .if SMTP_LOG .use_fml8_value # # rotate use of var/log/_smtplog.$i (where $i is the number) # # value: 1/0 # USE_SMTP_LOG_ROTATE: 1 .ok .if USE_SMTP_LOG_ROTATE == 1 .use_fml8_value .ok .if USE_SMTP_LOG_ROTATE == 0 .not_support # # expire how old _smtplog.$date # # value: number # SMTP_LOG_ROTATE_EXPIRE_LIMIT: 90 .ok .if SMTP_LOG_ROTATE_EXPIRE_LIMIT == 90 .not_support .ok .if SMTP_LOG_ROTATE_EXPIRE_LIMIT != 90 .not_support # # the number of var/log/_smtplog.$i files. This is the value of modulus. # # value: number # NUM_SMTP_LOG_ROTATE: 8 .ok .if NUM_SMTP_LOG_ROTATE .use_fml8_value # # type of suffix for _smtplog # # value: number / day # SMTP_LOG_ROTATE_TYPE: number .ok .if SMTP_LOG_ROTATE_TYPE == day .not_support .ok .if SMTP_LOG_ROTATE_TYPE .use_fml8_value # # 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 # NOT_TRACE_SMTP: 0 .ok .if NOT_TRACE_SMTP == 0 use_smtp_log = yes .ok .if NOT_TRACE_SMTP == 1 use_smtp_log = no # TRACE_SMTP_DELAY: .ok .if TRACE_SMTP_DELAY .not_support # # smtp profile for debug # # value: 1/0 # USE_SMTP_PROFILE: 0 .ok .if USE_SMTP_PROFILE .not_support # # 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 # MCI_SMTP_HOSTS: .ok .if MCI_SMTP_HOSTS .not_support # # obsolete today # # value: string # DEFAULT_RELAY_SERVER: .ok .if DEFAULT_RELAY_SERVER .not_support # # 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 # RELAY_HACK: .ok .if RELAY_HACK .not_support # # obsolete today # # value: filename string # CF_DEF: .ok .if CF_DEF .not_support # # 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 # USE_OUTGOING_ADDRESS: .ok .if USE_OUTGOING_ADDRESS .not_yet_implemented # # 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 # OUTGOING_ADDRESS: .ok .if OUTGOING_ADDRESS .not_yet_implemented # # 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 # USE_VERP: .ok .if USE_VERP .not_support # # postfix $verp_delimiters # # value: string # POSTFIX_VERP_DELIMITERS: += .ok .if POSTFIX_VERP_DELIMITERS postfix_verp_delimiters = %s # # try VERPs once a day for efficient delivery. # # value: 1/0 # TRY_VERP_PER_DAY: .ok .if TRY_VERP_PER_DAY .not_support # # we use ESMTP pipelining mechanism by default. # # value: 1/0 # NOT_USE_ESMTP_PIPELINING: 0 .ok .if NOT_USE_ESMTP_PIPELINING == 0 .not_support # # smtpfeed special option which provides VERPs like error track trick. # # value: 1/0 # USE_SMTPFEED_F_OPTION: .ok .if USE_SMTPFEED_F_OPTION .not_support ######################################################################### ##### Section: MISC ### # # ## Sub Section: 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 # USE_MIME: 1 .ok .if USE_MIME == 1 .use_fml8_value .ok .if USE_MIME == 0 .not_support # # special hack to treat broken MIME ending (e.g. by MacOS X) # # value: 1/0 # MIME_BROKEN_ENCODING_FIXUP: 0 .ok .if MIME_BROKEN_ENCODING_FIXUP == 0 .use_fml8_value # # 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 # MIME_DECODED_ARTICLE: .ok .if MIME_DECODED_ARTICLE .not_support # # ## Sub Section: Preamble and Trailer for Mail Body ## # # 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 # PREAMBLE_MAILBODY: .ok .if PREAMBLE_MAILBODY .not_support # TRAILER_MAILBODY: .ok .if TRAILER_MAILBODY .not_support # # ## Sub Section: Reply Configurations ## # # 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 # GOOD_BYE_PHRASE: .ok .if GOOD_BYE_PHRASE .not_support # FACE_MARK: .ok .if FACE_MARK .not_support # # value: function name string # PROC_GEN_INFO: GenInfo .ok .if PROC_GEN_INFO .not_support # # ## Sub Section: Lock Algorithm ## # # 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 # USE_FLOCK: 1 .ok .if USE_FLOCK == 1 .use_fml8_value .ok .if USE_FLOCK == 0 .not_support # # In rename(2) base lock case, # # the timeout of rename(2) lock is rand(3) * $MAX_TIMEOUT secs. # # value: number # MAX_TIMEOUT: 200 .ok .if MAX_TIMEOUT == 200 .not_support # # ## Sub Section: misc ## # # Not spooling of articles (default is "spooling") # # It may be used for some secret ML, ML on diskless machihe;-), ISP services # # value: 1/0 # NOT_USE_SPOOL: .ok .if NOT_USE_SPOOL == 1 use_article_spool = no .ok .if NOT_USE_SPOOL == 0 use_article_spool = yes # # "$CFVersion < 2" equals "$COMPAT_FML15 = 1;" # # value: 1/0 # COMPAT_FML15: 0 .ok .if COMPAT_FML15 == 0 .not_support # # 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 # NEWSYSLOG_MAX: 4 .ok .if NEWSYSLOG_MAX == 4 .not_support # # not used generally. This is "cron of fml package" configuration. # # $CRONTAB configuratoin file # # $CRON_PIDFILE pid file # # value: filename string # CRONTAB: etc/crontab .ok .if CRONTAB == etc/crontab .not_support # CRON_PIDFILE: var/run/cron.pid .ok .if CRON_PIDFILE == var/run/cron.pid .not_support # # not used generally. This is "cron of fml package" configuration. # # cron notifies what is done to $MAINTAINER. # # value: 1/0 # CRON_NOTIFY: 1 .ok .if CRON_NOTIFY == 1 .not_support # # cross operations # # value: 1/0 # USE_CROSSPOST: .ok .if USE_CROSSPOST .not_support # # 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 # # value: 1/0 # USE_MEMBER_NAME: .ok .if USE_MEMBER_NAME .not_support ######################################################################### ##### Section: Expire and Archive ### # # 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 # USE_EXPIRE: 0 .ok .if USE_EXPIRE == 0 use_article_expire = no .ok .if USE_EXPIRE == 1 use_article_expire = yes # # expire summary file when $USE_EXPIRE is enabled. # # value: 1/0 # EXPIRE_SUMMARY: .ok .if EXPIRE_SUMMARY == 0 use_article_summary_file_expire = no .ok .if EXPIRE_SUMMARY == 1 use_article_summary_file_expire = yes # # expire how old articles # # value: number / ( number + day/week/month ) # EXPIRE_LIMIT: 7days .ok .if EXPIRE_LIMIT == 7days .use_fml8_value # # 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 # USE_ARCHIVE: 0 .ok .if USE_ARCHIVE == 0 .not_support # # spool/articles is aggregated to "$ARCHIVE_DIR/100.tar.gz" # # by the unit $ARCHIVE_UNIT. # # value: number # ARCHIVE_UNIT: 100 .ok .if ARCHIVE_UNIT == 100 .not_support # DEFAULT_ARCHIVE_UNIT: 100 .ok .if DEFAULT_ARCHIVE_UNIT == 100 .not_support # # spool/articles is aggregated to "$ARCHIVE_DIR/100.tar.gz" # # value: directory string # ARCHIVE_DIR: var/archive .ok .if ARCHIVE_DIR == var/archive .not_support # # "index" command # # In default we scan spool and archives and reports, but # # send back $INDEX_FILE if $INDEX_FILE exists. # # value: filename string # INDEX_FILE: $DIR/index .ok .if INDEX_FILE == $DIR/index .not_yet_implemented # # show directory name in "index" command result? default is "no". # # value: 1/0 # INDEX_SHOW_DIRNAME: 0 .ok .if INDEX_SHOW_DIRNAME == 0 .not_yet_implemented ##### Section: Library Commands ### # # # # "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_DIR: var/library .ok .if LIBRARY_DIR == var/library .not_support # LIBRARY_ARCHIVE_DIR: archive .ok .if LIBRARY_ARCHIVE_DIR == archive .not_support # # ## Sub Section: newsyslog(8) ## # # to turn over \$DIR/log # # value: number # LOGFILE_NEWSYSLOG_LIMIT: .ok .if LOGFILE_NEWSYSLOG_LIMIT .convert # # to turn over $ACTIVE_LIST and $MEMBER_LIST if the file size over this value, # # default 150K = 30*5000 # # value: number / (number + K/M) # AMLIST_NEWSYSLOG_LIMIT: 150K .ok .if AMLIST_NEWSYSLOG_LIMIT == 150K .not_support ##### Section: Html Configurations ### # # # # 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 # AUTO_HTML_GEN: .ok .if AUTO_HTML_GEN == 1 use_html_archive = yes .ok .if AUTO_HTML_GEN == 0 use_html_archive = no # # use Mail::HTML::Lite in fml-devel (fml next generation). # # value: 1/0 # USE_NEW_HTML_GEN: .ok .if USE_NEW_HTML_GEN == 1 use_html_archive = yes .ok .if USE_NEW_HTML_GEN == 0 use_html_archive = no # # value: 1/0 # HTML_THREAD: 1 .ok .if HTML_THREAD == 1 .use_fml8_value .ok .if HTML_THREAD == 0 .not_support # # value: 1/0 # HTML_INDEX_REVERSE_ORDER: 1 .ok .if HTML_INDEX_REVERSE_ORDER == 1 .use_fml8_value .ok .if HTML_INDEX_REVERSE_ORDER == 0 .not_support # # generate html articles under htdocs/ # # value: directory string # HTML_DIR: htdocs .ok .if HTML_DIR == htdocs .use_fml8_value # # 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_EXPIRE_LIMIT: .ok .if HTML_EXPIRE_LIMIT .not_support # # title of index.html # # value: string # HTML_INDEX_TITLE: .ok .if HTML_INDEX_TITLE .not_support # # cache file # # value: filename string # HTML_DATA_CACHE: .ok .if HTML_DATA_CACHE .use_fml8_value # HTML_DATA_THREAD: .ok .if HTML_DATA_THREAD .use_fml8_value # # filter in generate html file # # value: filename string # HTML_OUTPUT_FILTER: .ok .if HTML_OUTPUT_FILTER .not_support # # stylesheet file name (see HTML 4.0) # # "fml.css" is default. # # value: filename string # HTML_STYLESHEET_BASENAME: .ok .if HTML_STYLESHEET_BASENAME .not_support # # threading algorithm type # # value: default / prefer-in-reply-to # HTML_THREAD_REF_TYPE: prefer-in-reply-to .ok .if HTML_THREAD_REF_TYPE == prefer-in-reply-to .use_fml8_value .ok .if HTML_THREAD_REF_TYPE == default .not_support # # 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_THREAD_SORT_TYPE: .ok .if HTML_THREAD_SORT_TYPE == reverse-number html_archive_index_order_type = reverse .ok .if HTML_THREAD_SORT_TYPE == NULL html_archive_index_order_type = normal # # $subdir type of htdocs/$subdir/ # # value: number / day / week / month / infinite # HTML_INDEX_UNIT: day .ok .if HTML_INDEX_UNIT .not_support # # threading type # # value: "" / UL # HTML_INDENT_STYLE: UL .ok .if HTML_INDENT_STYLE .not_support # # image file embedding style # # value: A / IMAGE # HTML_MULTIPART_IMAGE_REF_TYPE: .ok .if HTML_MULTIPART_IMAGE_REF_TYPE .not_support # # html file umask # # value: "" / umask # HTML_DEFAULT_UMASK: .ok .if HTML_DEFAULT_UMASK .not_support # HTML_WRITE_UMASK: .ok .if HTML_WRITE_UMASK .not_support ##### Section: Interface to DataBase Management System ### # # value: 1/0 # USE_DATABASE: .ok .if USE_DATABASE .not_support # # value: # DATABASE_METHOD: .ok .if DATABASE_METHOD .not_support # # value: # DATABASE_CACHE_FILE_SUFFIX: .ok .if DATABASE_CACHE_FILE_SUFFIX .not_support # # value: filename # DATABASE_DRIVER: toymodel.pl .ok .if DATABASE_DRIVER == toymodel.pl .not_support # # attributes to inform database drivers # # value: # DATABASE_DRIVER_ATTRIBUTES: always_lower_domain .ok .if DATABASE_DRIVER_ATTRIBUTES == always_lower_domain .not_support # # ## Sub Section: RDBMS # # value: string # SQL_SERVER_HOST: .ok .if SQL_SERVER_HOST .not_support # # value: number # SQL_SERVER_PORT: .ok .if SQL_SERVER_PORT .not_support # # value: string # SQL_SERVER_USER: .ok .if SQL_SERVER_USER .not_support # # value: string # SQL_DATABASE_NAME: .ok .if SQL_DATABASE_NAME .not_support # # value: string # SQL_SERVER_PASSWORD: .ok .if SQL_SERVER_PASSWORD .not_support # # value: string # SQL_DATABASE_NAME: .ok .if SQL_DATABASE_NAME .not_support # # ## Sub Section: LDAP # # value: string # LDAP_SERVER_HOST: .ok .if LDAP_SERVER_HOST .not_support # LDAP_SERVER_PASSWORD: .ok .if LDAP_SERVER_PASSWORD .not_support # LDAP_SEARCH_BASE: .ok .if LDAP_SEARCH_BASE .not_support # LDAP_SERVER_BIND: .ok .if LDAP_SERVER_BIND .not_support # LDAP_QUERY_FILTER: .ok .if LDAP_QUERY_FILTER .not_support ##### Section: Interface to other Services (http,ftp,gopher,www) ### # # "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 # USE_WHOIS: .ok .if USE_WHOIS .not_support # # value: string # DEFAULT_WHOIS_SERVER: .ok .if DEFAULT_WHOIS_SERVER .not_support # # value: filename string # WHOIS_DB: $VARDB_DIR/whoisdb .ok .if WHOIS_DB == $VARDB_DIR/whoisdb .not_support # WHOIS_HELP_FILE: .ok .if WHOIS_HELP_FILE .not_support # # do Japanese conversion or not? for the result from whois server # # value: 1/0 # WHOIS_JCODE_P: 1 .ok .if WHOIS_JCODE_P == 1 .not_support ######################################################################### ##### Section: Architecture Dependence ### # # cpu-type manufacturer operating-system by GNU config.guess ("makefml") # # value: string # CPU_TYPE_MANUFACTURER_OS: .ok .if CPU_TYPE_MANUFACTURER_OS .use_fml8_value # # struct sockaddr # # It is system dependent. # # value: string # STRUCT_SOCKADDR: S n a4 x8 .ok .if STRUCT_SOCKADDR .use_fml8_value # # flock(2) system call; please see "/usr/include/sys/file.h" # # value: number # LOCK_SH: 1 .ok .if LOCK_SH .use_fml8_value # LOCK_EX: 2 .ok .if LOCK_EX .use_fml8_value # LOCK_NB: 4 .ok .if LOCK_NB .use_fml8_value # LOCK_UN: 8 .ok .if LOCK_UN .use_fml8_value # # enforce solaris 2 compatible # # value: 1/0 # COMPAT_SOLARIS2: .ok .if COMPAT_SOLARIS2 .use_fml8_value # # used in cron of fml package # # we can emulate daemon(3) ? # # value: 1/0 # NOT_USE_TIOCNOTTY: .ok .if NOT_USE_TIOCNOTTY .use_fml8_value # # On Unix, always yes set 1 in &SetDefaults; # # value: 1/0 # HAS_GETPWUID: &is_unix .ok .if HAS_GETPWUID .use_fml8_value # # On Unix, always yes set 1 in &SetDefaults; # # value: 1/0 # HAS_GETPWGID: &is_unix .ok .if HAS_GETPWGID .use_fml8_value # # On Unix, always yes set 1 in &SetDefaults; # # value: 1/0 # HAS_ALARM: &is_unix .ok .if HAS_ALARM .use_fml8_value # # On Unix, always yes set 1 in &SetDefaults; # # value: 1/0 # UNISTD: &is_unix .ok .if UNISTD .use_fml8_value # # program paths fml uses # # Usually "makefml newml" checks and expands this value. # # value: filename string # SENDMAIL: &path(sendmail) .ok .if SENDMAIL .use_fml8_value # TAR: &path(tar) cf - .ok .if TAR .use_fml8_value # UUENCODE: &path(uuencode) .ok .if UUENCODE .use_fml8_value # COMPRESS: &path(gzip) -c .ok .if COMPRESS .use_fml8_value # ZCAT: &path(gzcat:zcat:gzip\s-cd) .ok .if ZCAT .use_fml8_value # LHA: &path(lha) .ok .if LHA .use_fml8_value # ISH: &path(ish) .ok .if ISH .use_fml8_value # ZIP: &path(zip) .ok .if ZIP .use_fml8_value # BZIP2: &path(bzip2) .ok .if BZIP2 .use_fml8_value # PGP: &path(pgp) .ok .if PGP .use_fml8_value # PGP5: &path(pgp5) .ok .if PGP5 .use_fml8_value # PGPE: &path(pgpe) .ok .if PGPE .use_fml8_value # PGPK: &path(pgpk) .ok .if PGPK .use_fml8_value # PGPS: &path(pgps) .ok .if PGPS .use_fml8_value # PGPV: &path(pgpv) .ok .if PGPV .use_fml8_value # GPG: &path(gpg) .ok .if GPG .use_fml8_value # RCS: &path(rcs) .ok .if RCS .use_fml8_value # CI: &path(ci) .ok .if CI .use_fml8_value # BASE64_DECODE: .ok .if BASE64_DECODE .use_fml8_value # BASE64_ENCODE: .ok .if BASE64_ENCODE .use_fml8_value # MD5: &path(md5:md5sum) .ok .if MD5 .use_fml8_value # # ??? OLD CONFIGURATIONS ??? # .ok .if SMTPLOG .use_fml8_value # PERMIT_COMMAND_FROM = members_only .ok .if PROHIBIT_COMMAND_FOR_STRANGER .use_fml8_value .ok .if USE_LIBMIME == 1 .use_fml8_value .ok .if USE_LIBMIME == 0 .not_support .ok .if LIBMIMEDIR .not_support .ok .if RPG_ML_FORM_FLAG == 1 .use_fml8_value .ok .if RPG_ML_FORM_FLAG == 0 .not_support .ok .if SUN_OS_413 == 1 .not_support .ok .if SUN_OS_413 == 0 .not_support .ok .if SUBJECT_HML_FORM .convert .ok .if HML_FORM_LONG_ID .convert .ok .if ML_MEMBER_CHECK .not_support .ok .if DEFAULT_HTTP_PORT .not_support .ok .if DEFAULT_GOPHER_PORT .not_support .ok .if DEFAULT_HTML_FIELD .not_support .ok .if CP .use_fml8_value .ok .if RM .use_fml8_value .ok .if FML .not_support .ok .if LOAD_LIBRARY .not_support .ok .if STORED_BOUNDARY .not_support .ok .if AGAINST_NIFTY .not_support .ok .if _Ds .not_support .ok .if _Dm .not_support # LOCAL_CONFIG: # # ## Sub Section: Available Hooks ## # # You can set customized hooks here. See doc/tutorial's chapter "HOOKS". # # For example available hooks are # # $START_HOOK, $DISTRIBUTE_START_HOOK, $SMTP_OPEN_HOOK # # $HEADER_ADD_HOOK, $DISTRIBUTE_CLOSE_HOOK, $DISTRIBUTE_END_HOOK # # $ADMIN_COMMAND_HOOK, $RFC1153_CUSTOM_HOOK, $MSEND_OPT_HOOK # # $FML_EXIT_HOOK, $FML_EXIT_PROG, $MSEND_START_HOOK # # $REPORT_HEADER_CONFIG_HOOK, $AUTO_REGISTRATION_HOOK, $MSEND_HEADER_HOOK # # $SMTP_CLOSE_HOOK, $MODE_BIFURCATE_HOOK. $HTML_TITLE_HOOK # # $PROCEDURE_CONFIG_HOOK, $ADMIN_PROCEDURE_CONFIG_HOOK, $COMMAND_HOOK # # # # ## Sub Section: Available Arrays and Assoc-Arrays ## # # Also you can set here arrays and association arrays: # # # # @MEMBER_LIST, @ACTIVE_LIST, @CROSSPOST_CF # # @HOST, @HOSTS, @MAIL_LIST_ALIASES, @HdrFieldsOrder # # # # value: perl statement