I think there is some ambiguity in section 3. In particular, the
numbering seems to combine looping and gotos in a confusing way.
For example, consider the case of doing an A (or AAAA) lookup that
returns multiple IP addresses. Step (6) says to loop from (7) to
(8) on each address returned, but step (8) says to to back to step
(3). Which one is it? This is doubly confusing because step (8)
can never be executed more than once in the innermost loop [(7)-(8)],
so really you are looping on step (7) only -- assuming that the goto
(3) takes precedence over the loop (7)-(8).
Now, _I_ know what they are trying to say, but the language could
be cleaned up -- making this either a loop model or a goto model
should fix it.
Also in section 3, step (5) doesn't say what to do if the resulting
list is empty. The example at the top of the section lists a host
mx10.example.org that is IPv6 only. If the source MTA is IPv4 only,
then the lookup of mx10.example.org is going to fail with NO_DATA.
Step (5) should address this.