Archivio

Posts Tagged ‘telnet’

Leggere la posta IMAP mediante Telnet – 2

25 ottobre 2009 Pidicci Nessun commento

Nell’articolo precedente abbiamo visto come accedere via IMAP ad una caselal di posta mediante il comando telnet. Oltre ad istruirci sul protocollo IMAP e la sua RFC ci permette di fatto di poter implementare un client IMAP con poche semplici nozioni di programmazione nel linguaggio che più preferiamo. Il presente articolo vuole completare la lista dei comandi che IMAP prevede una volta effettuato il login pertanto invito a leggerlo solo dopo aver letto e compreso l’aricolo di cui sopra.

Proviamo ora a conoscere il comando:

COMANDO STORE:

Permette di modificare il flag IMAP su un messaggio. I flag sono replicato a, cancellato, visto, ecc… e per poterli modificare si esegua:

Per aggiungere:                       STORE messaggio +flag [lista_flag]

Per eliminare:                          STORE messaggio -flag [lista_flag]

Per ripristinare tutti i flag:       STORE messaggio flags [flag list]

Considerando che alciuni dei flags sono: \Answered \Flagged \Draft \Deleted \Seen un esempio pratico puo’ essereil seguente:

. store 3:4 flags \Deleted
* 1 FETCH (FLAGS (\Recent \Deleted))
* 2 FETCH (FLAGS (\Recent \Deleted))
. OK Completed

Oppure impostare tutti i messaggi come non di spam (NonJunk)

. store 1:* +flags NonJunk
* FLAGS (\Answered \Flagged \Draft \Deleted \Seen hasatt NonJunk Junk label1)
* OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen hasatt NonJunk Junk $label1 \*)]
* 1 FETCH (FLAGS ($label1 NonJunk))
* 2 FETCH (FLAGS ($label1 NonJunk))
. OK Completed

COMANDO CLOSE e EXPUNGE:

Entrambi i comandi permetto l’eliminazione dei messaggi contrassegnati come \Deleted e quindi da cancellare ma mentre EXPUNGE li elimina e non fa nient’altro, il comando CLOSE elimina  i messaggi e deseleziona la cartella in uso.

COMANDO COPY:

Il comando copia un messaggio da una cartella ad un’altra. L’operazione di copia presuppone la rimozione automatica del flag \Recent. Di seguito un esempio di utilizzo:

. copy 1:2 inbox.test2
. OK [COPYUID 1138801117 1:2 1:2] Completed
. select inbox.test2
* FLAGS (\Answered \Flagged \Draft \Deleted \Seen hasatt)
* OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen hasatt \*)]
* 2 EXISTS
* 2 RECENT
* OK [UIDVALIDITY 1138801117]
* OK [UIDNEXT 3]
. OK [READ-WRITE] Completed

COMANDO IDLE:

Permette di tenere sotto controllo costantemente la nostra casella di posta ponendosi in uno stato di idle fino all’arrivo di un nuovo messaggio di posta.

. idle
+ idling

All’arrivo di un messaggio IMAP fornira’ un messaggio dl tipo:

* OK Still here

Se vogliamo interrompere manualmente lo stato di idling dobbiamo lanciare il comando done:

done
. OK Completed

Attenzione perche’ “done”  e’ l’unico comando che non va eseguito con il tag iniziale

COMANDO SUBSCRIBE, UNSUBSCRIBE e LSUB,:

Subscribe permette di sottoscrivere il client ad una determinata folder IMAP (cartella dell’account di posta), unsubscribe di eliminare la sottoscrizione. LSUB invece permette di fare il listing delle folder IMAP su cui si e’ effettuato il subscribe:

. lsub “” “*”
* LSUB (\HasChildren) “.” “INBOX”
* LSUB () “.” “INBOX.Drafts”
* LSUB () “.” “INBOX.Sent Items”
* LSUB () “.” “INBOX.Trash”
* LSUB () “.” “INBOX.test2″
. OK Completed (0.001 secs 6 calls)

COMANDO CAPABILITY, GETQUOTAROOT e GETACL:

I comandi sopraindicati permettono di avere una serie di informazioni sul server di posta su cui viene effettuata la connessione.

CAPABILITY permette di avere la lista delle compatibilita’ del server:

. capability
* CAPABILITY IMAP4rev1 SASL-IR SORT THREAD=REFERENCES MULTIAPPEND UNSELECT LITERAL+ IDLE CHILDREN NAMESPACE LOGIN-REFERRALS
. OK Capability completed.

GETQUOTAROOT la quantita’ di spazio occupata dalla casella e ma non e’ supportato da molti server di posta.

GETACL permette di visualizzare una seri di flag della cartella su cui si richiama il comando. I flag possono essere:

l – lookup_flag:  la mailbox è disponibile per i comandi LIST/LSUB
r – read_flag: sono abilitati i comandi CHECK, FETCH, PARTIAL SEARCH, COPY
s – seen_flag: mantiene le informazioni seen/unseen su sessioni differenti
w – write_flag: sono abilitato il comando STORE e altri flag come SEEN and DELETED
i – insert_flag: abilita i comandi APPEND, COPY alla mailbox

p – post_flag:manda un email alla

c – create_flag: CREATE una nuova sub-mailboxes
d – delete_flag: STORE DELETED flag e abilitato EXPUNGE
a – administer_flag: e’ abilitato SETACL

Leggere la posta IMAP mediante Telnet – 1

16 ottobre 2009 Pidicci 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…

Leggere la posta in telnet su protocollo pop3

8 ottobre 2009 Marco Nessun commento

Quando abbiamo la necessita di leggere la posta e non abbiamo a disposizione un client o l’accesso diretto al server possiamo leggere la posta collegandoci tramite telnet.

Aprite la console (linux) o il prompt dei comandi (windows) e digitare:

telnet pop.serverpop.it 110 -> Invio

user vosttrousername -> Invio

pass vostrapass -> Invio

Una volta autenticati correttamente possiamo interagire con il server ecco una lista dei comandi principali

list -> Per avere la lista dei messaggi

retr [numero del messaggio] -> Per leggere il messaggio indicato (Esempio retr 5 per leggere il messaggio numero 5)

dele [numero del messaggio] -> Per eliminare il messaggio indicato

rset -> per uscire