xref: /plan9/mail/lib/validatesender (revision cc81b63ced83c2160acd809ac0efae758d1a092d)
1#!/bin/rc
2
3rfork en
4fn usage{
5	echo 'usage: validatesender [-n /net] plan9.bell-labs.com glenda' >[1=2]
6	exit usage
7}
8
9echo $sysname $pid '$' validatesender $* >>/sys/log/smtpd.mx
10
11netroot=/net
12if(~ $1 -n){
13	shift
14	netroot=$1
15	shift
16}
17if(! ~ $#* 2)
18	usage
19
20dom=$1
21addr=$2
22
23# Cause some problems
24if(~ $dom swtch.com && ~ $addr glenda && ! ~ $sysname olive)
25	exit 'deferred: always defer this one'
26
27# Sites that we have to special case
28# Lucent only - use external network when mail from external domains
29# is delivered to us internally.  Assume that local domains are fine.
30#netroot=/net
31#if(~ $dom *.lucent.com lucent.com *.bell-labs.com bell-labs.com)
32#	exit ''
33#if(! ~ $sysname ethel)
34#	exit ''
35#if(~ $sysname ethel){
36#	if(! test -d /net.alt/tcp)
37#		import outside /net.alt
38#	if(test -d /net.alt/tcp)
39#		netroot=/net.alt
40#}
41
42if(x=`{upas/smtp -p $netroot/tcp!$dom /dev/null $addr >[2=1] |
43		tee >{sed 's/^/'$sysname' '$pid' /' >> /sys/log/smtpd.mx} |
44		tail -1})
45	exit ''
46
47smtpstatus=$status
48if(~ $#x 0)
49	x=$smtpstatus
50if(~ $smtpstatus *'Permanent Failure'*)
51	exit 'rejected: smtp ping: '^$"x
52exit 'deferred: smtp ping: '^$"x
53