Archivio

Posts Tagged ‘imap’

Trasferire il contenuto di una casella di Posta tramite IMAPSync

16 giugno 2011 1 commento

Vedremo come trasferire tutti i messaggi di una casella di posta con supporto imap da un server ad un altro. Si tratta di un operazione relativamente semplice usando una distibuzione Linux.

Il primo passo è quello di installare il programma imapsync. Ecco come fare su Debian/Ubuntu:

#apt-get install imapsync

Una volta installato, ecco una sintassi di esempio per spostare una casella da un server all’altro:

#imapsync –host1 [NomeServer1] –user1 : –password1 [Password1] –host2 [NomeServer2] –user2 [NomeUtente2] –password2 [Password2]

In particolare i valori da inserire sono:

[NomeServer1]: ip o dominio server di origine
[NomeUtente1]:Nome utente server di origine
[Password1]: password server di origine
[NomeServer2]: ip o dominio server di destinazione
[NomeUtente2]: nome utente server di destinazione
[Password2]: password server di destinazione

Imapsync presenta anche molte altre opzioni visualizzabili tramite il comando:

#imapsync –help

L’output generato sarà come questo:

imapsync

The option list :

imapsync [--host1 server1] [--port1 <num>]
[--user1 <string>] [--passfile1 <string>]
[--host2 server2] [--port2 <num>]
[--user2 <string>] [--passfile2 <string>]
[--ssl1] [--ssl2]
[--authmech1 <string>] [--authmech2 <string>]
[--noauthmd5]
[--folder <string> --folder <string> ...]
[--folderrec <string> --folderrec <string> ...]
[--include <regex>] [--exclude <regex>]
[--prefix2 <string>] [--prefix1 <string>]
[--regextrans2 <regex> --regextrans2 <regex> ...]
[--sep1 <char>]
[--sep2 <char>]
[--justfolders] [--justfoldersizes] [--justconnect]
[--syncinternaldates]
[--buffersize <int>]
[--syncacls]
[--regexmess <regex>] [--regexmess <regex>]
[--maxsize <int>]
[--maxage <int>]
[--minage <int>]
[--skipheader <regex>]
[--useheader <string>] [--useheader <string>]
[--skipsize]
[--delete] [--delete2]
[--expunge] [--expunge1] [--expunge2]
[--subscribed] [--subscribe]
[--nofoldersizes]
[--dry]
[--debug] [--debugimap]
[--timeout <int>] [--fast]
[--split1] [--split2]
[--version] [--help]

Per la documentazione ufficiale, consultare quindi la pagina ufficiale:
http://linux.die.net/man/1/imapsync

Leggere la posta IMAP mediante Telnet – 2

25 ottobre 2009 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 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…

AfterLogic Webmail

25 settembre 2009 Nessun commento

wmUna comoda webmail con un buon front-end che supporta il protocollo POP3 ed IMAP e’ la AfterLogic Webmail. Il presente articolo si riferisce all’installazione della versione gratuita della webmail, la versione Webmail Lite ed in particolare la versione scritta in PHP.

La procedura e’ abbastanza semplice:

si scarica il pacchetto:

wget http://www.afterlogic.com/download/webmail_php.zip

Di decomprime il pacchetto installato:

unzip webmail_php.zip

Una volta estratto viene creata una cartella con nome ‘web’ al cui interno e’ contenuta tutto il software necessario, un file di readme (che potete tranquillamente eliminare). La prima operazione da fare quindi e’ rinominare la cartella ‘web’ con un altro nome tipo ‘webmail’!

All’interno della cartella webmail c’e’ la cartella ‘data’ molto importante per la configurazione della webmail.

E’ importante impostare i permessi di chmod a 777 sulla cartella ‘data’ affinche l’utente web riesca a scrivere al suo interno i file necessari alla configurazione. In alternativa si puo’ effettuare il chown e il chgrp della cartella con l’utente web. Assumiamo quindi che l’utente web si chiami www-data dovra’ quindi essere eseguito il comando:

chown www-data.www-data data

Si predisponga prima di avanzare con l’installazione della webmail un database Mysql con relativo utente e password.

Si esegue la procedura indicata dall’installer della webmail. La URL da digitare per eseguire l’installer e’ la seguente:

http://your_server_name/webmail/adminpanel/install.htm

In particolare e’ importante inserire il server di connessione al mysql (se si riferisce alla stessa macchina si puo’ inserire ‘localhost’) e i dati di accesso.

Nel punto 4 viene richiesto di inserire un eventuale prefisso da assegnare alle tabelle che creera’ la webmail sul database mysql. Si inserisca ad esempio “al_” in modo che tutte le tabelle avranno il nome “al_<nome_tabella>”.

Il bello della procedura e’ che per ogni step viene fatta una verifica per cui non permette di andare avanti se prima non si verificano le condizioni di funzionamento. Quindi ci sara’ un test per la connessione a mysql con le credenziali indicate, un tentativo di connessione al server POP3, Imap e SMTP.

In fase di installazione viene richiesto l’inserimento della password dell’utente mailadm che vi permette di accedere al’linterfaccia di configurazione:

http://your_server_name/webmail/adminpanel

Da qui e’ possibile impostare una serie di personalizzazioni come il tema, il formato del login e molto altro.

In particolare si presti attenzione alla sezione “login” che permette di scegliere le modalita’ di accesso all’account compatibilmente con il server di posta utilizzato.

Se l’accesso alla casella viene autorizzato con la username identica all’indirizzo email si deve spuntare la voce “hide login field” e si selezioni la voce dal menù a tendina “use email as login”. Se invece c’e’ un account vero e proprio (senza il simbolo @ per intenderci) allora dal menu’ a tendina si selezioni “Use account name as login”.

Se la webmail viene installata per essere utilizzata su un solo dominio potrebbe essere utile allora selezionare la voce “hide email field”. In questo caso si puo’ scegliere di specificare direttamente dall’amministrazione il nome di dominio con la possibilità di inserire solo la username anche se l’accesso al server mail viene effettuato attraverso l’indirizzo email. In questo caso pero’ si deve flaggare la voce “.

In alternativa, se l’accesso vuole essere consentito a piu’ domini si puo’ predisporre l’immissione da parte dell’utente del nome di dominio in aggiunta alla username e password. In questo caso si deve flaggare la voce “.

Se si flagga la voce “Allow advanced login” si da la possiblita’ all’utente addirittura di modificare il server SMTP.

Se invece si flagga la voce “Automatically detect and correct if user inputs e-mail instead of account-name” la AfterLogic webmail tenta di correggere l’eventuale immissione errata di un utente. Se si scrive ad esempio ‘pipo’ in luogo di ‘pippo’ la webmail corregge automaticamente la username (non la password ovviemente) senza fornire al’lutente il messaggio “username errata”.

Tutto qui…. buon divertimento