2012-07-13 157 views
4

使用Mail :: IMAPClient的任何代碼都有此錯誤。爲了驗證我從題目用下面的例子:How do I authenticate into Gmail using Perl?Perl IO :: Socket :: SSL:connect:網絡無法訪問

#!/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: [email protected]"; 

# 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。

$ echo -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 
+0

適合我。它究竟在哪裏失敗?錯誤消息來自構造函數嗎? – daxim 2012-07-13 09:37:21

+0

是的,Mail :: IMAPClient-> new()在這裏失敗,並且此主題的標題是錯誤消息「IO :: Socket :: SSL:connect:Network is unreachable」 – Roy 2012-07-13 10:09:43

+0

「無法訪問網絡」與任何一個無關Perl或SSL。這是一個網絡toplogy問題。 – EJP 2012-07-13 10:10:45

回答

6

這可能是一個ipv6錯誤。 Gmail最近啓用了ipv6訪問。你可以嘗試在'使用Mail :: IMAPClient'之前放置它嗎?' line:

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

沒有那個運氣:( – Roy 2012-07-13 16:13:28

+0

嗯。無論如何,我能夠運行你提供的腳本就好了。你使用什麼Perl和OS? – MichielB 2012-07-13 17:47:44

+0

感謝@MichielB。Perl在CentOS 6(64位)上的v5.10.1。 – Roy 2012-07-14 13:13:15