SlideShare a Scribd company logo
1 of 8
Download to read offline
Antonio	
  Musarra's	
  Blog	
  
The	
  ideal	
  solution	
  for	
  a	
  problem	
                                                         Blog:	
  http://musarra.wordpress.com	
  
                                                                                                          Mail:	
  antonio.musarra@gmail.com	
  
	
  

Google	
  Mail	
  POP3	
  SSL	
  con	
  Fetchmail	
  
	
  

Nel	
   corso	
   di	
   quest’articolo	
   vedremo	
   come	
   sia	
   possibile	
   in	
   maniera	
   semplice	
   e	
  
veloce	
  riuscire	
  a	
  compiere	
  il	
  download	
  delle	
  email	
  da	
  un	
  account	
  GMail.	
  Il	
  client	
  
di	
   posta	
   che	
   utilizzeremo	
   per	
   il	
   download	
   delle	
   nostre	
   email	
   sarà	
   Fetchmail
(BerliOS, 2010).	
  

Il	
  servizio	
  di	
  posta	
  elettronica	
  di	
  Google	
  offre	
  diversi	
  modi	
  di	
  accesso	
  alla	
  propria	
  
casella,	
  oltre	
  alla	
  consueta	
  Web	
  Mail.	
  Il	
  servizio	
  GMail,	
  ha	
  ben	
  cinque	
  altri	
  metodi	
  
di	
  accesso:	
  

           •       POP3	
  (Internet Engineering Task Force - IETF, 1996)	
  
           •       IMAP4	
  (Internet Engineering Task Force - IETF, 2003)	
  
           •       Notifier (Google, 2010)	
  
           •       Google	
  Apps	
  Sync	
  for	
  Microsoft	
  Outlook®	
  (Google, 2010)	
  
Il	
   metodo	
   di	
   accesso	
   preso	
   in	
   considerazione	
   per	
   lo	
   scopo	
   di	
   quest’articolo	
   è	
   il	
  
primo,	
   frutteremo	
   quindi	
   il	
   protocollo	
   POP3.	
   GMail	
   supporta	
   unicamente	
   una	
  
connessione	
  protetta	
  SSL (Wikipedia, 2010).	
  


Requisiti	
  
         •       Sistema	
  Operativo	
  della	
  famiglia	
  Unix/Linux/BSD	
  
         •       Il	
  proprio	
  account	
  GMail	
  deve	
  essere	
  configurato	
  per	
  consentire	
  l’accesso	
  
                 alla	
  casella	
  attraverso	
  il	
  protocollo	
  POP3.	
  E’	
  possibile	
  verificare	
  le	
  
                 impostazioni	
  del	
  POP3	
  attraverso	
  il	
  panello:	
  Impostazioni	
  -­‐>	
  Inoltro	
  e	
  
                 POP/IMAP	
  (vedi	
  Figure	
  1).	
  
         •       OpenSSL	
  Toolkit	
  (OpenSSL Project, 1998)	
  
         •       Fetchmail	
  con	
  il	
  supporto	
  SSL.	
  Per	
  essere	
  sicuri	
  del	
  supporto	
  SSL	
  da	
  parte	
  
                 di	
  fetchmail	
  è	
  possibile	
  eseguire	
  il	
  comando	
  illustrato	
  al	
  Listing	
  1.	
  
	
  

	
  




                                                                                                                                                           	
  
	
  
Figure	
  1	
  Impostazioni	
  protocollo	
  POP3	
  per	
  l’account	
  GMail	
  	
  	
  
12/12/10	
                                                                                                                                            1	
  

       This	
  document	
  is	
  issued	
  with	
  license	
  Creative	
  Commons	
  Attribution-­‐NonCommercial-­‐ShareAlike	
  
                                                                                                                                                         	
  
	
  
Antonio	
  Musarra's	
  Blog	
  
The	
  ideal	
  solution	
  for	
  a	
  problem	
                                                         Blog:	
  http://musarra.wordpress.com	
  
                                                                                                          Mail:	
  antonio.musarra@gmail.com	
  
	
  
	
  
$ ldd /usr/bin/fetchmail
        linux-gate.so.1 => (0x00202000)
        libcom_err.so.2 => /lib/libcom_err.so.2 (0x00ded000)
        libkrb4.so.2 => /usr/lib/libkrb4.so.2 (0x00b99000)
        libdes425.so.3 => /usr/lib/libdes425.so.3 (0x00bb8000)
        libssl.so.6 => /lib/libssl.so.6 (0x00714000)
        libcrypto.so.6 => /lib/libcrypto.so.6 (0x0028c000)
        libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0x00698000)
        libselinux.so.1 => /lib/libselinux.so.1 (0x00c02000)
        /lib/ld-linux.so.2 (0x00a33000)
        libsepol.so.1 => /lib/libsepol.so.1 (0x00c1c000)
       …

$ otool -L /usr/bin/fetchmail
/usr/bin/fetchmail:
        /usr/lib/libresolv.9.dylib (current version 38.0.0)
        /System/Library/Frameworks/Kerberos.framework/Versions/A/Kerberos
        /usr/lib/libssl.0.9.8.dylib (current version 0.9.8)
        /usr/lib/libcrypto.0.9.8.dylib (current version 0.9.8)
        /usr/lib/libSystem.B.dylib (current version 125.0.0)	
  
	
  
Listing	
  1	
  Verifica	
  del	
  supporto	
  SSL	
  di	
  fetchmail	
  

	
  

Nel	
   listing	
   precedente	
   ho	
   evidenziato	
   gli	
   item	
   che	
   dovreste	
   vedere	
   qualora	
   il	
  
supporto	
   SSL	
   per	
   fetchmail	
   sia	
   disponibile.	
   Per	
   la	
   stesura	
   dell’articolo	
   ho	
  
utilizzato	
   il	
   mio	
   fidato	
   Mac	
   Book	
   Pro,	
   ecco	
   il	
   motivo	
   per	
   cui	
   compare	
   anche	
   il	
  
comando	
  otool,	
  l’equivalente	
  del	
  comando	
  ldd	
  di	
  Unix/Linux.	
  


Recupero	
  dei	
  certificati	
  
Il	
   prossimo	
   passo	
   richiede	
   il	
   recupero	
   dei	
   certificati	
   utilizzati	
   da	
   GMail,	
   per	
  
questo	
   compito	
   utilizzeremo	
   OpenSSL	
   Toolkit.	
   Generalmente	
   i	
   sistemi	
   Unix	
  
dedicano	
   una	
   determina	
   locazione	
   del	
   file	
   system	
   come	
   repository	
   dei	
   certificati,	
  
solitamente	
  /usr/share/ssl/certs/.	
  	
  
Per	
   lo	
   scopo	
   dell’articolo	
   ho	
   deciso	
   d’usare	
   come	
   repository	
   dei	
   certificati	
   la	
  
directory	
  certs	
  collocata	
  all’interno	
  della	
  propria	
  home	
  directory,	
  quindi:	
  ~/.certs.	
  
Provando	
  a	
  eseguire	
  una	
  connessione	
  a	
  GMail	
  prima	
  del	
  recupero	
  dei	
  certificati,	
  
si	
   otterrà	
   un	
   errore	
   di	
   verifica	
   del	
   certificato	
   (vedi	
   Listing	
   2).	
   Nel	
   listato	
   è	
  
evidenziato	
   l’errore	
   sul	
   lookup	
   del	
   certificato,	
   oltre	
   ad	
   essere	
   evidenziata	
   la	
  
cosiddetta	
  Certificate	
  chain,	
  in	
  altre	
  parole,	
  la	
  catena	
  di	
  certificazione.	
  	
  
Sempre	
   utilizzando	
   OpenSSL,	
   procediamo	
   con	
   il	
   recupero	
   dei	
   certificati	
   SSL	
   in	
  
formato	
   PEM	
   (Privacy	
   Enhanced	
   Mail	
   Certificate) (Wikipedia, 2010).	
   I	
   certificati	
  
da	
   recuperare	
   sono	
   quelli	
   che	
   fanno	
   parte	
   della	
   Certificate	
  chain.	
   Il	
   primo	
   della	
  
lista	
  è	
  il	
  certificato	
  della	
  Root	
  Certificate	
  Authority (Wikipedia, 2009).	
  
         •       /C=US/O=Equifax/OU=Equifax	
  Secure	
  Certificate	
  Authority	
  	
  
         •       /C=US/O=Google	
  Inc/CN=Google	
  Internet	
  Authority	
  
         •       /C=US/ST=California/L=Mountain	
  View/O=Google	
  Inc/CN=pop.gmail.com	
  

	
  


12/12/10	
                                                                                                                                            2	
  

       This	
  document	
  is	
  issued	
  with	
  license	
  Creative	
  Commons	
  Attribution-­‐NonCommercial-­‐ShareAlike	
  
                                                                                                                                                         	
  
	
  
