Archivio

Posts Tagged ‘accesso imap telent’

Leggere la posta IMAP mediante Telnet – 1

16 ottobre 2009 Nessun commento

IMAP e’ l’abbrevizione di Internet Message Access Protocol o secondo alcuni Interactive Mail Access Protocol. Si tratta comunque di un protocollo per la ricezione dei messaggi email piu’ avanzato rispetto al POP3. La prima differenza che potete notare configurando un account IMAP piuttosto che in POP3 e’ che i messaggi rimangono sul server fin quando non lanciate un comando di “elimina” che poi vedremo nel dettaglio.

Ma le differenze rispetto al POP3 sono molteplici:

  • Accesso alla posta sia online che off-line
  • Più utenti possono utilizzare la stessa casella di posta
  • Accesso a singole parti MIME di un messaggio per scaricare ad esempio solo l’header
  • Se un messaggio viene letto attraverso un cilent, al client successivo vedra’ il messaggio flaggato come gia’ letto
  • Possibilità di creare cartelle di posta direttamente su server
  • Possibilità di fare ricerche di messaggi direttamente su server

Queste caratteristiche lo rendono ovviamente piu’ potente rispetto al POP3.

Innanzitutto il protocollo IMAP e’ definito attraverso un RFC ed in particolare dipende dalla versione. L’ultimo nato e che piu’ ci interessa e’ il protocollo IMAP4 rispnde all’ RFC 3501.

Il presente articolo fornisce una guida sulle operazioni che si possono fare su un account IMAP mediante l’accesso telnet. Fornisce quindi un dettaglio dei comandi eseguiti e le risposte del server quando effettuate una connessione via IMAP, operazioni che vengono fatte in automatico dal vostro bel client di posta come Thunderbird o Outlook senza che voi ne abbiate la visibilita’.

Cominciamo:

La prima cosa da fare e’ connetterci al server IMAp. La porta standard utilizzata per questo tipo di comunicazioni e’ la 143 per cui il comando e’ il seguente:

telnet <mailserver> 143

oppure

telnet <mailserver> imap

La rispsta che si riceve dipende dal server che gestisce le connessioni IMAP ma di solito finira’ con un bel OK … se e’ tutto a posto naturalemente ;)

La prima cosa da fare e’ ovviamenet effettuare il login. Per farlo e’ sufficiente lanciare il comando:

login <username> <password>

La risposta dovrebbe essre del tipo “OK User logged in”.

A questo punto si possono dare diversi comandi. Nel dettaglio:

COMANDO LIST:

list “” “*”

Permette di visualizzare l’elenco delle mailbox presenti con l’account appena utilizzato.

COMANDO STATUS:

. status INBOX (messages)

Permette di visualizzare il numero di messaggi presenti nella mailbox INBOX.

. status INBOX (recent)

Permette di visualizzare il numero di messaggi recenti

. status INBOX (unseen)

Permette di visualizzare il numero di messaggi non letti presenti nella casella INBOX.

COMANDO SELECT:

. select INBOX.test2

Permette di selezionare una cartella della nostra mailbox (test2) e ne fornisce le statistiche sui messaggi non letti, presenti, ecc… Il comando SELECT effettua il reset del flag “recent” di conseguenza una volta utilizzato i messaggi appena giunti sulla casella non verranno piu’ considerati come recenti. Comunque non perderanno il flag “non letto”.

COMANDO EXAMINE:

. examine INBOX.test2

Effettua le stesse operazioni del comando SELECT ma a differenza di quest’ultimo non resetta il flag recent dei messaggi.

CREATE, DELETE e RENAME folders:

. create INBOX.test3

Sono comaindi che permettono la creazione, eliminazione e di rinominare le cartelle IMAP della nostra mailbox.

COMANDO FETCH:

Una volta effettuata la SELECT della nostra INBOX possiamo utilizzare il comando FETCH per visualizzare le informazioni che ci interessano dei singoli messaggi. In particolare:

. fetch 1 flags

Permette di visualizzare i flags del messaggio numero 1. Si potra’ avere un output del tipo:

* 1 FETCH (FLAGS (\Seen NonJunk))

Che indica che il messaggio e’ stato gia’ visualizzato e’ non considerato come spam.

Si puo’ avere la statistica di piu’ messaggi con la definizione dell’intervallo di messaggi da analizzare:

. fetch 1 flags
* 1 FETCH (FLAGS (\Seen NonJunk))
. OK Fetch completed.
. fetch 1:5 flags
* 1 FETCH (FLAGS (\Seen NonJunk))
* 2 FETCH (FLAGS (\Seen Junk))
* 3 FETCH (FLAGS (\Seen NonJunk))
* 4 FETCH (FLAGS (\Seen NonJunk))
* 5 FETCH (FLAGS (\Seen Junk))
. OK Fetch completed.

