【问题标题】:Perl IO::Socket::SSL: connect: Network is unreachablePerl IO::Socket::SSL: 连接:网络不可达
【发布时间】:2012-07-13 03:30:22
【问题描述】:

任何使用 Mail::IMAPClient 的代码都会出现此错误。为了验证我是否使用了该主题中的以下示例:How do I authenticate into Gmail using Perl?

#!/usr/bin/env perl -w
use strict; use warnings;
use Mail::IMAPClient;

# Connect to IMAP server
my $client = Mail::IMAPClient->new(
  Server   => 'imap.gmail.com',
  User     => $user,
  Password => $pass,
  Port     => 993,
  Ssl      =>  1,
  )
  or die "Cannot connect through IMAPClient: $@";

# List folders on remote server (see if all is ok)
if ( $client->IsAuthenticated() ) {
  print "Folders:\n";
  print "- ", $_, "\n" for @{ $client->folders() };  
};

# Say so long
$client->logout();

现在,我已经解决了类似的问题,但从未见过像“网络无法访问”这样的奇怪错误。没有实际的网络问题,ping 工作正常。我安装了 IO::Socket::SSL、Net::SSLeay。

$ 回声-n | openssl s_client -connect imap.gmail.com:993

CONNECTED(00000003)
depth=2 C = US, O = Equifax, OU = Equifax Secure Certificate Authority
verify return:1
depth=1 C = US, O = Google Inc, CN = Google Internet Authority
verify return:1
depth=0 C = US, ST = California, L = Mountain View, O = Google Inc, CN = imap.gmail.com
verify return:1
---
Certificate chain
 0 s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=imap.gmail.com
   i:/C=US/O=Google Inc/CN=Google Internet Authority
 1 s:/C=US/O=Google Inc/CN=Google Internet Authority
   i:/C=US/O=Equifax/OU=Equifax Secure Certificate Authority
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIDWzCCAsSgAwIBAgIKFefcnAADAAA7OzANBgkqhkiG9w0BAQUFADBGMQswCQYD
VQQGEwJVUzETMBEGA1UEChMKR29vZ2xlIEluYzEiMCAGA1UEAxMZR29vZ2xlIElu
dGVybmV0IEF1dGhvcml0eTAeFw0xMTExMTgwMjAxMjRaFw0xMjExMTgwMjExMjRa
MGgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1N
b3VudGFpbiBWaWV3MRMwEQYDVQQKEwpHb29nbGUgSW5jMRcwFQYDVQQDEw5pbWFw
LmdtYWlsLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAmv2pvvhXOyOA
Uq053VLGMAErgk2NcDzxWNB5PWwXHzkcFuZOa0q1YUlff6LaJurq5UctkOO+3mt1
L+/wcZiEzxTdfOclyJcY/qBsjz8qgG+4Kx3/dVlTYz2geUyxvGNibNQfuXpoI1M5
iUQ/FSaFIazXZ01tpb+mgCOtwzENMk8CAwEAAaOCASwwggEoMB0GA1UdDgQWBBRd
l+HsAH5IwfNuc25lLuryGEaXwzAfBgNVHSMEGDAWgBS/wDDr9UMRPme6npH7/Gra
42sSJDBbBgNVHR8EVDBSMFCgTqBMhkpodHRwOi8vd3d3LmdzdGF0aWMuY29tL0dv
b2dsZUludGVybmV0QXV0aG9yaXR5L0dvb2dsZUludGVybmV0QXV0aG9yaXR5LmNy
bDBmBggrBgEFBQcBAQRaMFgwVgYIKwYBBQUHMAKGSmh0dHA6Ly93d3cuZ3N0YXRp
Yy5jb20vR29vZ2xlSW50ZXJuZXRBdXRob3JpdHkvR29vZ2xlSW50ZXJuZXRBdXRo
b3JpdHkuY3J0MCEGCSsGAQQBgjcUAgQUHhIAVwBlAGIAUwBlAHIAdgBlAHIwDQYJ
KoZIhvcNAQEFBQADgYEAa6JYZBInXMfojI4bXLusfDlzZ6gnGtHxOO8hUZbDAwcL
t2/4uDDj8sroVrTWXMqURzk1lCsXlGPFhaKdnsMrmcgC01THAKPFrrQnQc/BM5H/
kr5ZAyJKHyu4dNnL3NNjig+22fp8slaLo25C95YQT5LiBL2qnAzLs4nWBzqih74=
-----END CERTIFICATE-----
subject=/C=US/ST=California/L=Mountain View/O=Google Inc/CN=imap.gmail.com
issuer=/C=US/O=Google Inc/CN=Google Internet Authority
---
No client certificate CA names sent
---
SSL handshake has read 1850 bytes and written 299 bytes
---
New, TLSv1/SSLv3, Cipher is RC4-SHA
Server public key is 1024 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1
    Cipher    : RC4-SHA
    Session-ID: D98F3659858A0F39D32F1B5D96F756DE6E093E849A6AE0066C391BE2881B9A69
    Session-ID-ctx: 
    Master-Key: 8D4BE4DFEB7F3218A501FE9240E0B51CC987B99EE0DDBA5EC13E9A10137B63508692DA684DA25E8B2839906F0F7ADDD5
    Key-Arg   : None
    Krb5 Principal: None
    PSK identity: None
    PSK identity hint: None
    TLS session ticket lifetime hint: 100800 (seconds)
    TLS session ticket:
    0000 - 6e 26 64 bb c3 97 30 9c-32 6f c5 38 d6 db 23 54   n&d...0.2o.8..#T
    0010 - 65 43 b8 01 4e 46 5b b3-81 7e 26 6b 3a 36 2b 62   eC..NF[..~&k:6+b
    0020 - 03 96 44 de 3d b0 81 be-18 b0 14 a1 09 99 28 73   ..D.=.........(s
    0030 - 2d 5a 87 6c b9 26 64 94-af f2 5e f1 f4 10 ba ff   -Z.l.&d...^.....
    0040 - 68 a0 6a 31 d6 10 f8 88-61 63 5a 58 0b 1d d0 98   h.j1....acZX....
    0050 - 81 ed f7 45 11 1d 4a 22-23 2f 44 0c 62 b4 18 e9   ...E..J"#/D.b...
    0060 - e7 4a 57 10 f1 3c a0 d6-ee 46 98 5d df e9 a5 52   .JW..<...F.]...R
    0070 - a6 75 da a6 25 89 87 f0-b0 ec 60 0d c0 19 0e 6f   .u..%.....`....o
    0080 - 23 53 a2 f2 18 e8 8d 51-28 e7 f2 d3 52 8a 02 f4   #S.....Q(...R...
    0090 - 32 aa 82 db                                       2...

    Start Time: 1342180574
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---
DONE 

【问题讨论】:

  • 为我工作。它到底在哪里失败了?错误信息是否来自构造函数?
  • 是的,Mail::IMAPClient->new() 在这里失败,这个主题的标题是错误信息“IO::Socket::SSL: connect: Network is unreachable”
  • 'Network unreachable' 与 Perl 或 SSL 无关。这是一个网络拓扑问题。
  • 但是“telnet imap.gmail.com 993”有效,ping 和 nslookup 也有效
  • 请同时添加echo -n | openssl s_client -connect imap.gmail.com:993的结果

标签: perl ssl


【解决方案1】:

这可能是 ipv6 错误。 Gmail 最近启用了 ipv6 访问。你能试着把它放在'use Mail::IMAPClient;'之前吗?行:

use IO::Socket::SSL 'inet4';

【讨论】:

  • 嗯。无论如何,我能够很好地运行您提供的脚本。你使用什么 perl 和操作系统?
  • 谢谢@MichielB。 CentOS 6(64 位)上的 Perl v5.10.1。
  • 可以在相同的环境中正常运行代码。你的网络是什么样的?你有启用 IPv6 的网卡吗?你有支持 IPv6 的网络吗?
  • 也为我工作!干杯!
猜你喜欢
  • 1970-01-01
  • 2020-09-14
  • 1970-01-01
  • 2011-08-29
  • 1970-01-01
  • 2011-10-13
  • 1970-01-01
  • 2013-10-24
  • 1970-01-01
相关资源
最近更新 更多