Antonio	
  Musarra's	
  Blog	
  
The	
  ideal	
  solution	
  for	
  a	
  problem	
                                                         Blog:	
  http://musarra.wordpress.com	
  
                                                                                                          Mail:	
  antonio.musarra@gmail.com	
  
	
  
	
  
$ openssl s_client -connect pop.gmail.com:995

depth=1 /C=US/O=Google Inc/CN=Google Internet Authority
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Certificate chain
 0 s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=pop.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
---
	
  
	
  Listing	
  2	
  Connessione	
  a	
  GMail	
  via	
  POP3	
  utilizzando	
  OpenSSL	
  

	
  
Procedendo	
   con	
   ordine,	
   iniziamo	
   con	
   il	
   download	
   del	
   Root	
   Certificate	
  
direttamente	
   dal	
   sito	
   di	
   GeoTrust	
   collocandolo	
   in	
   ~/.certs/.	
   Ricordo	
   che	
   il	
  
formato	
  del	
  certificato	
  è	
  PEM	
  (Base-­‐64	
  encoded	
  DER	
  X.509).	
  

	
  

	
  
$ curl -o ~/.certs/Equifax_Secure_Certificate_Authority.pem
http://www.geotrust.com/resources/root_certificates/certificates/Equifax_Secure_Certif
icate_Authority.cer
	
  
Listing	
  3	
  Download	
  di	
  Equifax	
  Secure	
  Certificate	
  Authority	
  via	
  curl.	
  

	
  

Dopo	
   aver	
   ottenuto	
   il	
   certificato	
   potremmo	
   toglierci	
   lo	
   sfizio	
   d’effettuare	
   delle	
  
verifiche	
   e	
   accertare	
   che	
   le	
   informazioni	
   estratte	
   siano	
   conformi	
   con	
   quanto	
  
dichiarato	
   sul	
   sito	
   di	
   GeoTrust	
   (http://www.geotrust.com/resources/root-­‐
certificates/).	
  

Per	
  l’operazione	
  di	
  verifica	
  sul	
  certificato	
  è	
  sempre	
  possibile	
  utilizzare	
  i	
  comandi	
  
OpenSSL	
  (vedi	
  Listing	
  4	
  e	
  Figure	
  2).	
  	
  

	
  

	
  
$ openssl x509 -in .certs/Equifax_Secure_Certificate_Authority.pem                                                                  -fingerprint   -
subject -issuer -serial -hash –noout

SHA1 Fingerprint=D2:32:09:AD:23:D3:14:23:21:74:E4:0D:7F:9D:62:13:97:86:63:3A
subject= /C=US/O=Equifax/OU=Equifax Secure Certificate Authority
issuer= /C=US/O=Equifax/OU=Equifax Secure Certificate Authority
serial=35DEF4CF
594f1775
	
  
Listing	
  4	
  Verifica	
  di	
  alcune	
  informazioni	
  sul	
  Root	
  Certificate	
  Authority.	
  

	
  
	
  

	
  
12/12/10	
                                                                                                                                            3	
  

       This	
  document	
  is	
  issued	
  with	
  license	
  Creative	
  Commons	
  Attribution-­‐NonCommercial-­‐ShareAlike	
  
                                                                                                                                                         	
  
	
  
Antonio	
  Musarra's	
  Blog	
  
The	
  ideal	
  solution	
  for	
  a	
  problem	
                                                         Blog:	
  http://musarra.wordpress.com	
  
                                                                                                          Mail:	
  antonio.musarra@gmail.com	
  
	
  
	
  




                                                                                                                                                           	
  
	
  
Figure	
  2	
  GeoTrust	
  Root	
  Certificates	
  Page.	
  

	
  

A	
   questo	
   punto	
   non	
   resta	
   che	
   ottenere	
   i	
   rimanenti	
   due	
   certificati	
   (sempre	
   in	
  
formato	
  PEM),	
  entrambi	
  di	
  proprietà	
  di	
  Google.	
  Procediamo	
  con	
  il	
  salvataggio	
  dei	
  
certificati	
  in	
  ~/.certs,	
  sempre	
  utilizzando	
  i	
  comandi	
  OpenSSL	
  con	
  l’aiuto	
  di	
  sed.	
  
	
  

	
  
$ echo |
openssl s_client -connect pop.gmail.com:995 -showcerts 2>&1 |
sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'
	
  
Listing	
  5	
  Comando	
  per	
  il	
  retrieve	
  dei	
  certificati	
  Google.	
  

	
  
I	
  certificati	
  (visibili	
  nel	
  Listing	
  6)	
  sono	
  stati	
  estratti	
  secondo	
  l’ordine	
  dettato	
  dalla	
  
Certificate	
  chain:	
  
         •       	
  /C=US/ST=California/L=Mountain	
  View/O=Google	
  Inc/CN=pop.gmail.com	
  
         •       /C=US/O=Google	
  Inc/CN=Google	
  Internet	
  Authority	
  	
  

Salviamo	
  i	
  due	
  certificati	
  in	
  ~/.certs/	
  chiamandoli	
  rispettivamente:	
  

          •       pop.gmail.com.pem	
  
          •       GoogleInternetAuthority.pem	
  
Ricordo	
   che	
   i	
   certificati	
   devono	
   essere	
   salvati	
   comprendendo	
   le	
   intestazioni	
  
d’inizio	
  e	
  fine	
  certificato.	
  

Adesso	
   che	
   abbiamo	
   tutti	
   i	
   certificati	
   memorizzati	
   nella	
   directory	
   ~/.certs,	
  
abbiamo	
  solo	
  bisogno	
  di	
  un	
  “rimaneggiamento”	
  in	
  modo	
  che	
  OpenSSL	
  e	
  fetchmail	
  
siano	
  in	
  grado	
  di	
  leggerli	
  e	
  utilizzarli.	
  
	
  

	
  

12/12/10	
                                                                                                                                            4	
  

       This	
  document	
  is	
  issued	
  with	
  license	
  Creative	
  Commons	
  Attribution-­‐NonCommercial-­‐ShareAlike	
  
                                                                                                                                                         	
  
	
  
Antonio	
  Musarra's	
  Blog	
  
The	
  ideal	
  solution	
  for	
  a	
  problem	
                                                         Blog:	
  http://musarra.wordpress.com	
  
                                                                                                          Mail:	
  antonio.musarra@gmail.com	
  
	
  
	
  
