assuming that my mxdial.c is up-to-date (sources is
failing in a wierd way), that's not the full story.
mxdial calls callmx. callmx has this code

static int
callmx(DS *ds, char *dest, char *domain)
{
int fd, i, nmx;
char addr[Maxstring];

/* get a list of mx entries */
nmx = mxlookup(ds, domain);
if(nmx < 0){
/* dns isn't working, don't just dial */
return -1;
}
if(nmx == 0){
if(debug)
fprint(2, "mxlookup returns nothing\n");
return dial(dest, 0, 0, 0);
}
[...]

so if there is no mx record, the normal address is dialed.
(in this case the check against a returned address of 127.0.0.1
is skipped. i would think if this check is necessary for mx
records, it is also necessary for a records. but i can't
see why plan 9 cares. if you do have a loopback, it's likely
for venti.)

in any event that's not what's happening. using upas/spf
(it's on sources & submitted) we see that that two mx records
are found rfcmail.nanosouffle.net and sounine.nanosouffle.net:

; upas/spf -d nanosouffle.net 75.58.233.41
dnsquery(/net, nanosouffle.net, txt) ->
dom nanosouffle.net
txt v=spf1 mx -all
dnsquery(/net, nanosouffle.net, mx) ->
dom nanosouffle.net
pref 1
mx rfcmail.nanosouffle.net
dom nanosouffle.net
pref 10
mx sounine.nanosouffle.net
dnsquery(/net, rfcmail.nanosouffle.net, any) ->
dom rfcmail.nanosouffle.net
ip 75.58.233.40
dnsquery(/net, sounine.nanosouffle.net, any) ->
dom sounine.nanosouffle.net
ip 75.58.233.41

i would guess that dns cs may be or have been confused.
to eliminate the possibility of continuing confusion,
have you tried

telnet /net.alt/tcp!sounine.nanosouffle.net!smtp

- erik