qmail_syslog_required = { # The name of the log format log.format.format_label = "qmail (Syslog Required) Log Format" log.miscellaneous.log_data_type = "syslog_required" log.miscellaneous.log_format_type = "mail_server" # The log is in this format if any of the first ten lines match this regular expression log.format.autodetect_regular_expression = "status: [a-z]+ [0-9]+/[0-9]+ [a-z]+ [0-9]+/[0-9]+" # All log field parsing will be done using the parsing filters log.format.parse_only_with_filters = "true" statistics.miscellaneous.entry_name = "messages" # Log fields log.fields = { from = { label = "$lang_stats.field_labels.from" type = "hierarchical" index = 0 subindex = 0 hierarchy_dividers = "@" left_to_right = false leading_divider = false } # from to = { label = "$lang_stats.field_labels.to" type = "hierarchical" index = 0 subindex = 0 hierarchy_dividers = "@" left_to_right = false leading_divider = false } # to qp = { label = "$lang_stats.field_labels.qp" type = "flat" index = 0 subindex = 0 } # qp uid = { label = "$lang_stats.field_labels.uid" type = "flat" index = 0 subindex = 0 } # uid side = { label = "$lang_stats.field_labels.side" type = "flat" index = 0 subindex = 0 } # side status = { label = "$lang_stats.field_labels.status" type = "flat" index = 0 subindex = 0 } # status size = { label = "$lang_stats.field_labels.size" type = "size" index = 0 subindex = 0 hierarchy_dividers = "" left_to_right = false leading_divider = "false" } # size } # log.fields # # Log Parsing Filters log.parsing_filters = { # rekey on new message 1 = { label = "1" comment = "" value = "if (matches_regular_expression(current_log_line(), '() new msg ([0-9]*)')) then rekey_collected_entry($1, $2);" } # 1 # Parse info msg lines 2 = { label = "2" comment = "" value = "collect_fields_using_regexp(' info msg ([0-9]*): bytes ([0-9]*) from <([^>]*)> qp ([0-9]*) uid ([0-9])', '*KEY*,size,from,qp,uid')" } # 2 # Parse starting delivery lines 3 = { label = "3" comment = "" value = "collect_fields_using_regexp(' starting delivery [0-9]*: msg ([0-9]*) to (local|remote) (.*)$', '*KEY*,side,to')" } # 3 # Rekey on starting delivery lines 4 = { label = "4" comment = "" value = "if (matches_regular_expression(current_log_line(), ' starting delivery ([0-9]*): msg ([0-9]*) to ')) then rekey_collected_entry($2, $1);" } # 4 # Parse delivery lines 5 = { label = "5" comment = "" value = "collect_fields_using_regexp(' delivery ([0-9]*): ([a-z]*): ', '*KEY*,status')" } # 5 # Accept on delivery lines 6 = { label = "6" comment = "" value = "accept_collected_entry_using_regexp(' delivery ([0-9]*): [a-z]*: ', false)" } # 6 # # Accept on end msg log entry # do_b # "" "" "" "" "" # accept_collected_entry_regexp " end msg ([0-9]*)" "" "" "" # goto_next_filter "" "" "" "" # "" } # log.parsing_filters # Database fields database.fields = { from = { label = "$lang_stats.field_labels.from" log_field = "from" type = "string" suppress_top = 0 suppress_bottom = 2 } # from to = { label = "$lang_stats.field_labels.to" log_field = "to" type = "string" suppress_top = 0 suppress_bottom = 2 } # to uid = { label = "$lang_stats.field_labels.uid" log_field = "uid" type = "string" suppress_top = 0 suppress_bottom = 2 } # uid qp = { label = "$lang_stats.field_labels.qp" log_field = "qp" type = "string" suppress_top = 0 suppress_bottom = 2 } # qp side = { label = "$lang_stats.field_labels.side" log_field = "side" type = "string" suppress_top = 0 suppress_bottom = 2 } # side status = { label = "$lang_stats.field_labels.status" log_field = "status" type = "string" suppress_top = 0 suppress_bottom = 2 } # status } # database.fields database.numerical_fields = { messages = { label = "$lang_stats.field_labels.messages" default = true requires_log_field = false type = "int" display_format_type = "integer" entries_field = true } # messages size = { label = "$lang_stats.field_labels.size" default = false requires_log_field = true log_field = "size" type = "float" display_format_type = "bandwidth" } # size } # database.numerical_fields log.filters = { mark_entry = { label = '$lang_admin.log_filters.mark_entry_label' comment = '$lang_admin.log_filters.mark_entry_comment' value = 'messages = 1;' } # mark_entry } # log.filters create_profile_wizard_options = { # How the reports should be grouped in the report menu report_groups = { date_time_group = "" from = true to = true uid = true qp = true side = true status = true } # report_groups } # create_profile_wizard_options not_supported = { visitors = true sessions = true pageviews = true individualhosts = true } # not_supported } # qmail_syslog_required