-----BEGIN CERTIFICATE-----
MIIDWjCCAsOgAwIBAgIKFNMahgADAAASkDANBgkqhkiG9w0BAQUFADBGMQswCQYD
VQQGEwJVUzETMBEGA1UEChMKR29vZ2xlIEluYzEiMCAGA1UEAxMZR29vZ2xlIElu
dGVybmV0IEF1dGhvcml0eTAeFw0xMDA0MjIyMDExMjNaFw0xMTA0MjIyMDIxMjNa
MGcxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1N
b3VudGFpbiBWaWV3MRMwEQYDVQQKEwpHb29nbGUgSW5jMRYwFAYDVQQDEw1wb3Au
Z21haWwuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC701lFBdiiC0BB
JEo2U1wmmS6Gv+qr4bjG6xeCSgb0UGI2vN1ifYyrf/wj1jBLupou+Ds+s0zLzE5Y
vsADQvu+pkDXoOcnK2YxiOiuZaGOSRKC2b0rbg4oYyS1TogEBcX+KpUxWQNpccW6
FPzpSVtmiG4azMUIR0mM2HERnwke/wIDAQABo4IBLDCCASgwHQYDVR0OBBYEFJr4
/CBophXvQNM/AFWw8zu5EXKiMB8GA1UdIwQYMBaAFL/AMOv1QxE+Z7qekfv8atrj
axIkMFsGA1UdHwRUMFIwUKBOoEyGSmh0dHA6Ly93d3cuZ3N0YXRpYy5jb20vR29v
Z2xlSW50ZXJuZXRBdXRob3JpdHkvR29vZ2xlSW50ZXJuZXRBdXRob3JpdHkuY3Js
MGYGCCsGAQUFBwEBBFowWDBWBggrBgEFBQcwAoZKaHR0cDovL3d3dy5nc3RhdGlj
LmNvbS9Hb29nbGVJbnRlcm5ldEF1dGhvcml0eS9Hb29nbGVJbnRlcm5ldEF1dGhv
cml0eS5jcnQwIQYJKwYBBAGCNxQCBBQeEgBXAGUAYgBTAGUAcgB2AGUAcjANBgkq
hkiG9w0BAQUFAAOBgQDETrSXXdPv8yvPZ5cR8yupyXlHzUvA5rNVFzOmBE/QCrNx
wLHDMP36+axPMWp+uraNfsc798zHES0GDgz+P97KItu8T75ysvjUUpWKeeuHcYHh
QSGi5iYB7XxEB9oCnSC9tpq8el2/mWFvVJSO69bO+zDOqgFPJ/GZYIxWgglMqA==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICsDCCAhmgAwIBAgIDC2dxMA0GCSqGSIb3DQEBBQUAME4xCzAJBgNVBAYTAlVT
MRAwDgYDVQQKEwdFcXVpZmF4MS0wKwYDVQQLEyRFcXVpZmF4IFNlY3VyZSBDZXJ0
aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDkwNjA4MjA0MzI3WhcNMTMwNjA3MTk0MzI3
WjBGMQswCQYDVQQGEwJVUzETMBEGA1UEChMKR29vZ2xlIEluYzEiMCAGA1UEAxMZ
R29vZ2xlIEludGVybmV0IEF1dGhvcml0eTCBnzANBgkqhkiG9w0BAQEFAAOBjQAw
gYkCgYEAye23pIucV+eEPkB9hPSP0XFjU5nneXQUr0SZMyCSjXvlKAy6rWxJfoNf
NFlOCnowzdDXxFdF7dWq1nMmzq0yE7jXDx07393cCDaob1FEm8rWIFJztyaHNWrb
qeXUWaUr/GcZOfqTGBhs3t0lig4zFEfC7wFQeeT9adGnwKziV28CAwEAAaOBozCB
oDAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFL/AMOv1QxE+Z7qekfv8atrjaxIk
MB8GA1UdIwQYMBaAFEjmaPkr0rKV10fYIyAQTzOYkJ/UMBIGA1UdEwEB/wQIMAYB
Af8CAQAwOgYDVR0fBDMwMTAvoC2gK4YpaHR0cDovL2NybC5nZW90cnVzdC5jb20v
Y3Jscy9zZWN1cmVjYS5jcmwwDQYJKoZIhvcNAQEFBQADgYEAuIojxkiWsRF8YHde
BZqrocb6ghwYB8TrgbCoZutJqOkM0ymt9e8kTP3kS8p/XmOrmSfLnzYhLLkQYGfN
0rTw8Ktx5YtaiScRhKqOv5nwnQkhClIZmloJ0pC3+gz4fniisIWvXEyZ2VxVKfml
UUIuOss4jHg7y/j7lYe8vJD5UDI=
-----END CERTIFICATE-----
	
  
Listing	
  6	
  Certificati	
  ottenuti	
  dal	
  comando	
  precedente.	
  

	
  

	
  
$ c_rehash ~/.certs/

Doing /Users/amusarra/.certs/
Equifax_Secure_Certificate_Authority.pem => 594f1775.0
GoogleInternetAuthority.pem => d9b7a851.0
pop.gmail.com.pem => 34ceaf75.0
	
  
Listing	
  7	
  Rehash	
  dei	
  certificati.	
  



Test	
  dei	
  certificati	
  
Prima	
  di	
  procedere	
  con	
  la	
  configurazione	
  di	
  fetchmail,	
  dobbiamo	
  verificare	
  che	
  la	
  
connessione	
   SSL	
   verso	
   GMail	
   funzioni	
   correttamente	
   con	
   i	
   certificati	
   a	
   nostra	
  
disposizione.	
   Sempre	
   con	
   OpenSSL	
   facciamo	
   una	
   connessione	
   verso	
   il	
   server	
  
pop.gmail.com	
  utilizzando	
  la	
  porta	
  TCP	
  995.	
  
	
  

	
  

12/12/10	
                                                                                                                                            5	
  

       This	
  document	
  is	
  issued	
  with	
  license	
  Creative	
  Commons	
  Attribution-­‐NonCommercial-­‐ShareAlike	
  
                                                                                                                                                         	
  
	
  
Antonio	
  Musarra's	
  Blog	
  
The	
  ideal	
  solution	
  for	
  a	
  problem	
                                                         Blog:	
  http://musarra.wordpress.com	
  
                                                                                                          Mail:	
  antonio.musarra@gmail.com	
  
	
  
	
  
$ openssl s_client -connect pop.gmail.com:995 -CApath ~/.certs/

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=pop.gmail.com
verify return:1
…
SSL-Session:
    Protocol : TLSv1
    Cipher    : RC4-MD5
    Session-ID: 660484ECDF89B1312C001861E83A4ABDF0F9559BA5EEABC334F74F6EC7E6EDF6
Start Time: 1292108636
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---
+OK Gpop ready for requests from 217.201.92.244 rd13pf5325370bkb.24
	
  
Listing	
  8	
  Connessione	
  al	
  server	
  POP3	
  di	
  GMail.	
  

Per	
   ragioni	
   di	
   spazio	
   ho	
   omesso	
   dal	
   Listing	
   8	
   parecchi	
   dati	
   di	
   output,	
   la	
   cosa	
  
importante	
   da	
   notare	
   è	
   il	
   verify	
   return	
   code	
   uguale	
   a	
   zero,	
   possiamo	
   quindi	
  
affermare	
  che	
  il	
  test	
  ha	
  avuto	
  esito	
  positivo.	
  


Configurazione	
  di	
  Fetchmail	
  
	
  Abbiamo	
   bisogno	
   di	
   configurare	
   il	
   file	
   ~/.fetchmailrc	
   in	
   modo	
   da	
   controllare	
  
automaticamente	
   ogni	
   5	
   minuti	
   se	
   abbiamo	
   posta,	
   e	
   se	
   sì	
   per	
   scaricarla.	
   Per	
   la	
  
configurazione	
   di	
   fetchmail	
   ho	
   intenzione	
   di	
   usare	
   il	
   nome	
   utente	
   amusarra	
  
(locale	
  sul	
  mio	
  sistema	
  Mac	
  OS	
  X)	
  e	
  l'indirizzo	
  GMail	
  antonio.musarra@gmail.com.	
  
	
  

	
  
# set username
set postmaster "amusarra"
# set polling time (5 minutes)
set daemon 600

poll pop.gmail.com with proto POP3
   user 'antonio.musarra@gmail.com' there with password 'secret' is amusarra here
options ssl
   sslcertck sslcertpath /Users/amusarra/.certs/
	
  
Listing	
  9	
  File	
  di	
  configurazione	
  Fetchmail	
  ~/.fetchmailrc	
  

	
  
Ora	
  possiamo	
  fare	
  una	
  prova	
  in	
  modo	
  verboso	
  per	
  vedere	
  se	
  tutto	
  funziona	
  per	
  
come	
   ci	
   aspettiamo.	
   Le	
   mail	
   saranno	
   scaricate	
   nella	
   propria	
   casella	
   di	
   posta	
   di	
  
sistema,	
   la	
   locazione	
   della	
   casella	
   dipende	
   dalla	
   configurazione	
   del	
   vostro	
  
sistema	
  (nel	
  mio	
  caso	
  in	
  /var/mail/amusarra).	
  
	
  

	
  
	
  
12/12/10	
                                                                                                                                            6	
  

       This	
  document	
  is	
  issued	
  with	
  license	
  Creative	
  Commons	
  Attribution-­‐NonCommercial-­‐ShareAlike	
  
                                                                                                                                                         	
  
	
  
Antonio	
  Musarra's	
  Blog	
  
The	
  ideal	
  solution	
  for	
  a	
  problem	
                                                         Blog:	
  http://musarra.wordpress.com	
  
                                                                                                          Mail:	
  antonio.musarra@gmail.com	
  
	
  
	
  
$ fetchmail -d0 -vk pop.gmail.com
fetchmail: 6.3.11 querying pop.gmail.com (protocol POP3) at Sun, 12 Dec 2010 00:30:53
+0100 (CET): poll started
Trying to connect to 74.125.43.109/995...connected.
fetchmail: Issuer Organization: Google Inc
fetchmail: Issuer CommonName: Google Internet Authority
fetchmail: Server CommonName: pop.gmail.com
fetchmail: pop.gmail.com key fingerprint:
6B:C4:63:05:87:1E:72:88:ED:81:C5:A2:51:6B:B7:B6
fetchmail: POP3< +OK Gpop ready for requests from 217.201.92.244 x19pf5342523bkc.15
fetchmail: POP3> CAPA
fetchmail: POP3< +OK Capability list follows
fetchmail: POP3< USER
fetchmail: POP3> USER antonio.musarra@gmail.com
fetchmail: POP3< +OK send PASS
fetchmail: POP3> PASS *
fetchmail: POP3< +OK Welcome.
fetchmail: POP3> STAT
fetchmail: POP3< +OK 0 0
fetchmail: No mail for antonio.musarra@gmail.com at pop.gmail.com
fetchmail: POP3> QUIT
fetchmail: POP3< +OK Farewell.
fetchmail: 6.3.11 querying pop.gmail.com (protocol POP3) at Sun, 12 Dec 2010 00:30:58
+0100 (CET): poll completed
fetchmail: normal termination, status 0
	
  
Listing	
  10	
  Output	
  del	
  comando	
  fetchmail.	
  

	
  
