validatesender 1.1 KB

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