acl_smtp_data = acl_check_data ... acl_check_data: ... warn set acl_m_kav4lms_headers = set acl_m_kav4lms_result = set acl_m_kav4lms_answer = ${dlfunc{/usr/local/libexec/exim/exim-dlfunc.so}{kav4lms}\ {local:/var/run/kav4lms/kavmd.sock}{defer_ok}} defer condition = ${if eq{$acl_m_kav4lms_answer}{}{yes}{no}} log_message = KAV4LMS check failed (empty answer) message = Temporary local problem - please try later defer condition = ${if match{$acl_m_kav4lms_answer}{\N^kav4lms dlfunc:\s*\N}{yes}{no}} log_message = KAV4LMS check defer: ${sg{$acl_m_kav4lms_answer}{\N^kav4lms dlfunc:\s*\N}{}} message = Temporary local problem - please try later warn set acl_m_kav4lms_headers = ${if match{$acl_m_kav4lms_answer}{\N^KAV4LMS answer: .+?\n((.*\n)+)$\N}{$1}{}} condition = ${if eq{$acl_m_kav4lms_headers}{}{no}{yes}} set acl_m_kav4lms_tempfile = ${if match{$acl_m_kav4lms_headers}{\N^temporary file ([^\n\r]+)\r?\n\N}{$1}{}} set acl_m_kav4lms_headers = ${if match{$acl_m_kav4lms_headers}{\N^temporary file ([^\n\r]+)\r?\n((.*\n)+)$\N}{$2}{$acl_m_kav4lms_headers}} logwrite = headers added by kav4lms dlfunc: $acl_m_kav4lms_headers add_header = $acl_m_kav4lms_headers set acl_m_kav4lms_result = ${if match{$acl_m_kav4lms_headers}{\N^(.*\n)*X-Anti-Virus: (.*\n\s)*.* check: 2\d{7} (\S+)\n\N}{$3}{}} defer condition = ${if match{$acl_m_kav4lms_answer}{\N^KAV4LMS answer: DEFER\N}{yes}{no}} log_message = KAV4LMS check defer: ${if match{$acl_m_kav4lms_answer}{\N^KAV4LMS answer: DEFER:? (.+)\n?(.*\n)*$\N}{$1}{}}\ ${if eq{$acl_m_kav4lms_result}{}{}{, result is '$acl_m_kav4lms_result'}}\ , temporary file $acl_m_kav4lms_tempfile message = Temporary local problem - please try later drop condition = ${if match{$acl_m_kav4lms_answer}{\N^KAV4LMS answer: DROP\N}{yes}{no}} log_message = KAV4LMS check drop: ${if match{$acl_m_kav4lms_answer}{\N^KAV4LMS answer: DROP:? (.+)\n?(.*\n)*$\N}{$1}{}}\ ${if eq{$acl_m_kav4lms_result}{}{}{, result is '$acl_m_kav4lms_result'}}\ , temporary file $acl_m_kav4lms_tempfile message = ${if match{$acl_m_kav4lms_answer}{\N^KAV4LMS answer: DROP:? (.+)\n?(.*\n)*$\N}{$1}{}} deny condition = ${if match{$acl_m_kav4lms_answer}{\N^KAV4LMS answer: REJECT\N}{yes}{no}} log_message = KAV4LMS check reject: ${if match{$acl_m_kav4lms_answer}{\N^KAV4LMS answer: REJECT:? (.+)\n?(.*\n)*$\N}{$1}{}}\ ${if eq{$acl_m_kav4lms_result}{}{}{, result is '$acl_m_kav4lms_result'}}\ , temporary file $acl_m_kav4lms_tempfile message = ${if match{$acl_m_kav4lms_answer}{\N^KAV4LMS answer: REJECT:? (.+)\n?(.*\n)*$\N}{$1}{}} warn condition = ${if match{$acl_m_kav4lms_answer}{\N^KAV4LMS answer: ACCEPT\N}{yes}{no}} logwrite = KAV4LMS check accept: ${if match{$acl_m_kav4lms_answer}{\N^KAV4LMS answer: ACCEPT:?\s?(.+)$\N}{$1}{}} \ ${if eq{$acl_m_kav4lms_result}{}{}{, result is '$acl_m_kav4lms_result'}} set acl_m_kav4lms_answer = warn condition = ${if eq{$acl_m_kav4lms_answer}{}{no}{yes}} logwrite = KAV4LMS check: $acl_m_kav4lms_answer