我有一个电子邮件服务器configuration了多个实例的sendmail运行每个不同的IPv4和IPv6地址。 一切都运行平稳,直到某些域/电子邮件(显然是随机的)sendmail尝试从IPv6地址而不是IPv4发送电子邮件,我开始接收消息,如:
SYSERR(root): makeconnection: cannot bind socket [IPv6:2001:db8::2]: Address family not supported by protocol to=<[email protected]>, delay=04:23:07, xdelay=00:00:00, mailer=esmtp, pri=11918385, relay=bad-domain.example. [198.51.100.5], dsn=4.0.0, stat=Deferred: Address family not supported by protocol
IPv6和IPv4地址被混淆了。
我所观察到的,但我不知道这是问题,坏域的MXlogging是一个CNAME,而不是直接的A或AAAAlogging。
我在Fedora 16上使用Sendmail 8.14.5所有的IP都是静态configuration的(IPv4 + IPv6)如果无法解决基本问题,有什么方法可以指示sendmail只使用IPv4来获取指定域的列表?
来自sendmail.mc的摘录:
CLIENT_OPTIONS(`Family=inet,Addr=192.0.2.2')dnl CLIENT_OPTIONS(`Family=inet6,Addr=2001:db8::2')dnl DAEMON_OPTIONS(`Name=MTA-v4,Family=inet,Addr=192.0.2.2')dnl DAEMON_OPTIONS(`Name=MTA-v6,Family=inet6,Addr=2001:db8::2')dnl
一些坏域的例子:donpac.ru,montevideo.com.uy,dalia-ingenierie.fr,opela.cz,orange.net,poisl.com.br,tamil.com,zerong.cn
LE:所有似乎都有一个CNAME作为MXlogging,没有一个CNAME的parsing到IPv6
虽然上面的评论似乎表明,这不是一个v4逐个域的问题,我有理由需要做你正在描述的东西,今天,并发现这个问题,同时search。
我发现强制v4交付在逐个域的基础上的方法是启用mailertable,通过拥有
FEATURE(`mailertable')
在我的sendmail.mc(如果它已经在那里,你不需要再次添加)。 然后,我通过覆盖DNS强制基于v4的传送,并指示传送到mailertable文件中的v4地址; 这是从/etc/mail/mailertable :
.example.com esmtp:[260.240.18.38] example.com esmtp:[260.240.18.38]
我通常不会修改域名,但我不想让那些错误地实现了smtp-over-ipv6的同事难堪,因此需要我强制通过v4进行交付。 IP地址显然也是错误的, 但在生产中,它是主DNS的v4地址,取自DNS。