L’output	
  del	
  comando	
  fetchmail	
  dimostra	
  la	
  corretta	
  configurazione	
  di	
  fetchmail,	
  
in	
   particolare	
   ho	
   evidenziato	
   la	
   Certificate	
  chain.	
   Per	
   questione	
   di	
   completezza,	
  
nel	
   prossimo	
   listing	
   è	
   mostrato	
   un	
   esempio	
   di	
   download	
   e	
   lettura	
   di	
   una	
   mail	
  
dalla	
  mia	
  casella	
  di	
  posta.	
  

	
  

	
  
$ fetchmail -d0 -vk pop.gmail.com

fetchmail: POP3< .
1 message for antonio.musarra@gmail.com at pop.gmail.com (22731 octets).
fetchmail: POP3> LIST 1
fetchmail: POP3< +OK 1 22731
fetchmail: POP3> RETR 1
fetchmail: POP3< +OK message follows
reading message antonio.musarra@gmail.com@gmail-pop.l.google.com:1 of 1 (22731 octets)
Trying to connect to 127.0.0.1/25...connected.
fetchmail: SMTP< 220 amusarra-mobile.local ESMTP Postfix
fetchmail: SMTP> EHLO amusarra-mobile.local
fetchmail: SMTP< 250-amusarra-mobile.local
fetchmail: SMTP> MAIL FROM:<prvs=954dcdfd4=Antonio.Musarra@altran.it> SIZE=22731
fetchmail: SMTP< 250 2.1.0 Ok
fetchmail: SMTP> RCPT TO:<amusarra@localhost>
fetchmail: SMTP< 250 2.1.5 Ok
fetchmail: SMTP> DATA
fetchmail: SMTP< 354 End data with <CR><LF>.<CR><LF>
fetchmail: SMTP>. (EOM)
fetchmail: SMTP< 250 2.0.0 Ok: queued as 886B86E1017
fetchmail: POP3> QUIT
fetchmail: POP3< +OK Farewell.
fetchmail: SMTP> QUIT
fetchmail: SMTP< 221 2.0.0 Bye
fetchmail: 6.3.11 querying pop.gmail.com (protocol POP3) at Sun, 12 Dec 2010 00:45:22
+0100 (CET): poll completed
fetchmail: normal termination, status 0


12/12/10	
                                                                                                                                            7	
  

       This	
  document	
  is	
  issued	
  with	
  license	
  Creative	
  Commons	
  Attribution-­‐NonCommercial-­‐ShareAlike	
  
                                                                                                                                                         	
  
	
  
Antonio	
  Musarra's	
  Blog	
  
The	
  ideal	
  solution	
  for	
  a	
  problem	
                                                         Blog:	
  http://musarra.wordpress.com	
  
                                                                                                          Mail:	
  antonio.musarra@gmail.com	
  
	
  
$ mail

Mail version 8.1 6/6/93. Type ? for help.
"/var/mail/amusarra": 1 message 1 new
>N 1 antonio.musarra@altr Sun Dec 12 00:45 377/23230 "Test"
Message 1:
From prvs=954dcdfd4=Antonio.Musarra@altran.it Sun Dec 12 00:45:21 2010
X-Original-To: amusarra@localhost
Delivered-To: amusarra@localhost.local
Delivered-To: antonio.musarra@gmail.com
From: Antonio Musarra <antonio.musarra@altran.it>
Content-Type: multipart/alternative; boundary=Apple-Mail-11-271232042
Subject: Test
Date: Sun, 12 Dec 2010 00:44:04 +0100
To: Antonio Musarra <antonio.musarra@gmail.com>
Mime-Version: 1.0 (Apple Message framework v1082)
X-Mailer: Apple Mail (2.1082)
X-OriginalArrivalTime: 11 Dec 2010 23:44:15.0549 (UTC) FILETIME=[5201F6D0:01CB998D]
	
  
	
  	
  Listing	
  11	
  Download	
  e	
  lettura	
  di	
  una	
  mail.	
  



Works	
  Cited	
  
Wikipedia.	
  (2010,	
  December	
  2010).	
  X.509.	
  (Wikipedia,	
  Produttore)	
  Tratto	
  da	
  
X.509:	
  http://en.wikipedia.org/wiki/X.509	
  

Wikipedia.	
  (2009,	
  October	
  8).	
  Certificate	
  Authority.	
  (Wikipedia,	
  Produttore)	
  
Tratto	
  da	
  Certificate	
  Authority:	
  
http://en.wikipedia.org/wiki/Certificate_Authority	
  
Wikipedia.	
  (2010,	
  December	
  6).	
  Transport	
  Layer	
  Security.	
  (Wikipedia,	
  
Produttore)	
  Tratto	
  da	
  Transport	
  Layer	
  Security:	
  
http://en.wikipedia.org/wiki/Transport_Layer_Security	
  

BerliOS.	
  (2010,	
  Oct	
  16).	
  Fetchmail.	
  (M.	
  Andree,	
  Produttore,	
  &	
  BerliOS)	
  Tratto	
  da	
  
Fetchmail:	
  http://fetchmail.berlios.de/	
  

Google.	
  (2010).	
  Che	
  Cos'è	
  Google	
  Apps	
  Sync	
  ?	
  (Google,	
  Produttore,	
  &	
  Google)	
  
Tratto	
  da	
  Google:	
  
http://mail.google.com/support/bin/answer.py?hl=it&answer=153866	
  
Google.	
  (2010).	
  Informazioni	
  su	
  GMail	
  Notifier.	
  (Google,	
  Produttore,	
  &	
  Google)	
  
Tratto	
  da	
  http://mail.google.com/support/bin/answer.py?hl=it&answer=9429	
  
Internet	
  Engineering	
  Task	
  Force	
  -­‐	
  IETF.	
  (1996,	
  May).	
  RFC	
  1939	
  Post	
  Office	
  
Protocol	
  -­‐	
  Version	
  3.	
  (J.	
  Myers,	
  C.	
  Mellon,	
  &	
  M.	
  Rose,	
  Produttori)	
  Tratto	
  da	
  IETF	
  
Tools:	
  http://tools.ietf.org/html/rfc1939	
  

Internet	
  Engineering	
  Task	
  Force	
  -­‐	
  IETF.	
  (2003,	
  March).	
  RFC	
  3501	
  Internet	
  
Message	
  Access	
  Protocol	
  -­‐	
  Version	
  4rev1.	
  (M.	
  Crispin,	
  Produttore)	
  Tratto	
  da	
  IETF	
  
Tools:	
  http://tools.ietf.org/html/rfc3501	
  
OpenSSL	
  Project.	
  (1998,	
  December	
  23).	
  OpenSSL	
  Cryptography	
  and	
  SSL/TLS	
  
Toolkit.	
  (M.	
  J.	
  Cox,	
  R.	
  S.	
  Engelschall,	
  S.	
  Henson,	
  B.	
  Laurie,	
  Produttori,	
  &	
  OpenSSL)	
  
Tratto	
  da	
  OpenSSL	
  Cryptography	
  and	
  SSL/TLS	
  Toolkit:	
  http://www.openssl.org	
  

	
  
12/12/10	
                                                                                                                                            8	
  

       This	
  document	
  is	
  issued	
  with	
  license	
  Creative	
  Commons	
  Attribution-­‐NonCommercial-­‐ShareAlike	
  
                                                                                                                                                         	
  
	
  

More Related Content

Viewers also liked

Viewers also liked (6)

Adsincabindonesiadotcom
AdsincabindonesiadotcomAdsincabindonesiadotcom
Adsincabindonesiadotcom
 
пояснительная записка
пояснительная запискапояснительная записка
пояснительная записка
 
Mobile safety systems for automobiles
Mobile safety systems for automobilesMobile safety systems for automobiles
Mobile safety systems for automobiles
 
Plan de trabajo
Plan de trabajoPlan de trabajo
Plan de trabajo
 
Diapositiva 3
Diapositiva 3Diapositiva 3
Diapositiva 3
 
Cisco ios ip routing advanced rip features
Cisco ios ip routing advanced rip featuresCisco ios ip routing advanced rip features
Cisco ios ip routing advanced rip features
 

More from Antonio Musarra

Liferay Portal CE 7.4: Come configurare Oracle Database 19c
Liferay Portal CE 7.4: Come configurare Oracle Database 19cLiferay Portal CE 7.4: Come configurare Oracle Database 19c
Liferay Portal CE 7.4: Come configurare Oracle Database 19cAntonio Musarra
 
