Brian A. Seklecki writes:
sysctl = net.inet6.ip6.v6only also seems to affect this bug $ sysctl -a| grep -i net.inet6.ip6.v6only net.inet6.ip6.v6only: 1 $ ktrace testmxlookup google.com Soft error. # sudo sysctl -w net.inet6.ip6.v6only=0 net.inet6.ip6.v6only: 1 -> 0 # ktrace testmxlookup google.com Domain google.com: Relay: smtp4.google.com, Priority: 10, Address: ::ffff:72.14.221.25 Relay: smtp2.google.com, Priority: 10, Address: ::ffff:64.233.165.25 Relay: smtp1.google.com, Priority: 10, Address: ::ffff:209.85.237.25 Relay: smtp3.google.com, Priority: 10, Address: ::ffff:209.85.137.25 Looking inside my kdump(8) of testmxlokoup: I see: 4366 testmxlookup CALL socket(PF_INET6,SOCK_DGRAM,IPPROTO_IP) 4366 testmxlookup RET socket 3 Then multiple failed calls of sendto(): 4366 testmxlookup CALL sendto(0x3,0x7fffffffe560,0x1c,0,0x7fffffffe770,0x1c) 4366 testmxlookup RET sendto -1 errno 22 Invalid argument 4366 testmxlookup CALL sendto(0x3,0x7fffffffe560,0x1c,0,0x7fffffffe770,0x1c) 4366 testmxlookup RET sendto -1 errno 22 Invalid argument 4366 testmxlookup CALL sendto(0x3,0x7fffffffe560,0x1c,0,0x7fffffffe770,0x1c)
I suppose that you need to explain what that kernel setting actually does. Additionally, you need to figure out what parameter values are being passed to sendto(). Linux's strace() doesn't merely print useless raw hexadecimal values to syscalls, when a syscall parameter is a pointer to a known structure, strace dumps the individual values of the structure's members.
A brief look at the code does not find anything improper. If an IPv6 socket is succesfully created, the code will try to connect to IPv4 addresses by mapping them to IPv6 addresses, as per 3.7 of RFC 3493. My suspicion is that your kernel parameter disables IPv4-mapped address support in the kernel, requiring application to open IPv4 sockets in order to connect to IPv4 addresses, and IPv6 sockets in order to connect to IPv6 addresses. So, in order to perform DNS lookups, you have to create two sockets, one to talk to IPv6 peers, and one for the IPv6 peers.
If so, of course, that breaks RFC 3493, and is of somewhat dubious value. IPv6 is explicitly designed to that IPv6 applications can interoperate with IPv4 peers without jumping through hoops, like that, simply by using IPv6-mapped IPv4 addresses.
pgpnNL0KUwRv6.pgp
Description: PGP signature
------------------------------------------------------------------------------ The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your production scanning environment may not be a perfect world - but thanks to Kodak, there's a perfect scanner to get the job done! With the NEW KODAK i700 Series Scanner you'll get full speed at 300 dpi even with all image processing features enabled. http://p.sf.net/sfu/kodak-com
_______________________________________________ courier-users mailing list [email protected] Unsubscribe: https://lists.sourceforge.net/lists/listinfo/courier-users
