Gestione flessibile della posta con Imap (dovecot) e Getmail4 – ( conversione mbox 2 maildir)

Dopo l’ennesimo comportamento da pachiderma di Evolution dovuto al fatto che ho piu’ di 5 Gigabyte di posta, e come visto funzionare dal nostro amico Fleur, ho deciso di passare tutta la mia posta dal formato mbox (standard per evolution) a quella Maildir fornita tramite un server imap…
Questa soluzione porta ad avere backup piu’ veloci e sicuri e una maggiore flessibilità: la posta puo’ essere letta allo stesso modo da qualsiasi client di posta elettronica presente sullo stesso sistema operativo. Indirettamente anche la conversione della posta da un formato (anche se proprietario) all’altro, e’ un gioco da ragazzi…

Per chi non ha confidenza con questi termini sappia che il formato mbox conserva tutte le mail di ogni cartella di del client di posta in un unico file; generalmente non le cancella da questo file neanche dopo la cancellazione all’interno del programma, se non forzandone la “compattazione”. Si può facilmente capire che con un grande quantitativo di messaggi archiviati, i file “contenitori” possono diventare anche enormi tanto da pregiudicare le prestazioni del software che li deve gestire…
Non solo: i backup (anche se incrementali) della posta, ci obbligano ad aspettare che l’intero file sia trasferito anche se e’ arrivato un solo messaggio in più

Per contro, il formato maildir invece, utilizza un file per ogni mail archiviata. E’ possibile quindi effettuare un backup incrementale in maniera rapida ed indolore.

Utilizzeremo come base la Ubuntu 7.10; il server imap sarà Dovecot e come collegamento tra il server pop o imap in internet e il nostro Pc utilizzeremo Getmail4 che, a differenza di fetchmail, ci consente di scrivere direttamente all’interno di una directory in formato maildir.

Partiamo con l’installazione del server imap

Per evitare problemi, facciamo un backup di tutto: (per Evolution)


mkdir ~/evobackup
cp -R ~/.evolution/mail/local ~/evobackup

Installiamo dunque il software necessario:

sudo apt-get install dovecot-imapd getmail4

Prepariamo la Maidir dentro la home del nostro utente: essa conterrà tutte le nostre email e sarà la directory da backuppare…

mkdir ~/Maildir

Passiamo ora a configurare Dovecot: il file di configurazione dovecot.conf deve essere messo in /etc/dovecot . Se non fosse presente nella directory è possibile copiarlo così:
sudo cp /usr/share/dovecot/dovecot.conf /etc/dovecot

Editiamo quindi li file solamente in queste 3 righe

sudo gedit /etc/dovecot/dovecot.conf


protocols = imap
imap_listen = *
mail_location = maildir:/home/%u/Maildir

E facciamo partire il servizio

sudo /etc/init.d/dovecot start

Per quanto riguarda il server imap siamo a posto…

Possiamo configurare il client di posta affichè si colleghi al server con ip 127.0.0.1 specificando come tipo di account imap e login e password relativi al nostro utente di sistema.

In questo modo avremo un “ramo” in più negli account disponibili (generalmente nella colonna di sinistra del programma di posta); attualmente sarà ovviamente ancora vuoto.
Per riempirlo della nostra posta storica, convertendola quindi dal formato mbox al formato Maildir, trascinate con il mouse l’intero ramo della vostra attuale posta dentro questo nuovo account…
Dopo un tempo variabile che dipende da quanta posta avete, avrete tutta la vostra posta presente nel nuovo formato Maildir dentro la vostra directory /home/nomeutente/Maildir
Se il trasferimento vi crea problemi, potete farlo in più volte, prendendo di volta in volta parte delle cartelle.

Rimane ora il problema di come gestire l’ingresso delle email nuove. A questo punto potete:

  • Lasciare il doppio account e trascinare archiviando le mail che arrivano nel server imap
  • Configurare Getmail4

Configuriamodunque Getmail4 per fargli scaricare la nuova posta dai nostri account pop/imap di internet e portarli nel server imap (e quindi nel nostro client di posta).

Come utente normale (senza sudo) dari i seguenti comandi:

  • mkdir -m 0700 $HOME/.getmail
  • touch getmailrc
  • gedit ~/.getmail/getmailrc

Se il vostro server di posta (POP) in internet e’ mail.web3king.com e i vostri dati di accesso sono login:pippo e password:pluto inserite questo codice:

[retriever]
type = SimplePOP3Retriever
server = mail.web3king.com
username = pippo
password = pluto
delete_dup_msgids = true

[destination]
type = Maildir
path = ~/Maildir/

[options]
delete = true
read_all = true
Se dovete contattare un server IMAP invece che POP sostituite SimplePOP3Retriever con SimpleIMAPRetriever. Maggiori info sul sito ufficiale di getmail

Mentre per dire a getmail di controllare e scaricare la posta ogni 2 minuti, da utente normale digitare (senza sudo)

crontab -e

Inserire la seguente riga:

*/2 * * * * /usr/local/bin/getmail --quiet

