我有一个电子邮件服务器,配置了多个sendmail实例,每个实例运行在不同的IPv4和IPv6地址上。一切都在顺利进行,直到某些域/电子邮件(显然是随机的) sendmail尝试从IPv6地址而不是IPv4发送电子邮件时,我才开始接收以下消息:
SYSERR(root): makeconnection: cannot bind socket [IPv6:2001:db8::2]: Address family not supported by protocol
to=<xxx@bad-domain.example>, 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 protocolIPv6和IPv4地址被混淆。
我所观察到的,但我不确定这是否是问题所在,针对坏域名的MX记录是CNAME,而不是直接的A或AAAA记录。
我在Fedora 16上使用Sendmail 8.14.5,所有的IP都是静态配置的(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作为MX记录,没有一个CNAME的解析为IPv6
发布于 2013-10-28 10:47:36
虽然上面的评论似乎表明,这不是一个v4逐域的问题,我有理由去做您所描述的,今天,并发现了这个问题,同时搜索。
我发现强制每个域进行v4传递的方法是启用mailertable,方法是
FEATURE(`mailertable')在我的sendmail.mc中(如果它已经存在,您就不需要再添加它)。然后,通过重写DNS并指示传递到邮件表文件中的v4地址,强制基于v4的传递;这是来自/etc/mail/mailertable的:
.example.com esmtp:[260.240.18.38]
example.com esmtp:[260.240.18.38]我通常不编辑域名,但我不想让那些错误地实现了smtp ipv6 6的同事感到尴尬,因此需要我强制通过v4进行传递。IP地址显然也是假的;但是在生产过程中,它是他们的主MX的v4地址,取自DNS。
https://serverfault.com/questions/482035
复制相似问题