24.7. Introduzione a mailsync

Mailsync assolve principalmente tre compiti:

24.7.1. Configurazione ed utilizzo

Mailsync distingue tra mail box in sé (un cosiddetto store) e il collegamento tra due mail box (un cosiddetto channel). La definizione degli store e dei channel viene archiviata nel file ~/.mailsync. Seguono alcuni esempi relativi agli store. Una semplice definizione ha ad es. il seguente aspetto:

store saved-messages {
        pat     Mail/saved-messages
        prefix  Mail/
}

dove Mail/ è una sottodirectory nella directory home dell'utente, contente una cartella con le e-mail, tra l'altro la cartella saved-messages. Se si invoca mailsync con il comando mailsync -m saved-messages in saved-messages si avrà un indice con tutti i messaggi. Un altro esempio:

store localdir {
          pat     Mail/*
          prefix  Mail/
}

In questo caso invocando mailsync -m localdir verranno elencati tutti i messaggi salvati nelle cartelle sotto Mail/. Il comando mailsync  localdir elenca invece i nomi delle cartelle.

La specificazione di uno store sul server IMAP p.es. ha il seguente aspetto:

store imapinbox {
  server  {mail.uni-hannover.de/user=gulliver}
  ref     {mail.uni-hannover.de}
  pat     INBOX
}

Nell'esempio riportato sopra viene indirizzato solo la cartella principale sul server IMAP, uno store per le sottodirectory invece assume il seguente aspetto:

store imapdir {
  server  {mail.uni-hannover.de/user=gulliver}
  ref     {mail.uni-hannover.de}
  pat     INBOX.*
  prefix  INBOX.
}

Se il server IMAP supporta le connessioni cifrate, le specificazioni del server si dovrebbero modificare in

server  {mail.uni-hannover.de/ssl/user=gulliver}

o (se non conoscete il certificato del server) in

server {mail.uni-hannover.de/ssl/novalidate-cert/user=gulliver}

A questo punto vanno collegate le cartelle sotto Mail/ con le sottodirectory sul server IMAP:

channel cartella localdir imapdir {
        msinfo .mailsync.info
}

Mailsync registrerà nel file indicato con msinfo quali messaggi sono stati già sincronizzati. Invocando mailsync cartella si ottiene che:

  • pat (la mail box campione) venga applicata ad entrambi gli host

  • venga eliminato il prefisso(prefix) dai nomi delle cartelle che si creano durante il processo

  • le cartelle vengano sincronizzate a due a due (o create se ancora non esistenti)

La cartella INBOX.sent-mail sul server IMAP viene quindi sincronizzata con la cartella locale Mail/sent-mail (ciò presuppone la definizione di cui sopra). Infine viene eseguita la sincronizzazione delle singole cartelle nel modo seguente:

  • se il messaggio esiste su entrambi gli host, non succede niente

  • se il messaggio manca da una parte e si tratta di un messaggio nuovo, cioé non protocollato nel file msinfo, viene trasmesso lì dove manca

  • se il messaggio esiste solo su una parte e si tratta di un messaggio già vecchio ovvero già protocollato nel file msinfo, viene cancellato da lì (nella speranza che esisteva sull' altro host ed è stato cancellato lì)

Per avere una vista di insieme a priori dei messaggi che verranno trasmessi e quali cancellati durante la sincronizzazione, bisogna richiamare Mailsync contemporaneamente con un channel ed uno store: mailsync cartella localdir.

In tal maniera si avrà un elenco dei messaggi che sono nuovi in locale ed anche una lista di tutti i messaggi che verrebbero cancellati sul lato server IMAP durante la sincronizzazione!

Inversamente con mailsync cartella imapdir si ottiene un'elenco dei messaggi nuovi sul lato IMAP ed anche un'elenco dei messaggi che verrebbero cancellati in locale durante la sincronizzazione.

24.7.2. Possibili difficoltà

Nel caso si verifichi una perdita di dati, il modo più sicuro di procedere è quello i cancellare i relativi file di protocollo channel msinfo. In tal modo tutti i messaggi che esistono solo da una parte vengono considerati dei nuovi messaggi e verranno trasmessi alla prossima sincronizzazione.

Saranno presi in considerazione per quanto riguarda la sincronizzazione solo quei messaggi che hanno una cosiddetta message-id. I messaggi sprovvisti un tale identificativo verranno ignorati, cioé non verranno né trasmessi né cancellati. Spesso la mancanza della message-id è dovuta a errori da ricondurre ai programmi nel processo di consegna o creazione dell'e-mail.

Su determinati server IMAP la cartella principale viene indirizzata tramite INBOX, e le sottocartella tramite un nome qualsiasi (a differenza di INBOX ed INBOX.name). In tal modo per questi server IMAP non è possibile specificare un campione esclusivamente per le sottocartelle.

I driver per mail box (c-client) utilizzati da Mailsync, una volta trasmessi correttamente i messaggi, impostano sul server IMAP una speciale indicazione di stato (status flag) per cui alcuni programmi di e-mail come mutt non riescono ad riconoscere i nuovi messaggi come tali. Per evitare che in Mailsync venga impostata una indicazione di stato, si usa l'opzione -n.

24.7.3. Ulteriore documentazione

Nel README contenuto nel pacchetto mailsync sotto/usr/share/doc/packages/mailsync/ sono reperibili ulteriori informazioni ed indicazioni. Di particolare interesse in questo contesto è anche l'RFC 2076 "Common Internet Message Headers""