From: Mark Wooding Date: Mon, 27 Mar 2006 11:13:25 +0000 (+0100) Subject: addrcheck, mkcdb: Check sender addresses for validity in addrcheck. X-Git-Url: https://git.distorted.org.uk/~mdw/newsgate/commitdiff_plain/b86d430e1833a0b469a108efdf92a1dee99519d1 addrcheck, mkcdb: Check sender addresses for validity in addrcheck. This involves storing a glob pattern for each mailing list in the CDB. Current version doesn't reject: it just logs that it would have done, and then accepts anyway. --- diff --git a/bin/addrcheck b/bin/addrcheck index ca6f3fb..3a3c533 100755 --- a/bin/addrcheck +++ b/bin/addrcheck @@ -3,8 +3,26 @@ set -e kind=${1?kind} tail=${2?tail} -if cdb -q groups.cdb "$kind:$tail" >/dev/null 2>&1; then - echo + -else - echo "-bad tag $tail" -fi +sender=${3?sender} + +##bad () { echo "-$*"; exit 0; } +bad () { + echo "consider reject to $kind:$tail from $sender ($*)" >>addrcheck.log" + echo "+just this once" + exit 0 +} + +entry=`cdb -q groups.cdb "$kind:$tail"` || bad "bad tag $tail" +set -- $entry +case $kind in + g) + SENDER=$sender check-sender /dev/null || + bad "invalid sender $sender" + ;; + t) + echo $sender + echo "$4" + case "$sender" in $4) ;; *) bad "incorrect sender $sender" ;; esac + ;; +esac +echo + diff --git a/bin/mkcdb b/bin/mkcdb index dc876ac..d5afee9 100755 --- a/bin/mkcdb +++ b/bin/mkcdb @@ -20,9 +20,9 @@ for line in open(group, 'r'): i += 1 if rx_comment.match(line): continue f = line.split() - if len(f) != 3: die('bad info line %d.' % i) + if len(f) != 4: die('bad info line %d.' % i) l = ' '.join(f) - tag, group, addr = f + tag, group, addr, sender = f group = group.replace('.', '-') cdb.add('t:%s' % tag, l) cdb.add('g:%s' % group, l)