Come installare TIBCO Jasper Reports Server 7.5 Community Edition su RedHat J...
Come installare TIBCO Jasper Reports Server 7.5 Community Edition su RedHat J...Come installare TIBCO Jasper Reports Server 7.5 Community Edition su RedHat J...
Come installare TIBCO Jasper Reports Server 7.5 Community Edition su RedHat J...Antonio Musarra
 
Come installare Liferay 7.2 GA2 su WildFly 16 + Oracle Database 19c
Come installare Liferay 7.2 GA2 su WildFly 16 + Oracle Database 19cCome installare Liferay 7.2 GA2 su WildFly 16 + Oracle Database 19c
Come installare Liferay 7.2 GA2 su WildFly 16 + Oracle Database 19cAntonio Musarra
 
Liferay SSL/TLS Security. Come configurare il bundle Liferay per abilitare il...
Liferay SSL/TLS Security. Come configurare il bundle Liferay per abilitare il...Liferay SSL/TLS Security. Come configurare il bundle Liferay per abilitare il...
Liferay SSL/TLS Security. Come configurare il bundle Liferay per abilitare il...Antonio Musarra
 
Liferay & Salesforce.com
Liferay & Salesforce.comLiferay & Salesforce.com
Liferay & Salesforce.comAntonio Musarra
 
Come installare Liferay 7 su JBOSS EAP con il supporto​ Oracle Database
Come installare Liferay 7 su JBOSS EAP con il supporto​ Oracle DatabaseCome installare Liferay 7 su JBOSS EAP con il supporto​ Oracle Database
Come installare Liferay 7 su JBOSS EAP con il supporto​ Oracle DatabaseAntonio Musarra
 
Corso introduttivo di Design Pattern in Java per Elis - 1
Corso introduttivo di Design Pattern in Java per Elis - 1Corso introduttivo di Design Pattern in Java per Elis - 1
Corso introduttivo di Design Pattern in Java per Elis - 1Antonio Musarra
 
Liferay 7: Come realizzare un client SOAP con Apache CXF in OSGi Style
Liferay 7: Come realizzare un client SOAP con Apache CXF in OSGi StyleLiferay 7: Come realizzare un client SOAP con Apache CXF in OSGi Style
Liferay 7: Come realizzare un client SOAP con Apache CXF in OSGi StyleAntonio Musarra
 
Liferay - Quick Start 1° Episodio
Liferay - Quick Start 1° EpisodioLiferay - Quick Start 1° Episodio
Liferay - Quick Start 1° EpisodioAntonio Musarra
 
SugarCRM Enterprise Development Virtual Appliance
SugarCRM Enterprise Development Virtual ApplianceSugarCRM Enterprise Development Virtual Appliance
SugarCRM Enterprise Development Virtual ApplianceAntonio Musarra
 
Liferay: Esporre Web Services Custom
Liferay: Esporre Web Services CustomLiferay: Esporre Web Services Custom
Liferay: Esporre Web Services CustomAntonio Musarra
 
SugarCRM: Come realizzare un Custom Scheduler. Un esempio completo.
SugarCRM: Come realizzare un Custom Scheduler. Un esempio completo.SugarCRM: Come realizzare un Custom Scheduler. Un esempio completo.
SugarCRM: Come realizzare un Custom Scheduler. Un esempio completo.Antonio Musarra
 
SugarCRM REST API: Un’applicazione in appena dieci minuti
SugarCRM REST API: Un’applicazione in appena dieci minutiSugarCRM REST API: Un’applicazione in appena dieci minuti
SugarCRM REST API: Un’applicazione in appena dieci minutiAntonio Musarra
 
How to Build a Java client for SugarCRM
How to Build a Java client for SugarCRMHow to Build a Java client for SugarCRM
How to Build a Java client for SugarCRMAntonio Musarra
 
Liferay Web Services - Come importare utenti da un foglio Excel
Liferay Web Services - Come importare utenti da un foglio ExcelLiferay Web Services - Come importare utenti da un foglio Excel
Liferay Web Services - Come importare utenti da un foglio ExcelAntonio Musarra
 
Introduzione agli Hooks – Primo Episodio
Introduzione agli Hooks – Primo EpisodioIntroduzione agli Hooks – Primo Episodio
Introduzione agli Hooks – Primo EpisodioAntonio Musarra
 
Introduzione a Liferay Message BUS
Introduzione a Liferay Message BUSIntroduzione a Liferay Message BUS
Introduzione a Liferay Message BUSAntonio Musarra
 
Un CRM dentro un CMS v1.0
Un CRM dentro un CMS v1.0Un CRM dentro un CMS v1.0
Un CRM dentro un CMS v1.0Antonio Musarra
 

More from Antonio Musarra (20)

Liferay Portal CE 7.4: Come configurare Oracle Database 19c
Liferay Portal CE 7.4: Come configurare Oracle Database 19cLiferay Portal CE 7.4: Come configurare Oracle Database 19c
Liferay Portal CE 7.4: Come configurare Oracle Database 19c
 
Come installare TIBCO Jasper Reports Server 7.5 Community Edition su RedHat J...
Come installare TIBCO Jasper Reports Server 7.5 Community Edition su RedHat J...Come installare TIBCO Jasper Reports Server 7.5 Community Edition su RedHat J...
Come installare TIBCO Jasper Reports Server 7.5 Community Edition su RedHat J...
 
Come installare Liferay 7.2 GA2 su WildFly 16 + Oracle Database 19c
Come installare Liferay 7.2 GA2 su WildFly 16 + Oracle Database 19cCome installare Liferay 7.2 GA2 su WildFly 16 + Oracle Database 19c
Come installare Liferay 7.2 GA2 su WildFly 16 + Oracle Database 19c
 
Liferay SSL/TLS Security. Come configurare il bundle Liferay per abilitare il...
Liferay SSL/TLS Security. Come configurare il bundle Liferay per abilitare il...Liferay SSL/TLS Security. Come configurare il bundle Liferay per abilitare il...
Liferay SSL/TLS Security. Come configurare il bundle Liferay per abilitare il...
 
Liferay & Salesforce.com
Liferay & Salesforce.comLiferay & Salesforce.com
Liferay & Salesforce.com
 
Come installare Liferay 7 su JBOSS EAP con il supporto​ Oracle Database
Come installare Liferay 7 su JBOSS EAP con il supporto​ Oracle DatabaseCome installare Liferay 7 su JBOSS EAP con il supporto​ Oracle Database
Come installare Liferay 7 su JBOSS EAP con il supporto​ Oracle Database
 
Corso introduttivo di Design Pattern in Java per Elis - 1
Corso introduttivo di Design Pattern in Java per Elis - 1Corso introduttivo di Design Pattern in Java per Elis - 1
Corso introduttivo di Design Pattern in Java per Elis - 1
 
JAX-WS e JAX-RS
JAX-WS e JAX-RSJAX-WS e JAX-RS
JAX-WS e JAX-RS
 
Liferay 7: Come realizzare un client SOAP con Apache CXF in OSGi Style
Liferay 7: Come realizzare un client SOAP con Apache CXF in OSGi StyleLiferay 7: Come realizzare un client SOAP con Apache CXF in OSGi Style
Liferay 7: Come realizzare un client SOAP con Apache CXF in OSGi Style
 
OSGi e Liferay 7
OSGi e Liferay 7OSGi e Liferay 7
OSGi e Liferay 7
 
Liferay - Quick Start 1° Episodio
Liferay - Quick Start 1° EpisodioLiferay - Quick Start 1° Episodio
Liferay - Quick Start 1° Episodio
 
SugarCRM Enterprise Development Virtual Appliance
SugarCRM Enterprise Development Virtual ApplianceSugarCRM Enterprise Development Virtual Appliance
SugarCRM Enterprise Development Virtual Appliance
 
Liferay: Esporre Web Services Custom
Liferay: Esporre Web Services CustomLiferay: Esporre Web Services Custom
Liferay: Esporre Web Services Custom
 
SugarCRM: Come realizzare un Custom Scheduler. Un esempio completo.
SugarCRM: Come realizzare un Custom Scheduler. Un esempio completo.SugarCRM: Come realizzare un Custom Scheduler. Un esempio completo.
SugarCRM: Come realizzare un Custom Scheduler. Un esempio completo.
 
SugarCRM REST API: Un’applicazione in appena dieci minuti
SugarCRM REST API: Un’applicazione in appena dieci minutiSugarCRM REST API: Un’applicazione in appena dieci minuti
SugarCRM REST API: Un’applicazione in appena dieci minuti
 
How to Build a Java client for SugarCRM
How to Build a Java client for SugarCRMHow to Build a Java client for SugarCRM
How to Build a Java client for SugarCRM
 
