Date: Tue, 8 Jan 2013 16:18:37 +0100 From: Ulrich =?utf-8?B?U3DDtnJsZWlu?= <uqs@FreeBSD.org> To: stable@FreeBSD.org Cc: Gregory Neil Shapiro <gshapiro@freebsd.org> Subject: sendmail vs ipv6 broken after upgrade to 9.1 Message-ID: <20130108151837.GF35868@acme.spoerlein.net>
index | next in thread | raw e-mail
Hey,
I upgraded a server running 8.x to 9.1 over the weekend and sendmail no
longer wants to bind the AF_INET6 sockets.
So while this still works:
DAEMON_OPTIONS(`Port=smtp, Addr=127.0.0.1, Name=MSA, M=Eu, InputMailFilters=dkim')
DAEMON_OPTIONS(`Port=smtp, Addr=::1, Name=MSA, Family=inet6, M=Eu, InputMailFilters=dkim')
this is broken:
DAEMON_OPTIONS(`Port=submission, Addr=acme.spoerlein.net, Name=MSA, M=E, InputMailFilters=dkim')
DAEMON_OPTIONS(`Port=submission, Addr=acme.spoerlein.net, Name=MSA, Family=inet6, M=E, InputMailFilters=dkim')
which makes me believe this has to do with name resolution...
The actual reported errors are:
Jan 8 16:05:03 acme sm-msp-queue[98057]: starting daemon (8.14.6): queueing@00:30:00
Jan 8 16:05:03 acme sm-mta[98054]: NOQUEUE: SYSERR(root): opendaemonsocket: daemon MSA: cannot bind: Can't assign requested address
Jan 8 16:05:03 acme sm-mta[98054]: daemon MSA: problem creating SMTP socket
Jan 8 16:05:08 acme sm-mta[98054]: NOQUEUE: SYSERR(root): opendaemonsocket: daemon MSA: cannot bind: Can't assign requested address
Jan 8 16:05:08 acme sm-mta[98054]: daemon MSA: problem creating SMTP socket
Jan 8 16:05:13 acme sm-mta[98054]: NOQUEUE: SYSERR(root): opendaemonsocket: daemon MSA: cannot bind: Can't assign requested address
Jan 8 16:05:13 acme sm-mta[98054]: daemon MSA: problem creating SMTP socket
This will loop a couple of times, but not make any progress. ktrace will show what's up:
98054 sendmail CALL bind(0x6,0x708c14,0x10)
98054 sendmail STRU struct sockaddr { AF_INET, 88.198.49.12:587 }
98054 sendmail RET bind 0
98054 sendmail CALL socket(PF_INET6,SOCK_STREAM,IPPROTO_IP)
98054 sendmail RET socket 7
98054 sendmail CALL setsockopt(0x7,SOL_SOCKET,SO_REUSEADDR,0x7fffffffafa4,0x4)
98054 sendmail RET setsockopt 0
98054 sendmail CALL setsockopt(0x7,SOL_SOCKET,SO_KEEPALIVE,0x7fffffffafa4,0x4)
98054 sendmail RET setsockopt 0
98054 sendmail CALL fcntl(0x7,F_GETFD,0)
98054 sendmail RET fcntl 0
98054 sendmail CALL fcntl(0x7,F_SETFD,FD_CLOEXEC)
98054 sendmail RET fcntl 0
98054 sendmail CALL bind(0x7,0x708dbc,0x1c)
98054 sendmail STRU struct sockaddr { AF_INET6, [::ffff:88.198.49.12]:587 }
98054 sendmail RET bind -1 errno 49 Can't assign requested address
Yeah right ... I don't want an IPv6-mapped-IPv4 address, I want it to bind to the real thing.
/etc/nsswitch.conf has
hosts: files dns
and /etc/hosts has
root@acme: /etc/mail# grep acme /etc/hosts
88.198.49.12 acme.spoerlein.net acme
2a01:4f8:131:23c2::1 acme.spoerlein.net acme
Which shouldn't make a difference anyway, because of:
root@acme: /etc/mail# dig acme.spoerlein.net a +short; dig acme.spoerlein.net aaaa +short
88.198.49.12
2a01:4f8:131:23c2::1
How can I unstupid sendmail here?
Uli
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20130108151837.GF35868>
