fml 8 tutorial
Prev | Chapter 35. Filter | Next

# Configuration Variables

Each sub filter system is enabled/disabled independently.

    use_SERVICE_filter       = yes
    SERVICE_filter_functions = function_A function_B

    use_function_A           = yes
    function_A_rules         = rule_01 urle_02

    # Descriptions: how to inform the rejected message
    #               when the filter system rejects.
    #               We prefer string not mime/multipart to avoid parsing by MUA.
    #      History: string in 4.0.
    #        Value: SELECT ( multipart string )
    #     Examples: string
    article_post_restrictions_reject_notice_data_type	=	string

    =head2	filter

    # Descriptions:
    #      History: fml8 rearragena fml4 filter functions and integrates them
    #		into one.
    #		Roughly speaking, fml8 filter is composed of the following
    #			$USE_DISTRIBUTE_FILTER
    #			$INCOMING_MAIL_SIZE_LIMIT
    #			ADD_CONTENT_HANDLER()
    #		functions.
    #        Value: YES_OR_NO
    #     Examples: yes
    use_article_filter	= 	yes

    # Descriptions:
    #      History:
    #        Value: MIX (
    #			article_size_filter
    #			article_header_filter
    #			article_non_mime_filter
    #			article_mime_component_filter
    #			article_text_plain_filter
    #			article_spam_filter
    #			article_virus_filter
    #		)
    #     Examples:
    article_filter_functions	=	article_size_filter
    					article_header_filter
    					article_non_mime_filter
    					article_mime_component_filter
    					article_text_plain_filter
    					article_spam_filter
    					article_virus_filter

    =head2	size based filter

    # Descriptions: use size based filter.
    #      History: no
    #        Value: YES_OR_NO
    #     Examples:
    use_article_size_filter	=	yes

    # Descriptions: size based filter rules.
    #               first match.
    #               permit post if no rule matched.
    #      History:
    #        Value: MIX (	check_header_size
    #			check_body_size
    #			permit
    #		)
    #     Examples:
    article_size_filter_rules	=	check_header_size
    					check_body_size
    					permit

    =head2	header base filter

    # Descriptions: use header based filter ?
    #      History: disabled by default.
    #               "yes" always if $USE_DISTRIBUTE_FILTER is yes.
    #        Value: YES_OR_NO
    #     Examples:
    use_article_header_filter		=	yes

    # Descriptions: header filter rules.
    #               first match.
    #               permit post if no rule matched.
    #      History: fml4 has no check_date rule.
    #        Value: MIX (
    #			check_message_id
    #			check_date
    #			permit
    #		)
    #     Examples:
    article_header_filter_rules		=	check_message_id
    						check_date
    						permit

    =head2	filter for non MIME structure

    # Descriptions: dummy
    #      History: disabled by default.
    #		!MIME of 4.0 content filter.
    #        Value: YES_OR_NO
    #     Examples:
    use_article_non_mime_filter		=	yes

    # Descriptions: dummy
    #      History:
    #        Value: MIX ( permit reject_empty_content_type )
    #     Examples: permit
    article_non_mime_filter_rules		=	permit

    # Descriptions: MIME structure based filter
    #      History: 4.0 content filter. disabled by default.
    #        Value: YES_OR_NO
    #     Examples:
    use_article_mime_component_filter	=	yes

    # Descriptions: file of filter rules
    #      History: @CONTENT_HANDLER
    #        Value: FILE
    #     Examples:
    article_mime_component_filter_rules	= $fml_config_dir/mime_component_filter

    =head2	filter for text/plain

    # Descriptions: use text/plain filter, which is a simple syntax checker.
    #      History: 4.0's EnvelopeFilter.
    #		half of the following rules applied when
    #		$USE_DISTRIBUTE_FILTER is enabled.
    #        Value: YES_OR_NO
    #     Examples:
    use_article_text_plain_filter		=	yes

    # Descriptions: filter rules of text/plain filter.
    #               first match.
    #               permit post if no rule matched.
    #      History: See kern/libenvf.pl for more detail.
    #		[DISABLED BY DEFAULT]
    #
    #			reject_not_iso2022jp_japanese_string
    #				<=> FILTER_ATTR_REJECT_INVALID_JAPANESE
    #			reject_old_fml_command_syntax
    #				<=> FILTER_ATTR_REJECT_COMMAND
    #			reject_japanese_command_syntax
    #				<=> FILTER_ATTR_REJECT_2BYTES_COMMAND
    #
    #		[ENABLED BY DEFAULT]
    #
    #			reject_null_mail_body
    #				<=> FILTER_ATTR_REJECT_NULL_BODY
    #			reject_invalid_fml_command_syntax
    #				<=> FILTER_ATTR_REJECT_INVALID_COMMAND
    #			reject_one_line_message
    #				<=> FILTER_ATTR_REJECT_ONE_LINE_BODY
    #			reject_ms_guid
    #				<=> FILTER_ATTR_REJECT_MS_GUID
    #
    #         Note: permit by default
    #        Value: MIX (
    #			reject_not_iso2022jp_japanese_string
    #			reject_null_mail_body
    #			reject_one_line_message
    #			reject_old_fml_command_syntax
    #			reject_invalid_fml_command_syntax
    #			reject_japanese_command_syntax
    #			reject_ms_guid
    #			permit
    #		)
    #     Examples:
    article_text_plain_filter_rules	=	reject_not_iso2022jp_japanese_string
    					reject_null_mail_body
    					reject_one_line_message
    					reject_old_fml_command_syntax
    					reject_invalid_fml_command_syntax
    					reject_japanese_command_syntax
    					reject_ms_guid
    					permit

    =head2	external SPAM filter

    # Descriptions: use external spam checker.
    #		disabled by default.
    #		add flag to header and go through if the message looks a spam.
    #      History: none
    #        Value: YES_OR_NO
    #     Examples: no
    use_article_spam_filter		=	no

    # Descriptions: action if the message looks a spam.
    #      History: none
    #        Value: MIX ( reject ignore header_rewrite )
    #     Examples: header_rewrite
    article_spam_filter_rules	=	header_rewrite

    # Descriptions: external spam checker.
    #		if plural drivers specified, try them sequentially.
    #      History: none
    #        Value: MIX ( spamassasin spamc bogofilter )
    #     Examples: bogofilter
    article_spam_filter_drivers	=	bogofilter

    # Descriptions: external virus checker. disabled by default.
    #      History: none
    #        Value: YES_OR_NO
    #     Examples: no
    use_article_virus_filter	=	no

    # Descriptions: action if virus found.
    #      History: none
    #        Value: MIX ( reject ignore header_rewrite )
    #     Examples: reject
    article_virus_filter_rules	=	reject

    # Descriptions: external virus checker.
    #		if plural drivers specified, try them sequentially.
    #      History: none
    #        Value: MIX ( clamscan )
    #     Examples: clamscan
    article_virus_filter_drivers	=	clamscan

    =head2	inform the filter rejection

    # Descriptions: infor the filter rejection ?
    #      History: halfly hard-coded in fml 4.0.
    #		notice is always sent to maintainer,
    #		but not to sender by default.
    #		$FILTER_NOTIFY_REJECTION controlls notice to sender.
    #        Value: YES_OR_NO
    #     Examples: yes
    use_article_filter_reject_notice	=	yes

    # Descriptions: recipients to inform
    #      History: halfly hard-coded in fml 4.0.
    #		notice is always sent to maintainer,
    #		but not to sender by default.
    #		$FILTER_NOTIFY_REJECTION controlls notice to sender.
    #        Value: MIX ( maintainer sender )
    #     Examples: maintainer sender
    article_filter_reject_notice_recipients	=	maintainer
    						sender

    # Descriptions: how fml refer the rejeced message.
    #               We prefer string not multipart to avoid parsing of MUA.
    #      History: string in fml 4.0.
    #        Value: SELECT ( multipart string )
    #     Examples: string
    article_filter_reject_notice_data_type	=	string

    # Descriptions:
    #      History:
    #        Value: YES_OR_NO
    #     Examples:
    use_article_spam_filter		=	no

    # Descriptions: list up driver names used as spam checker.
    #      History: none
    #        Value: MIX ( spamassassin spamc bogofilter )
    #     Examples: bogofilter
    article_spam_filter_functions	=	bogofilter

    # Descriptions: exit non-zero status code when spam caught if "-e" specified.
    #      History: none
    #        Value: COMMAND_LINE_OPTIONS
    #     Examples: -e
    article_spam_filter_spamassassin_options	=	-e

    # Descriptions: spamc optoins. "-c" means check only.
    #      History: none
    #        Value: COMMAND_LINE_OPTIONS
    #     Examples: -c
    article_spam_filter_spamc_options		=	-c

    # Descriptions: "-e" implies embedded mode.
    #      History: none
    #        Value: COMMAND_LINE_OPTIONS
    #     Examples: -e
    article_spam_filter_bogofilter_options		=	-e

    # Descriptions:
    #      History:
    #        Value: YES_OR_NO
    #     Examples:
    use_article_virus_filter	=	no

    # Descriptions: list up driver names used as virus checker.
    #      History: none
    #        Value: MIX ( virusassassin virusc bogofilter )
    #     Examples: bogofilter
    article_virus_filter_functions	=	clamav

    # Descriptions: --mbox needed for mail files.
    #      History: none
    #        Value: COMMAND_LINE_OPTIONS
    #     Examples: --quiet --mbox
    article_virus_filter_clamav_options		=	--quiet --mbox

    =head2	filter

    # Descriptions:
    #      History:
    #        Value: YES_OR_NO
    #     Examples:
    use_command_mail_filter	= 	yes

    # Descriptions:
    #      History:
    #        Value: MIX ( command_mail_size_filter )
    #     Examples:
    command_mail_filter_functions	=	command_mail_size_filter

    =head2	size based filter

    # Descriptions: use size based filter
    #      History:
    #        Value: YES_OR_NO
    #     Examples:
    use_command_mail_size_filter	=	yes

    # Descriptions: size based filter rules.
    #               first match.
    #               permit if no rule matched.
    #      History:
    #        Value: MIX (
    #			check_header_size
    #			check_body_size
    #			check_command_limit
    #			check_line_length_limit
    #			permit
    #		)
    #     Examples:
    command_mail_size_filter_rules	=	check_header_size
    					check_body_size
    					check_command_limit
    					check_line_length_limit
    					permit

    =head2	inform filter rejection

    # Descriptions: inform filter rejection ?
    #      History: hard-coded.
    #        Value: YES_OR_NO
    #     Examples: yes
    use_command_mail_filter_reject_notice	=	yes

    # Descriptions: recipients to inform
    #      History: hard-coded.
    #        Value: MIX ( maintainer sender )
    #     Examples: maintainer sender
    command_mail_filter_reject_notice_recipients	=	maintainer
    							sender

    # Descriptions: how fml refer the rejeced message.
    #               We prefer string not multipart to avoid parsing of MUA.
    #      History: string in fml 4.0.
    #        Value: SELECT ( multipart string )
    #     Examples: string
    command_mail_filter_reject_notice_data_type	=	string

    # Descriptions:
    #      History:
    #        Value: FILE
    #     Examples:
    path_bogofilter           = @BOGOFILTER@

    # $article_digest_finish_end_hook = q{ 1;};
    # $article_digest_finish_start_hook = q{ 1;};
    # $article_digest_prepare_end_hook = q{ 1;};
    # $article_digest_prepare_start_hook = q{ 1;};
    # $article_digest_run_end_hook = q{ 1;};
    # $article_digest_run_start_hook = q{ 1;};
    # $article_digest_verify_request_end_hook = q{ 1;};
    # $article_digest_verify_request_start_hook = q{ 1;};
    # $article_filter_end_hook = q{ 1;};
    # $article_filter_start_hook = q{ 1;};
    # $article_header_rewrite_end_hook = q{ 1;};
    # $article_header_rewrite_start_hook = q{ 1;};
    # $article_post_finish_end_hook = q{ 1;};
    # $article_post_finish_start_hook = q{ 1;};
    # $article_post_prepare_end_hook = q{ 1;};
    # $article_post_prepare_start_hook = q{ 1;};
    # $article_post_run_end_hook = q{ 1;};
    # $article_post_run_start_hook = q{ 1;};
    # $article_post_verify_request_end_hook = q{ 1;};
    # $article_post_verify_request_start_hook = q{ 1;};
    # $command_mail_filter_end_hook = q{ 1;};
    # $command_mail_filter_start_hook = q{ 1;};
    # $command_mail_finish_end_hook = q{ 1;};
    # $command_mail_finish_start_hook = q{ 1;};
    # $command_mail_prepare_end_hook = q{ 1;};
    # $command_mail_prepare_start_hook = q{ 1;};
    # $command_mail_run_end_hook = q{ 1;};
    # $command_mail_run_start_hook = q{ 1;};
    # $command_mail_verify_request_end_hook = q{ 1;};
    # $command_mail_verify_request_start_hook = q{ 1;};
    # $createonpost_finish_end_hook = q{ 1;};
    # $createonpost_finish_start_hook = q{ 1;};
    # $createonpost_prepare_end_hook = q{ 1;};
    # $createonpost_prepare_start_hook = q{ 1;};
    # $createonpost_run_end_hook = q{ 1;};
    # $createonpost_run_start_hook = q{ 1;};
    # $createonpost_verify_request_end_hook = q{ 1;};
    # $createonpost_verify_request_start_hook = q{ 1;};
    # $distribute_finish_end_hook = q{ 1;};
    # $distribute_finish_start_hook = q{ 1;};
    # $distribute_prepare_end_hook = q{ 1;};
    # $distribute_prepare_start_hook = q{ 1;};
    # $distribute_run_end_hook = q{ 1;};
    # $distribute_run_start_hook = q{ 1;};
    # $distribute_verify_request_end_hook = q{ 1;};
    # $distribute_verify_request_start_hook = q{ 1;};
    # $error_mail_analyzer_finish_end_hook = q{ 1;};
    # $error_mail_analyzer_finish_start_hook = q{ 1;};
    # $error_mail_analyzer_prepare_end_hook = q{ 1;};
    # $error_mail_analyzer_prepare_start_hook = q{ 1;};
    # $error_mail_analyzer_run_end_hook = q{ 1;};
    # $error_mail_analyzer_run_start_hook = q{ 1;};
    # $error_mail_analyzer_verify_request_end_hook = q{ 1;};
    # $error_mail_analyzer_verify_request_start_hook = q{ 1;};
    # $faker_finish_end_hook = q{ 1;};
    # $faker_finish_start_hook = q{ 1;};
    # $faker_prepare_end_hook = q{ 1;};
    # $faker_prepare_start_hook = q{ 1;};
    # $faker_run_end_hook = q{ 1;};
    # $faker_run_start_hook = q{ 1;};
    # $faker_verify_request_end_hook = q{ 1;};
    # $faker_verify_request_start_hook = q{ 1;};
    # $fetchfml_finish_end_hook = q{ 1;};
    # $fetchfml_finish_start_hook = q{ 1;};
    # $fetchfml_prepare_end_hook = q{ 1;};
    # $fetchfml_prepare_start_hook = q{ 1;};
    # $fetchfml_run_end_hook = q{ 1;};
    # $fetchfml_run_start_hook = q{ 1;};
    # $fetchfml_verify_request_end_hook = q{ 1;};
    # $fetchfml_verify_request_start_hook = q{ 1;};
    # $fmladdr_finish_end_hook = q{ 1;};
    # $fmladdr_finish_start_hook = q{ 1;};
    # $fmladdr_prepare_end_hook = q{ 1;};
    # $fmladdr_prepare_start_hook = q{ 1;};
    # $fmladdr_run_end_hook = q{ 1;};
    # $fmladdr_run_start_hook = q{ 1;};
    # $fmladdr_verify_request_end_hook = q{ 1;};
    # $fmladdr_verify_request_start_hook = q{ 1;};
    # $fmlalias_finish_end_hook = q{ 1;};
    # $fmlalias_finish_start_hook = q{ 1;};
    # $fmlalias_prepare_end_hook = q{ 1;};
    # $fmlalias_prepare_start_hook = q{ 1;};
    # $fmlalias_run_end_hook = q{ 1;};
    # $fmlalias_run_start_hook = q{ 1;};
    # $fmlalias_verify_request_end_hook = q{ 1;};
    # $fmlalias_verify_request_start_hook = q{ 1;};
    # $fmlconf_finish_end_hook = q{ 1;};
    # $fmlconf_finish_start_hook = q{ 1;};
    # $fmlconf_prepare_end_hook = q{ 1;};
    # $fmlconf_prepare_start_hook = q{ 1;};
    # $fmlconf_run_end_hook = q{ 1;};
    # $fmlconf_run_start_hook = q{ 1;};
    # $fmlconf_verify_request_end_hook = q{ 1;};
    # $fmlconf_verify_request_start_hook = q{ 1;};
    # $fmldoc_finish_end_hook = q{ 1;};
    # $fmldoc_finish_start_hook = q{ 1;};
    # $fmldoc_prepare_end_hook = q{ 1;};
    # $fmldoc_prepare_start_hook = q{ 1;};
    # $fmldoc_run_end_hook = q{ 1;};
    # $fmldoc_run_start_hook = q{ 1;};
    # $fmldoc_verify_request_end_hook = q{ 1;};
    # $fmldoc_verify_request_start_hook = q{ 1;};
    # $fmlhtmlify_finish_end_hook = q{ 1;};
    # $fmlhtmlify_finish_start_hook = q{ 1;};
    # $fmlhtmlify_prepare_end_hook = q{ 1;};
    # $fmlhtmlify_prepare_start_hook = q{ 1;};
    # $fmlhtmlify_run_end_hook = q{ 1;};
    # $fmlhtmlify_run_start_hook = q{ 1;};
    # $fmlhtmlify_verify_request_end_hook = q{ 1;};
    # $fmlhtmlify_verify_request_start_hook = q{ 1;};
    # $fmlpgp_finish_end_hook = q{ 1;};
    # $fmlpgp_finish_start_hook = q{ 1;};
    # $fmlpgp_prepare_end_hook = q{ 1;};
    # $fmlpgp_prepare_start_hook = q{ 1;};
    # $fmlpgp_run_end_hook = q{ 1;};
    # $fmlpgp_run_start_hook = q{ 1;};
    # $fmlpgp_verify_request_end_hook = q{ 1;};
    # $fmlpgp_verify_request_start_hook = q{ 1;};
    # $makefml_finish_end_hook = q{ 1;};
    # $makefml_finish_start_hook = q{ 1;};
    # $makefml_prepare_end_hook = q{ 1;};
    # $makefml_prepare_start_hook = q{ 1;};
    # $makefml_run_end_hook = q{ 1;};
    # $makefml_run_start_hook = q{ 1;};
    # $makefml_verify_request_end_hook = q{ 1;};
    # $makefml_verify_request_start_hook = q{ 1;};

Prev | Home | Next
Filter | Up | Size Limit

fml 8.0 (fml-devel) project homepage is www.fml.org/software/fml8/.
fml 4.0 project homepage is www.fml.org/software/fml4/.
about one floppy bsd routers, see www.bsdrouter.org/.
other free softwares are found at www.fml.org/software/.

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

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