Basic Textual Canonicalization
Addresses can be legally expressed in a variety of formats:
address address (full name) <address> full name <address> list:members;
When sendmail preprocesses an address that is in the third and forth formats, it needs to find the address inside an arbitrarily deep nesting of angle braces. For example, where is the address in all this?[261]
Full Name <x12<@zy<alt=bob@r.com<bob@r.net>r.r.net>#5>+>
The rules in a typical canonify
rule set 3 will quickly cut
through all this and focus on the actual
address:
R $* $: < $1 > housekeeping <> R $+ < $* > < $2 > strip excess on left R < $* > $+ < $1 > strip excess on right
Here, the first rule puts angle braces around
everything so that the next two rules will still
work, even if the original address had no angle
braces. The second rule essentially looks for the
leftmost <
character and throws away everything to the left of
that. Because rules are recursive, it does that
until there is only one <
left. The third rule completes the
process by looking for the rightmost > and
discarding everything after that.
You can witness this process by running
sendmail in -bt
rule-testing mode,
using something such as the following. Note that
some of the lines that sendmail
outputs are wrapped to fit the page:
%/usr/sbin/sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter <ruleset> <address> >-d21.12
>canonify Full Name <x12<@zy<alt=bob@r.com<bob@r.net
r.r.net>#5>+> > ... some other rules here -----trying ...
Get sendmail, 4th Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.