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;};
Copyright (C) 1993-2025 Ken'ichi Fukamachi mail:< fukachan at fml.org >