1divert(-1)
2#
3# Copyright (c) 2021 Proofpoint, Inc. and its suppliers.
4#	All rights reserved.
5#
6# By using this file, you agree to the terms and conditions set
7# forth in the LICENSE file which can be found at the top level of
8# the sendmail distribution.
9#
10#
11dnl bogus Id, just here to show up in the generated cf file
12divert(0)
13VERSIONID(`$Id: check_other.m4,v 1.0 2021-04-30 00:01:11 ca Exp $')
14divert(-1)
15dnl
16dnl Options:
17dnl first arg:
18dnl  empty: use default regex
19dnl  else: use as regex
20dnl  [not implemented: NOREGEX: do not use any regex]
21dnl
22dnl Possible enhancements:
23dnl select which SMTP reply type(s) should be allowed to match?
24dnl maybe add "exceptions":
25dnl   - via an "OK" regex?
26dnl   - access map lookup for clients to be "ok" (Connect:... {ok,relay})
27dnl more args? possible matches for rejections:
28dnl	does not seem to worth the effort: too inflexible.
29dnl
30dnl Note: sendmail removes whitespace before ':' ("tokenization")
31ifelse(
32   defn(`_ARG_'), `', `define(`CHKORX', `^[[:print:]]+ *:')',
33   dnl defn(`_ARG_'), `NOREGEX', `define(`CHKORX', `')',
34  `define(`CHKORX', defn(`_ARG_'))')
35LOCAL_CONFIG
36ifelse(defn(`CHKORX'), `', `', `dnl
37Kbadcmd regex -m -a<BADCMD> defn(`CHKORX')')
38LOCAL_RULESETS
39Scheck_other
40dnl accept anything that will be accepted by the MTA
41R$* $| 2	$@ ok
42ifelse(defn(`CHKORX'), `', `', `dnl
43R$+ $| 5	$: $(badcmd $1 $)
44R$*<BADCMD>	$#error $@ 4.7.0 $: 421 bad command')
45dnl terminate on any bad command?
46dnl R$* $| 5	$#error $@ 4.7.0 $: 421 bad command
47