E’ possibile inoltre avere informazioni sul singolo messaggio con modalita’ fast, all, full che permette di visualizzare  informazioni sull’header del messaggio:

. fetch 1 fast

* 1 FETCH (FLAGS (\Seen NonJunk) INTERNALDATE “21-Jul-2009 06:59:44 +0200″ RFC822.SIZE 1011)
. OK Fetch completed.

oppure:

. fetch 1 full
* 1 FETCH (FLAGS (\Seen NonJunk) INTERNALDATE “21-Jul-2009 06:59:44 +0200″ RFC822.SIZE 1011 ENVELOPE (“Tue, 21 Jul 2009 06:59:43 +0200″ “New WordPress Blog” ((“WordPress” NIL “wordpress” “<my_server>”)) ((“WordPress” NIL “wordpress” “<my_server>”)) ((“WordPress” NIL “wordpress” “<my_server>”)) ((NIL NIL “<dest_email>” “<dominio_email”)) NIL NIL NIL “<6a191dfd1b7f206fd668a69f67114044@<my_server>>”) BODY (“text” “plain” (“charset” “UTF-8″) NIL NIL “8bit” 307 14))
. OK Fetch completed.

Oppure ancora:

. fetch 1 full
* 1 FETCH (FLAGS (\Seen hasatt) INTERNALDATE ” 1-Feb-2006 08:37:23 -0500″ RFC822.SIZE 15013 ENVELOPE (“Wed, 1 Feb 2006 13:37:19 UT” “IMPORTANT: Click here to begin using your account” ((“Email Administrator” NIL “bounce” “myserver.com”)) ((“Email Administrator” NIL “bounce” “myserver.com”)) ((NIL NIL “webmaster” “myserver.com”)) ((“Joe Bloggs” NIL “accountname” “myserver.com”)) NIL NIL NIL “<cmu-lmtpd-28871-1138801043-0@server2.messagingengine.com>”) BODY (((“TEXT” “PLAIN” NIL NIL NIL “8BIT” 5599 137)(“TEXT” “HTML” NIL NIL NIL “8BIT” 7434 141) “ALTERNATIVE”)(“TEXT” “PLAIN” (“NAME” “This_is_how_attachments_appear.txt”) NIL NIL “8BIT” 247 6) “MIXED”))
. OK Completed (0.000 sec)

Se si vuole leggere l’header in una forma piu’ leggibile si puo’ eseguire il comando:

. fetch 1 rfc822.header
* 1 FETCH (RFC822.HEADER {824}
Return-Path: <nobody@server2.messagingengine.com>
Received: from web2.internal (web2.internal [10.202.2.211])
by server2.messagingengine.com (Cyrus v2.3-alpha) with LMTPA;
Wed, 01 Feb 2006 08:37:23 -0500
X-Sieve: CMU Sieve 2.3
X-Attached: This_is_how_attachments_appear.txt
X-Resolved-to: accountname
X-Mail-from: nobody
Content-Transfer-Encoding: 8bit
Content-Type: multipart/mixed; boundary=”_———-=_1138801039165120″
MIME-Version: 1.0
X-Mailer: MIME::Lite 5022 (F2.73; T1.15; A1.64; B3.05; Q3.03)
Date: Wed, 1 Feb 2006 13:37:19 UT
From: “Email Administrator” <bounce@myserver.com>
Reply-To: webmaster@myserver.com
To: “Joe Bloggs” <accountname@myserver.com>
Subject: IMPORTANT: Click here to begin using your account
Message-ID: <cmu-lmtpd-28871-1138801043-0@server2.messagingengine.com>
)

. OK Completed (0.000 sec)

Oppure se si vuole estrarre solo alcune informazioni:

. fetch 1 (body[header.fields (from to subject date)])

* 1 FETCH (BODY[HEADER.FIELDS (FROM TO SUBJECT DATE)] {151}
To: piero.dc@quickshare.it
Subject: New WordPress Blog
Date: Tue, 21 Jul 2009 06:59:43 +0200
From: WordPress <wordpress@watcharin.quickshare.it>

)
. OK Fetch completed.

Quest’ultimo comando si puo’ vedere che estrae le righe che vanno dal subject alla data del messaggio.

Se si vuole visualizzare il corpo del messaggio si esegua il comando:

. fetch 2 rfc822.text

Fetch risulta essere in effetti il comando piu’ importante del RFC di IMAP. Nella prossima parte della guidaverranno visualizzati comandi come STORE, SUBSCRIBE, etc… Per il momento si puo’ fare il logout di IMAP con il:

COMANDO LOGOUT:

. logout
* BYE LOGOUT received
. OK Completed

Buona prova…