@version: 3.19
@include "scl.conf"
options {
  chain_hostnames(off);
  flush_lines(0);
  use_dns(no);
  dns_cache(no);
  use_fqdn(no);
  owner("root"); group("adm"); perm(0640);
  stats_freq(0);
  bad_hostname("^gconfd$");
};
source s_src {
  unix-stream("/dev/log");
  internal();
};
destination d_stdout { pipe("/dev/stdout"); };
destination d_redis_ui_log {
  redis(
    host("redis-mailcow")
    persist-name("redis1")
    port(6379)
    command("LPUSH" "POSTFIX_MAILLOG" "$(format-json time=\"$S_UNIXTIME\" priority=\"$PRIORITY\" program=\"$PROGRAM\" message=\"$MESSAGE\")\n")
  );
};
destination d_redis_f2b_channel {
  redis(
    host("redis-mailcow")
    persist-name("redis2")
    port(6379)
    command("PUBLISH" "F2B_CHANNEL" "$(sanitize $MESSAGE)")
  );
};
filter f_mail { facility(mail); };
# start
# overriding warnings are still displayed when the entrypoint runs its initial check
# warnings logged by postfix-mailcow to syslog are hidden to reduce repeating msgs
# Some other warnings are ignored
filter f_ignore {
  not match("overriding earlier entry" value("MESSAGE"));
  not match("TLS SNI from checks.mailcow.email" value("MESSAGE"));
  not match("no SASL support" value("MESSAGE"));
  not facility (local0, local1, local2, local3, local4, local5, local6, local7);
};
# end
log {
  source(s_src);
  filter(f_ignore);
  destination(d_stdout);
  filter(f_mail);
  destination(d_redis_ui_log);
  destination(d_redis_f2b_channel);
};
