kcantrel@digi.UUCP (Keith Cantrell) (09/15/89)
Once I get sendmail into debug mode to verify parsing of addresses, what are
the rules I need to run an address through to completely simulate what a real
mail message goes through.
Thanks,
Keith
-----------------------------------------------------------------------
Keith Cantrell Phones: hm: 214-492-1088
Apollo Computer wk: 214-519-2399 @ DSC
A Subsidiary of Hewlett-Packard
USMAIL: EMAIL:
2100 Sonata Ln cantrell@attctc.DALLAS.TX.US
Carrollton TX 75007 or
...!attctc!digi!kcantrel
My opinions are my own, and do not reflect those of my employer.
-----------------------------------------------------------------------hubcap@hubcap.clemson.edu (Mike Marshall) (09/15/89)
From article <220@digi.UUCP>, by kcantrel@digi.UUCP (Keith Cantrell): > > Once I get sendmail into debug mode to verify parsing of addresses, what are > the rules I need to run an address through to completely simulate what a real > mail message goes through. Try this: change Od in your cf so that mail gets queued instead of delivered in the background. Send a piece of mail to the address you want to watch get parsed. Crank up a script session, so you can capture everything in a file. Say sendmail -q -d21.12 Enough spooge will spew out to make your socks roll up and down. But if you print out the captured file and study it, you'll see exactly which rule does what when and maybe even why. -Mike Marshall hubcap@clemson.edu
ault@pawl.rpi.edu (Jim Ault) (09/15/89)
Try this script. If you have egrep, this works great. I use it
constantly, along with another small script that feeds addresses in
and grabs the output, so I can test a whole list of addresses by
putting the process in the background.
Let me know if it is helpful to you.
---Jim Ault, ITS Postmaster, Rensselaer Polytechnic Inst, Troy NY, 12180
Postmaster@rpi.edu Jim_Ault@rpitsmts.BITNET Jim_Ault@mts.rpi.edu
518-276-2750 (voice) ...uunet!rpi.edu!ault 518-276-2809 (fax)
------ cut the GREEN wire first! ------ No, cut the RED wire f>>BOOM<< ------
#! /bin/sh
# This is a shell archive. Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file". To overwrite existing
# files, type "sh file -c". You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g.. If this archive is complete, you
# will see the following message at the end:
# "End of archive 1 (of 1)."
# Contents: cfdebug cftest debug.in
# Wrapped by post@imagine.pawl.rpi.edu on Fri Sep 15 11:44:26 1989
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'cfdebug' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'cfdebug'\"
else
echo shar: Extracting \"'cfdebug'\" \(1343 characters\)
sed "s/^X//" >'cfdebug' <<'END_OF_FILE'
X#! /bin/sh
X#
X# This shell script runs sendmail in address test mode and converts the
X# debugging output to something more intelligible for helping debug sendmail.cf
X# files.
X#
X# Pass the config file to use as $1 - /usr/lib/sendmail.cf by default
X#
X# Enter input of the form (same as for "sendmail -bt"):
X#
X# 0 address1
X# 0 address2
X# ...
X# (eof)
X#
X#
Xif [ $# -eq 0 ]
Xthen
X cf="/usr/lib/sendmail.cf"
Xelse
X cf=$1
Xfi
Xif [ ! -r $cf ]
Xthen
X echo "File '$cf' not readable, exiting..."
X exit
Xfi
Xsudo /usr/lib/sendmail -bt -C$cf -d21.12 |\
Xgrep -v -e '----- rule fails' |\
Xsed -e 's/-----trying rule:/R/' \
X -e 's/"^P"/$*/g' \
X -e 's/"^Q"/$+/g' \
X -e 's/"^R"/$-/g' \
X -e 's/"^S\([A-Za-z]\)"/$=\1/g' \
X -e 's/"^T\([0-9]\)"/$\1/g' \
X -e 's/"^U"/$#/' \
X -e 's/"^V"/$\&/g' \
X -e 's/"^W"/$:/g' \
X -e 's/"^X"/$>/g' \
X -e 's/"//g' |\
Xsed -e '/^R/s/[ ]//g' \
X -e '/matches:/s/[ ]//g' -e 's/rulematches:/rule matches: /' \
X -e '/rewritten as:/s/[ ]//g' -e 's/rewrittenas:/rewritten as: /' \
X -e '/returns:/s/[ ]//g' \
X -e 's/.*ruleset\([0-9]\)returns:/ruleset \1 returns: /' \
X -e '/input:/s/[ ]//g' \
X -e 's/.*ruleset\(.*\)input:/ruleset \1 input: /'
X#
X# Compliments of the author: Dan Long
X# CSNET Technical Staff
X# long@sh.cs.net
END_OF_FILE
if test 1343 -ne `wc -c <'cfdebug'`; then
echo shar: \"'cfdebug'\" unpacked with wrong size!
fi
chmod +x 'cfdebug'
# end of 'cfdebug'
fi
if test -f 'cftest' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'cftest'\"
else
echo shar: Extracting \"'cftest'\" \(293 characters\)
sed "s/^X//" >'cftest' <<'END_OF_FILE'
X#!/bin/sh
X# A script to put debug input a line at a time through cfdebug. JRA 05/10/89
X# call like this (with the file sendmail.cf in the current directory):
X# cftest < debug.in > debug.out &
Xwhile read line ; do
X echo $line
X echo $line | cfdebug sendmail.cf | grep '0 returns: $#'
Xdone
END_OF_FILE
if test 293 -ne `wc -c <'cftest'`; then
echo shar: \"'cftest'\" unpacked with wrong size!
fi
chmod +x 'cftest'
# end of 'cftest'
fi
if test -f 'debug.in' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'debug.in'\"
else
echo shar: Extracting \"'debug.in'\" \(573 characters\)
sed "s/^X//" >'debug.in' <<'END_OF_FILE'
X0 user@bit.BITNET
X0 bit.BITNET!user
X0 some.random.domain!user
X0 user@LOCAL
X0 site!user@uunet.uu.net
X0 <@host1,@host2,@host3:a@b.com>
X0 uunet!site1!site2
X0 user@itsgw.rpi.edu
X0 user@blah.its.rpi.edu
X0 user@rpi.edu
X0 user@pawl.rpi.edu
X0 userxxxx@mts.rpi.edu
X0 blah!nyser!user
X0 uunet!itsgw!user
X0 uunet!rpi!postmaster
X0 uunet!itsgw!mts!userfred@some.where.edu
X0 itsgw!user@uunet.uu.net
X0 adobe!someone@decwrl.dec.com
END_OF_FILE
if test 573 -ne `wc -c <'debug.in'`; then
echo shar: \"'debug.in'\" unpacked with wrong size!
fi
# end of 'debug.in'
fi
echo shar: End of archive 1 \(of 1\).
cp /dev/null ark1isdone
MISSING=""
for I in 1 ; do
if test ! -f ark${I}isdone ; then
MISSING="${MISSING} ${I}"
fi
done
if test "${MISSING}" = "" ; then
echo You have the archive.
rm -f ark[1-9]isdone
else
echo You still need to unpack the following archives:
echo " " ${MISSING}
fi
## End of shell archive.
exit 0
--------------end of shar file --------------
--
---Jim Ault, ITS Postmaster, Rensselaer Polytechnic Inst, Troy NY, 12180
Postmaster@rpi.edu Jim_Ault@rpitsmts.BITNET Jim_Ault@mts.rpi.edu
518-276-2750 (voice) ...uunet!rpi.edu!ault 518-276-2809 (fax)per@erix.ericsson.se (Per Hedeland) (09/19/89)
In article <6467@hubcap.clemson.edu> hubcap@hubcap.clemson.edu (Mike Marshall) writes: >From article <220@digi.UUCP>, by kcantrel@digi.UUCP (Keith Cantrell): >> Once I get sendmail into debug mode to verify parsing of addresses, what are >> the rules I need to run an address through to completely simulate what a real >> mail message goes through. >Try this: >change Od in your cf so that mail gets queued instead of delivered in the >background. >Send a piece of mail to the address you want to watch get parsed. >Crank up a script session, so you can capture everything in a file. >Say sendmail -q -d21.12 I agree with the idea (after all, the only *real* authority on what happens is sendmail doing "normal" execution:-). In particular, just feeding destinations through set 0 isn't nearly enough, since I've found that it is often the *sender* addresses that get mangled beyond comprehension... However, I prefer this method - IMHO it's simpler, shows *everything* that happens, and your UA doesn't get in the way (must be run as a "trusted" user, of course): /usr/lib/sendmail -odi -d21.x -f'env_sender' 'env_recipient' < 'letter' where 'letter' contains at least From: 'head_sender' To: 'head_recipient' and, of course, all the 'env_sender' etc are replaced by the addresses that you really want to test. I find that x=2 tells the essentials of what's happening, increase it as needed; I believe x=19 is the worst you can get... The drawback with all this is, of course, that the letter actually gets sent if possible, i.e. be careful with how you choose the addresses (at least the env_ ones). Regards --Per Hedeland per@erix.ericsson.se or per%erix.ericsson.se@uunet.uu.net or ...uunet!erix.ericsson.se!per