Liferay Web Services - Come importare utenti da un foglio Excel
Liferay Web Services - Come importare utenti da un foglio ExcelLiferay Web Services - Come importare utenti da un foglio Excel
Liferay Web Services - Come importare utenti da un foglio Excel
 
Introduzione agli Hooks – Primo Episodio
Introduzione agli Hooks – Primo EpisodioIntroduzione agli Hooks – Primo Episodio
Introduzione agli Hooks – Primo Episodio
 
Introduzione a Liferay Message BUS
Introduzione a Liferay Message BUSIntroduzione a Liferay Message BUS
Introduzione a Liferay Message BUS
 
Un CRM dentro un CMS v1.0
Un CRM dentro un CMS v1.0Un CRM dentro un CMS v1.0
Un CRM dentro un CMS v1.0
 

Google Mail POP3 SSL con Fetchmail

  • 1. Antonio  Musarra's  Blog   The  ideal  solution  for  a  problem   Blog:  http://musarra.wordpress.com   Mail:  antonio.musarra@gmail.com     Google  Mail  POP3  SSL  con  Fetchmail     Nel   corso   di   quest’articolo   vedremo   come   sia   possibile   in   maniera   semplice   e   veloce  riuscire  a  compiere  il  download  delle  email  da  un  account  GMail.  Il  client   di   posta   che   utilizzeremo   per   il   download   delle   nostre   email   sarà   Fetchmail (BerliOS, 2010).   Il  servizio  di  posta  elettronica  di  Google  offre  diversi  modi  di  accesso  alla  propria   casella,  oltre  alla  consueta  Web  Mail.  Il  servizio  GMail,  ha  ben  cinque  altri  metodi   di  accesso:   • POP3  (Internet Engineering Task Force - IETF, 1996)   • IMAP4  (Internet Engineering Task Force - IETF, 2003)   • Notifier (Google, 2010)   • Google  Apps  Sync  for  Microsoft  Outlook®  (Google, 2010)   Il   metodo   di   accesso   preso   in   considerazione   per   lo   scopo   di   quest’articolo   è   il   primo,   frutteremo   quindi   il   protocollo   POP3.   GMail   supporta   unicamente   una   connessione  protetta  SSL (Wikipedia, 2010).   Requisiti   • Sistema  Operativo  della  famiglia  Unix/Linux/BSD   • Il  proprio  account  GMail  deve  essere  configurato  per  consentire  l’accesso   alla  casella  attraverso  il  protocollo  POP3.  E’  possibile  verificare  le   impostazioni  del  POP3  attraverso  il  panello:  Impostazioni  -­‐>  Inoltro  e   POP/IMAP  (vedi  Figure  1).   • OpenSSL  Toolkit  (OpenSSL Project, 1998)   • Fetchmail  con  il  supporto  SSL.  Per  essere  sicuri  del  supporto  SSL  da  parte   di  fetchmail  è  possibile  eseguire  il  comando  illustrato  al  Listing  1.           Figure  1  Impostazioni  protocollo  POP3  per  l’account  GMail       12/12/10   1   This  document  is  issued  with  license  Creative  Commons  Attribution-­‐NonCommercial-­‐ShareAlike      
  • 2. Antonio  Musarra's  Blog   The  ideal  solution  for  a  problem   Blog:  http://musarra.wordpress.com   Mail:  antonio.musarra@gmail.com       $ ldd /usr/bin/fetchmail linux-gate.so.1 => (0x00202000) libcom_err.so.2 => /lib/libcom_err.so.2 (0x00ded000) libkrb4.so.2 => /usr/lib/libkrb4.so.2 (0x00b99000) libdes425.so.3 => /usr/lib/libdes425.so.3 (0x00bb8000) libssl.so.6 => /lib/libssl.so.6 (0x00714000) libcrypto.so.6 => /lib/libcrypto.so.6 (0x0028c000) libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0x00698000) libselinux.so.1 => /lib/libselinux.so.1 (0x00c02000) /lib/ld-linux.so.2 (0x00a33000) libsepol.so.1 => /lib/libsepol.so.1 (0x00c1c000) … $ otool -L /usr/bin/fetchmail /usr/bin/fetchmail: /usr/lib/libresolv.9.dylib (current version 38.0.0) /System/Library/Frameworks/Kerberos.framework/Versions/A/Kerberos /usr/lib/libssl.0.9.8.dylib (current version 0.9.8) /usr/lib/libcrypto.0.9.8.dylib (current version 0.9.8) /usr/lib/libSystem.B.dylib (current version 125.0.0)     Listing  1  Verifica  del  supporto  SSL  di  fetchmail     Nel   listing   precedente   ho   evidenziato   gli   item   che   dovreste   vedere   qualora   il   supporto   SSL   per   fetchmail   sia   disponibile.   Per   la   stesura   dell’articolo   ho   utilizzato   il   mio   fidato   Mac   Book   Pro,   ecco   il   motivo   per   cui   compare   anche   il   comando  otool,  l’equivalente  del  comando  ldd  di  Unix/Linux.   Recupero  dei  certificati   Il   prossimo   passo   richiede   il   recupero   dei   certificati   utilizzati   da   GMail,   per   questo   compito   utilizzeremo   OpenSSL   Toolkit.   Generalmente   i   sistemi   Unix   dedicano   una   determina   locazione   del   file   system   come   repository   dei   certificati,   solitamente  /usr/share/ssl/certs/.     Per   lo   scopo   dell’articolo   ho   deciso   d’usare   come   repository   dei   certificati   la   directory  certs  collocata  all’interno  della  propria  home  directory,  quindi:  ~/.certs.   Provando  a  eseguire  una  connessione  a  GMail  prima  del  recupero  dei  certificati,   si   otterrà   un   errore   di   verifica   del   certificato   (vedi   Listing   2).   Nel   listato   è   evidenziato   l’errore   sul   lookup   del   certificato,   oltre   ad   essere   evidenziata   la   cosiddetta  Certificate  chain,  in  altre  parole,  la  catena  di  certificazione.     Sempre   utilizzando   OpenSSL,   procediamo   con   il   recupero   dei   certificati   SSL   in   formato   PEM   (Privacy   Enhanced   Mail   Certificate) (Wikipedia, 2010).   I   certificati   da   recuperare   sono   quelli   che   fanno   parte   della   Certificate  chain.   Il   primo   della   lista  è  il  certificato  della  Root  Certificate  Authority (Wikipedia, 2009).   • /C=US/O=Equifax/OU=Equifax  Secure  Certificate  Authority     • /C=US/O=Google  Inc/CN=Google  Internet  Authority   • /C=US/ST=California/L=Mountain  View/O=Google  Inc/CN=pop.gmail.com     12/12/10   2   This  document  is  issued  with  license  Creative  Commons  Attribution-­‐NonCommercial-­‐ShareAlike      
  • 3. Antonio  Musarra's  Blog   The  ideal  solution  for  a  problem   Blog:  http://musarra.wordpress.com   Mail:  antonio.musarra@gmail.com       $ openssl s_client -connect pop.gmail.com:995 depth=1 /C=US/O=Google Inc/CN=Google Internet Authority verify error:num=20:unable to get local issuer certificate verify return:0 --- Certificate chain 0 s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=pop.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 ---    Listing  2  Connessione  a  GMail  via  POP3  utilizzando  OpenSSL     Procedendo   con   ordine,   iniziamo   con   il   download   del   Root   Certificate   direttamente   dal   sito   di   GeoTrust   collocandolo   in   ~/.certs/.   Ricordo   che   il   formato  del  certificato  è  PEM  (Base-­‐64  encoded  DER  X.509).       $ curl -o ~/.certs/Equifax_Secure_Certificate_Authority.pem http://www.geotrust.com/resources/root_certificates/certificates/Equifax_Secure_Certif icate_Authority.cer   Listing  3  Download  di  Equifax  Secure  Certificate  Authority  via  curl.     Dopo   aver   ottenuto   il   certificato   potremmo   toglierci   lo   sfizio   d’effettuare   delle   verifiche   e   accertare   che   le   informazioni   estratte   siano   conformi   con   quanto   dichiarato   sul   sito   di   GeoTrust   (http://www.geotrust.com/resources/root-­‐ certificates/).   Per  l’operazione  di  verifica  sul  certificato  è  sempre  possibile  utilizzare  i  comandi   OpenSSL  (vedi  Listing  4  e  Figure  2).         $ openssl x509 -in .certs/Equifax_Secure_Certificate_Authority.pem -fingerprint - subject -issuer -serial -hash –noout SHA1 Fingerprint=D2:32:09:AD:23:D3:14:23:21:74:E4:0D:7F:9D:62:13:97:86:63:3A subject= /C=US/O=Equifax/OU=Equifax Secure Certificate Authority issuer= /C=US/O=Equifax/OU=Equifax Secure Certificate Authority serial=35DEF4CF 594f1775   Listing  4  Verifica  di  alcune  informazioni  sul  Root  Certificate  Authority.         12/12/10   3   This  document  is  issued  with  license  Creative  Commons  Attribution-­‐NonCommercial-­‐ShareAlike      
  • 4. Antonio  Musarra's  Blog   The  ideal  solution  for  a  problem   Blog:  http://musarra.wordpress.com   Mail:  antonio.musarra@gmail.com           Figure  2  GeoTrust  Root  Certificates  Page.     A   questo   punto   non   resta   che   ottenere   i   rimanenti   due   certificati   (sempre   in   formato  PEM),  entrambi  di  proprietà  di  Google.  Procediamo  con  il  salvataggio  dei   certificati  in  ~/.certs,  sempre  utilizzando  i  comandi  OpenSSL  con  l’aiuto  di  sed.       $ echo | openssl s_client -connect pop.gmail.com:995 -showcerts 2>&1 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'   Listing  5  Comando  per  il  retrieve  dei  certificati  Google.     I  certificati  (visibili  nel  Listing  6)  sono  stati  estratti  secondo  l’ordine  dettato  dalla   Certificate  chain:   •  /C=US/ST=California/L=Mountain  View/O=Google  Inc/CN=pop.gmail.com   • /C=US/O=Google  Inc/CN=Google  Internet  Authority     Salviamo  i  due  certificati  in  ~/.certs/  chiamandoli  rispettivamente:   • pop.gmail.com.pem   • GoogleInternetAuthority.pem   Ricordo   che   i   certificati   devono   essere   salvati   comprendendo   le   intestazioni   d’inizio  e  fine  certificato.   Adesso   che   abbiamo   tutti   i   certificati   memorizzati   nella   directory   ~/.certs,   abbiamo  solo  bisogno  di  un  “rimaneggiamento”  in  modo  che  OpenSSL  e  fetchmail   siano  in  grado  di  leggerli  e  utilizzarli.       12/12/10   4   This  document  is  issued  with  license  Creative  Commons  Attribution-­‐NonCommercial-­‐ShareAlike      
  • 5. Antonio  Musarra's  Blog   The  ideal  solution  for  a  problem   Blog:  http://musarra.wordpress.com   Mail:  antonio.musarra@gmail.com       -----BEGIN CERTIFICATE----- MIIDWjCCAsOgAwIBAgIKFNMahgADAAASkDANBgkqhkiG9w0BAQUFADBGMQswCQYD VQQGEwJVUzETMBEGA1UEChMKR29vZ2xlIEluYzEiMCAGA1UEAxMZR29vZ2xlIElu dGVybmV0IEF1dGhvcml0eTAeFw0xMDA0MjIyMDExMjNaFw0xMTA0MjIyMDIxMjNa MGcxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1N b3VudGFpbiBWaWV3MRMwEQYDVQQKEwpHb29nbGUgSW5jMRYwFAYDVQQDEw1wb3Au Z21haWwuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC701lFBdiiC0BB JEo2U1wmmS6Gv+qr4bjG6xeCSgb0UGI2vN1ifYyrf/wj1jBLupou+Ds+s0zLzE5Y vsADQvu+pkDXoOcnK2YxiOiuZaGOSRKC2b0rbg4oYyS1TogEBcX+KpUxWQNpccW6 FPzpSVtmiG4azMUIR0mM2HERnwke/wIDAQABo4IBLDCCASgwHQYDVR0OBBYEFJr4 /CBophXvQNM/AFWw8zu5EXKiMB8GA1UdIwQYMBaAFL/AMOv1QxE+Z7qekfv8atrj axIkMFsGA1UdHwRUMFIwUKBOoEyGSmh0dHA6Ly93d3cuZ3N0YXRpYy5jb20vR29v Z2xlSW50ZXJuZXRBdXRob3JpdHkvR29vZ2xlSW50ZXJuZXRBdXRob3JpdHkuY3Js MGYGCCsGAQUFBwEBBFowWDBWBggrBgEFBQcwAoZKaHR0cDovL3d3dy5nc3RhdGlj LmNvbS9Hb29nbGVJbnRlcm5ldEF1dGhvcml0eS9Hb29nbGVJbnRlcm5ldEF1dGhv cml0eS5jcnQwIQYJKwYBBAGCNxQCBBQeEgBXAGUAYgBTAGUAcgB2AGUAcjANBgkq hkiG9w0BAQUFAAOBgQDETrSXXdPv8yvPZ5cR8yupyXlHzUvA5rNVFzOmBE/QCrNx wLHDMP36+axPMWp+uraNfsc798zHES0GDgz+P97KItu8T75ysvjUUpWKeeuHcYHh QSGi5iYB7XxEB9oCnSC9tpq8el2/mWFvVJSO69bO+zDOqgFPJ/GZYIxWgglMqA== -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIICsDCCAhmgAwIBAgIDC2dxMA0GCSqGSIb3DQEBBQUAME4xCzAJBgNVBAYTAlVT MRAwDgYDVQQKEwdFcXVpZmF4MS0wKwYDVQQLEyRFcXVpZmF4IFNlY3VyZSBDZXJ0 aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDkwNjA4MjA0MzI3WhcNMTMwNjA3MTk0MzI3 WjBGMQswCQYDVQQGEwJVUzETMBEGA1UEChMKR29vZ2xlIEluYzEiMCAGA1UEAxMZ R29vZ2xlIEludGVybmV0IEF1dGhvcml0eTCBnzANBgkqhkiG9w0BAQEFAAOBjQAw gYkCgYEAye23pIucV+eEPkB9hPSP0XFjU5nneXQUr0SZMyCSjXvlKAy6rWxJfoNf NFlOCnowzdDXxFdF7dWq1nMmzq0yE7jXDx07393cCDaob1FEm8rWIFJztyaHNWrb qeXUWaUr/GcZOfqTGBhs3t0lig4zFEfC7wFQeeT9adGnwKziV28CAwEAAaOBozCB oDAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFL/AMOv1QxE+Z7qekfv8atrjaxIk MB8GA1UdIwQYMBaAFEjmaPkr0rKV10fYIyAQTzOYkJ/UMBIGA1UdEwEB/wQIMAYB Af8CAQAwOgYDVR0fBDMwMTAvoC2gK4YpaHR0cDovL2NybC5nZW90cnVzdC5jb20v Y3Jscy9zZWN1cmVjYS5jcmwwDQYJKoZIhvcNAQEFBQADgYEAuIojxkiWsRF8YHde BZqrocb6ghwYB8TrgbCoZutJqOkM0ymt9e8kTP3kS8p/XmOrmSfLnzYhLLkQYGfN 0rTw8Ktx5YtaiScRhKqOv5nwnQkhClIZmloJ0pC3+gz4fniisIWvXEyZ2VxVKfml UUIuOss4jHg7y/j7lYe8vJD5UDI= -----END CERTIFICATE-----   Listing  6  Certificati  ottenuti  dal  comando  precedente.       $ c_rehash ~/.certs/ Doing /Users/amusarra/.certs/ Equifax_Secure_Certificate_Authority.pem => 594f1775.0 GoogleInternetAuthority.pem => d9b7a851.0 pop.gmail.com.pem => 34ceaf75.0   Listing  7  Rehash  dei  certificati.   Test  dei  certificati   Prima  di  procedere  con  la  configurazione  di  fetchmail,  dobbiamo  verificare  che  la   connessione   SSL   verso   GMail   funzioni   correttamente   con   i   certificati   a   nostra   disposizione.   Sempre   con   OpenSSL   facciamo   una   connessione   verso   il   server   pop.gmail.com  utilizzando  la  porta  TCP  995.       12/12/10   5   This  document  is  issued  with  license  Creative  Commons  Attribution-­‐NonCommercial-­‐ShareAlike      
  • 6. Antonio  Musarra's  Blog   The  ideal  solution  for  a  problem   Blog:  http://musarra.wordpress.com   Mail:  antonio.musarra@gmail.com       $ openssl s_client -connect pop.gmail.com:995 -CApath ~/.certs/ 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=pop.gmail.com verify return:1 … SSL-Session: Protocol : TLSv1 Cipher : RC4-MD5 Session-ID: 660484ECDF89B1312C001861E83A4ABDF0F9559BA5EEABC334F74F6EC7E6EDF6 Start Time: 1292108636 Timeout : 300 (sec) Verify return code: 0 (ok) --- +OK Gpop ready for requests from 217.201.92.244 rd13pf5325370bkb.24   Listing  8  Connessione  al  server  POP3  di  GMail.   Per   ragioni   di   spazio   ho   omesso   dal   Listing   8   parecchi   dati   di   output,   la   cosa   importante   da   notare   è   il   verify   return   code   uguale   a   zero,   possiamo   quindi   affermare  che  il  test  ha  avuto  esito  positivo.   Configurazione  di  Fetchmail    Abbiamo   bisogno   di   configurare   il   file   ~/.fetchmailrc   in   modo   da   controllare   automaticamente   ogni   5   minuti   se   abbiamo   posta,   e   se   sì   per   scaricarla.   Per   la   configurazione   di   fetchmail   ho   intenzione   di   usare   il   nome   utente   amusarra   (locale  sul  mio  sistema  Mac  OS  X)  e  l'indirizzo  GMail  antonio.musarra@gmail.com.       # set username set postmaster "amusarra" # set polling time (5 minutes) set daemon 600 poll pop.gmail.com with proto POP3 user 'antonio.musarra@gmail.com' there with password 'secret' is amusarra here options ssl sslcertck sslcertpath /Users/amusarra/.certs/   Listing  9  File  di  configurazione  Fetchmail  ~/.fetchmailrc     Ora  possiamo  fare  una  prova  in  modo  verboso  per  vedere  se  tutto  funziona  per   come   ci   aspettiamo.   Le   mail   saranno   scaricate   nella   propria   casella   di   posta   di   sistema,   la   locazione   della   casella   dipende   dalla   configurazione   del   vostro   sistema  (nel  mio  caso  in  /var/mail/amusarra).         12/12/10   6   This  document  is  issued  with  license  Creative  Commons  Attribution-­‐NonCommercial-­‐ShareAlike      
  • 7. Antonio  Musarra's  Blog   The  ideal  solution  for  a  problem   Blog:  http://musarra.wordpress.com   Mail:  antonio.musarra@gmail.com       $ fetchmail -d0 -vk pop.gmail.com fetchmail: 6.3.11 querying pop.gmail.com (protocol POP3) at Sun, 12 Dec 2010 00:30:53 +0100 (CET): poll started Trying to connect to 74.125.43.109/995...connected. fetchmail: Issuer Organization: Google Inc fetchmail: Issuer CommonName: Google Internet Authority fetchmail: Server CommonName: pop.gmail.com fetchmail: pop.gmail.com key fingerprint: 6B:C4:63:05:87:1E:72:88:ED:81:C5:A2:51:6B:B7:B6 fetchmail: POP3< +OK Gpop ready for requests from 217.201.92.244 x19pf5342523bkc.15 fetchmail: POP3> CAPA fetchmail: POP3< +OK Capability list follows fetchmail: POP3< USER fetchmail: POP3> USER antonio.musarra@gmail.com fetchmail: POP3< +OK send PASS fetchmail: POP3> PASS * fetchmail: POP3< +OK Welcome. fetchmail: POP3> STAT fetchmail: POP3< +OK 0 0 fetchmail: No mail for antonio.musarra@gmail.com at pop.gmail.com fetchmail: POP3> QUIT fetchmail: POP3< +OK Farewell. fetchmail: 6.3.11 querying pop.gmail.com (protocol POP3) at Sun, 12 Dec 2010 00:30:58 +0100 (CET): poll completed fetchmail: normal termination, status 0   Listing  10  Output  del  comando  fetchmail.     L’output  del  comando  fetchmail  dimostra  la  corretta  configurazione  di  fetchmail,   in   particolare   ho   evidenziato   la   Certificate  chain.   Per   questione   di   completezza,   nel   prossimo   listing   è   mostrato   un   esempio   di   download   e   lettura   di   una   mail   dalla  mia  casella  di  posta.       $ fetchmail -d0 -vk pop.gmail.com fetchmail: POP3< . 1 message for antonio.musarra@gmail.com at pop.gmail.com (22731 octets). fetchmail: POP3> LIST 1 fetchmail: POP3< +OK 1 22731 fetchmail: POP3> RETR 1 fetchmail: POP3< +OK message follows reading message antonio.musarra@gmail.com@gmail-pop.l.google.com:1 of 1 (22731 octets) Trying to connect to 127.0.0.1/25...connected. fetchmail: SMTP< 220 amusarra-mobile.local ESMTP Postfix fetchmail: SMTP> EHLO amusarra-mobile.local fetchmail: SMTP< 250-amusarra-mobile.local fetchmail: SMTP> MAIL FROM:<prvs=954dcdfd4=Antonio.Musarra@altran.it> SIZE=22731 fetchmail: SMTP< 250 2.1.0 Ok fetchmail: SMTP> RCPT TO:<amusarra@localhost> fetchmail: SMTP< 250 2.1.5 Ok fetchmail: SMTP> DATA fetchmail: SMTP< 354 End data with <CR><LF>.<CR><LF> fetchmail: SMTP>. (EOM) fetchmail: SMTP< 250 2.0.0 Ok: queued as 886B86E1017 fetchmail: POP3> QUIT fetchmail: POP3< +OK Farewell. fetchmail: SMTP> QUIT fetchmail: SMTP< 221 2.0.0 Bye fetchmail: 6.3.11 querying pop.gmail.com (protocol POP3) at Sun, 12 Dec 2010 00:45:22 +0100 (CET): poll completed fetchmail: normal termination, status 0 12/12/10   7   This  document  is  issued  with  license  Creative  Commons  Attribution-­‐NonCommercial-­‐ShareAlike      
  • 8. Antonio  Musarra's  Blog   The  ideal  solution  for  a  problem   Blog:  http://musarra.wordpress.com   Mail:  antonio.musarra@gmail.com     $ mail Mail version 8.1 6/6/93. Type ? for help. "/var/mail/amusarra": 1 message 1 new >N 1 antonio.musarra@altr Sun Dec 12 00:45 377/23230 "Test" Message 1: From prvs=954dcdfd4=Antonio.Musarra@altran.it Sun Dec 12 00:45:21 2010 X-Original-To: amusarra@localhost Delivered-To: amusarra@localhost.local Delivered-To: antonio.musarra@gmail.com From: Antonio Musarra <antonio.musarra@altran.it> Content-Type: multipart/alternative; boundary=Apple-Mail-11-271232042 Subject: Test Date: Sun, 12 Dec 2010 00:44:04 +0100 To: Antonio Musarra <antonio.musarra@gmail.com> Mime-Version: 1.0 (Apple Message framework v1082) X-Mailer: Apple Mail (2.1082) X-OriginalArrivalTime: 11 Dec 2010 23:44:15.0549 (UTC) FILETIME=[5201F6D0:01CB998D]      Listing  11  Download  e  lettura  di  una  mail.   Works  Cited   Wikipedia.  (2010,  December  2010).  X.509.  (Wikipedia,  Produttore)  Tratto  da   X.509:  http://en.wikipedia.org/wiki/X.509   Wikipedia.  (2009,  October  8).  Certificate  Authority.  (Wikipedia,  Produttore)   Tratto  da  Certificate  Authority:   http://en.wikipedia.org/wiki/Certificate_Authority   Wikipedia.  (2010,  December  6).  Transport  Layer  Security.  (Wikipedia,   Produttore)  Tratto  da  Transport  Layer  Security:   http://en.wikipedia.org/wiki/Transport_Layer_Security   BerliOS.  (2010,  Oct  16).  Fetchmail.  (M.  Andree,  Produttore,  &  BerliOS)  Tratto  da   Fetchmail:  http://fetchmail.berlios.de/   Google.  (2010).  Che  Cos'è  Google  Apps  Sync  ?  (Google,  Produttore,  &  Google)   Tratto  da  Google:   http://mail.google.com/support/bin/answer.py?hl=it&answer=153866   Google.  (2010).  Informazioni  su  GMail  Notifier.  (Google,  Produttore,  &  Google)   Tratto  da  http://mail.google.com/support/bin/answer.py?hl=it&answer=9429   Internet  Engineering  Task  Force  -­‐  IETF.  (1996,  May).  RFC  1939  Post  Office   Protocol  -­‐  Version  3.  (J.  Myers,  C.  Mellon,  &  M.  Rose,  Produttori)  Tratto  da  IETF   Tools:  http://tools.ietf.org/html/rfc1939   Internet  Engineering  Task  Force  -­‐  IETF.  (2003,  March).  RFC  3501  Internet   Message  Access  Protocol  -­‐  Version  4rev1.  (M.  Crispin,  Produttore)  Tratto  da  IETF   Tools:  http://tools.ietf.org/html/rfc3501   OpenSSL  Project.  (1998,  December  23).  OpenSSL  Cryptography  and  SSL/TLS   Toolkit.  (M.  J.  Cox,  R.  S.  Engelschall,  S.  Henson,  B.  Laurie,  Produttori,  &  OpenSSL)   Tratto  da  OpenSSL  Cryptography  and  SSL/TLS  Toolkit:  http://www.openssl.org     12/12/10   8   This  document  is  issued  with  license  Creative  Commons  Attribution-­‐NonCommercial-­‐ShareAlike