如何防止net smtp上的ip6使用

时间:2015-09-02 15:35:58

标签: perl

Windows 2012 / StrawberryPerl上的My Net :: SMTP代码正在逐渐淘汰,我认为这是因为Perl正在尝试使用IPv6地址,而我的本地MS SMTP服务器未在IPv6上运行。以下工作,但如果我使用“localhost”或FQDN Net :: SMTP-> new()失败,$ @包含“错误地址”

my $smtp = Net::SMTP->new('127.0.0.1',
                           Timeout => 30,
                           Debug   => 1,
                          );

此外,如果我使用远程SMTP服务器的FQDN(Windows 2008 / IMail),它可以工作。

本地和远程服务器仅在端口25上侦听SMTP。

有没有办法在我的脚本中强制使用IPv4?我想过在Windows中禁用IPv6,但我读到不建议这样做。我还可以尝试调试它吗?

1 个答案:

答案 0 :(得分:1)

您可以尝试使用Domain => AF_INET}强制将dns解析为ipv4,即:

my $smtp = Net::SMTP->new('FQDN',
                           Timeout => 30,
                           Domain => AF_INET,
                           Debug   => 1,
                          );
  

如果未给出“Domain”,则假设AF_UNSPEC,即AF_INET   解析DNS名称时将考虑AF_INET6和AF_INET6。   AF_INET6是优先的。

SRC:http://www.perlmonks.org/?node_id=1127249