e ricaricare la configurazione di cron (con sudo):

sudo /etc/init.d/cron reload

A questo punto, senza far niente, avrete che tutta la posta nuova che arriva sarà automanticamente recapitata dentro il server Imap e quindi nel nuovo account. (Dopo qualche giorno di test, potete anche rimuovere il vecchio account)
Per ora è tutto, aspetto vostri commenti. In un prossimo articolo andremo a vedere come backuppare periodicamente in modo incrementale la posta

Comments

  1. Andrea Gelmini
    febbraio 28th, 2008 | 3:56 am

    Ciao,
    sono d’accordo sulla comodita’ di utilizzare maildir, ma mi permetto di far notare che:
    a) fetchmail, da tempo immemore, viene patchato dalle distribuzioni per supportae maildir (anch’io uso ubuntu, e funziona perfettamente);
    b) anche con il formato mailbox puoi operare contemporaneamente sulla stessa mailbox da piu’ client. ovviamente mailbox obbliga alla serialita’ di accesso, mentre maildir permette una reale concorrenzialita’;
    c) la mailbox non viene riletta sempre per esteso, con l’arrivo di un nuovo messaggio. qualsiasi client intelligente, come per altro lo stesso dovecot, indicizza l’index di inizio di ogni singolo messaggio, e controlla eventualmente solo la roba accodata.

    personalmente il punto fondamentale che mi ha fatto propendere per maildir è stato il timore che per un settore rovinato del disco/un crash del filesystem potessi perdere tutta la mailbox, mentre così alla peggio perdo un messaggio.

    ciao,
    gelma

  2. agelmi
    febbraio 28th, 2008 | 4:16 am

    Grazie per le precisazioni… :)
    Avrei una domanda: fetchmail lo usi senza l’utilizzo di postfix? Sul web trovo solo i classifici casi con promail e/o postfix…

  3. febbraio 28th, 2008 | 2:16 pm

    [...] post di Angelo mi ha dato il La per una veloce guida su squirrelmail, un buon sistema di webmail scritto in PHP [...]

  4. Andrea Gelmini
    febbraio 28th, 2008 | 5:45 pm

    Ciao,
    mi rendo conto solo ora che, grazie alla mia demenza senile, ho palesemente confuso fetchmail con procmail. ad ogni modo, il mio utilizzo è la classica accoppiata fetchmail+procmail.

    ciao,
    gelma

  5. huan
    febbraio 28th, 2008 | 7:03 pm

    Proprio ieri avevo posto un quesito simile, ma nessuno mi stava rispondendo…
    Che dirti? Grazie, per l’imbeccata.

  6. huan
    marzo 9th, 2008 | 8:52 pm

    Sto usando dovecot di Debian Testing (lenny) Se metto imap_listen = * al riavvio di dovecot con:sudo /etc/init.d/dovecot start
    ottengo:
    Error: Error in configuration file /etc/dovecot/dovecot.conf line 53: Unknown setting: imap_listen
    Fatal: Invalid configuration in /etc/dovecot/dovecot.conf

    Perche’?

  7. agelmi
    marzo 10th, 2008 | 12:17 am

    Prova a sostituire
    imap_listen = *
    con
    listen = *
    se quest’ultima direttiva non l’hai gia’ specificata

  8. huan
    marzo 12th, 2008 | 12:32 pm

    Si, si, va bene.
    Di preciso non ho capito a cosa serve quella direttiva?

    Grazie.

  9. agelmi
    marzo 27th, 2008 | 4:55 pm

    E’ solo una sintassi nuova decisa dall’autore…

  10. spoky99
    ottobre 1st, 2009 | 4:38 pm

    Ho seguito le tue indicazioni ma temo di essermi perso un pezzo. Sicuramente è una stupidaggine da newbie.
    Volevo configurare un server per scaricare le diverse e.mail in locale e redistribuirle ai computer di casa (in un secondo tempo dovrei riuscire ad accedervi anche dai computer dell’ufficio che non è nella stessa rete)
    Ho installato i pacchetti e configurato dovecot.. fatto partire.. da un computer in rete collegato al server ho provato ad impostare la posta (inserendo l’ip del server al posto di 127.0.0.1) e thunderbird mi dice che non si puo’ collegare al server. Cosa mi manca per fare funzionare il tutto?

  11. spoky99
    ottobre 1st, 2009 | 4:41 pm

    ne dimenticavo un pezzo, questo è l’errore restituito da thunderbird
    “impossibile autenticarsi in xxx.xxx.xxx.xxx in quanto il server ha disabilitato le autenticazioni”

  12. agelmi
    ottobre 1st, 2009 | 5:00 pm

    In /etc/dovecot/dovecot.conf decomenta e imposta la direttiva
    disable_plaintex_auth = no

    Prova e facci sapere

  13. agelmi
    ottobre 1st, 2009 | 5:01 pm

    Ovviamente dopo la modifica fai ripartire dovecot :
    sudo /etc/init.d/dovecot restart

Leave a reply

Locations of visitors to this page