doc:appunti:linux:sa:imap
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
doc:appunti:linux:sa:imap [2013/10/11 17:13] – [mailsync] niccolo | doc:appunti:linux:sa:imap [2024/03/08 17:18] – [offlineimap] niccolo | ||
---|---|---|---|
Line 44: | Line 44: | ||
===== Migrating IMAP folder ===== | ===== Migrating IMAP folder ===== | ||
+ | |||
+ | ==== offlineimap ==== | ||
+ | |||
+ | Sincronizza una cartella su server **IMAP remoto** con una **Maildir locale** oppure un altro **server IMAP**. Sembra il programma più flessibile e semplice da utilizzare rispetto a **isync**, **mailsync**, | ||
+ | |||
+ | **ATTENZIONE** :!: Le versioni **6.3.4** di Debian Wheezy e **6.5.4** hanno diversi bug. | ||
+ | |||
+ | **ATTENZIONE** :!: La versione **7.3.0** (git20210225) di Debian 11.3 Bullseye ha un bug con le cartelle IMAP che **contengono degli spazi** (vedere pull risolutivo [[https:// | ||
+ | |||
+ | **ATTENZIONE** :!: Il programma effettua una sincronizzazione **bidirezionale**, | ||
+ | |||
+ | Pertanto, prima di iniziare la sincronizzazione, | ||
+ | |||
+ | === Esempio #1: da IMAP a Maildir === | ||
+ | |||
+ | Il primo esempio riguarda una migrazione da repository **IMAP remoto** a **Maildir locale**. Prepariamo il file di configurazione **offlineimap-imap-maildir.conf**: | ||
+ | |||
+ | < | ||
+ | [general] | ||
+ | accounts = Test | ||
+ | |||
+ | [Account Test] | ||
+ | remoterepository = RemoteIMAP | ||
+ | localrepository = Localhost | ||
+ | |||
+ | [Repository RemoteIMAP] | ||
+ | type = IMAP | ||
+ | # Strip the " | ||
+ | # ' | ||
+ | # ' | ||
+ | # ' | ||
+ | nametrans = lambda foldername: re.sub(' | ||
+ | remotehost = mail.example.org | ||
+ | remoteuser = username | ||
+ | remotepass = MySecret | ||
+ | createfolders = False | ||
+ | sslcacertfile = / | ||
+ | ssl_version = tls1_2 | ||
+ | # If you don't want IMAPS on port 993, you can use STARTTLS on port 143. | ||
+ | #ssl = no | ||
+ | #starttls = yes | ||
+ | |||
+ | [Repository Localhost] | ||
+ | type = Maildir | ||
+ | localfolders = / | ||
+ | </ | ||
+ | |||
+ | Per impostazione predefinita offlineimap tenta una connessione **SSL** su porta **993/ | ||
+ | |||
+ | < | ||
+ | offlineimap.error.OfflineImapError: | ||
+ | You must configure at least something, otherwise having SSL helps nothing. | ||
+ | </ | ||
+ | |||
+ | Per vedere quale Certification Authority deve essere usata è necessario recuperare il certificato SSL dal server remoto, ad esempio con il comando: | ||
+ | |||
+ | < | ||
+ | openssl s_client -showcerts -connect mail.example.org: | ||
+ | </ | ||
+ | |||
+ | Quindi si ispeziona la **certificate chain** alla ricerca di **O**rganization e **C**ommon **N**ame con valori del tipo: | ||
+ | |||
+ | * O = Actalis S.p.A., CN = Actalis Organization Validated Server CA G3 | ||
+ | * O = Let's Encrypt, CN = R3 | ||
+ | |||
+ | Avendo installato il pacchetto **ca-certificates**, | ||
+ | |||
+ | < | ||
+ | [SSL: DH_KEY_TOO_SMALL] dh key too small (_ssl.c: | ||
+ | </ | ||
+ | |||
+ | Questo significa che il server utilizza una versione debole di SSL, vulnerabile ad attacchi del tipo //Factoring RSA Export Keys// poiché usa una chiave Diffie-Hellman più corta di 768 byte. In questo caso, se non possiamo correggere il server, è necessario aggiungere l' | ||
+ | |||
+ | Se si desidera utilizzare una connessione con STARTTLS su porta 143, è necessario aggiungere le opzioni '' | ||
+ | |||
+ | Si esegue il programma in modalità **%%--info%%**, | ||
+ | |||
+ | < | ||
+ | offlineimap --dry-run --info -c ./ | ||
+ | </ | ||
+ | |||
+ | Nell' | ||
+ | |||
+ | < | ||
+ | ... | ||
+ | Remote repository ' | ||
+ | ... | ||
+ | Folderlist: | ||
+ | INBOX -> | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Local repository ' | ||
+ | Folderlist: | ||
+ | |||
+ | </ | ||
+ | |||
+ | Come si vede il server di origine, oltre alla cartella **INBOX**, presenenta alcune sottocartelle che hanno il prefisso **INBOX.**; la regola **re.sub()** nel file di configurazione serve a tradurre il nome delle cartelle dalla nomenclatura IMAP remota alla Maildir locale (ovviamente si deve verificare lo standard adottato dal server IMAP che gira sull' | ||
+ | |||
+ | * La INBOX deve essere la cartella radice della Maildir. | ||
+ | * Il prefisso INBOX delle sottocartelle deve essere rimosso. | ||
+ | * Ogni sottocartella deve avere il punto come prefisso del nome (directory nascosta Unix). | ||
+ | |||
+ | Vengono create le cartelle **$HOME/ | ||
+ | |||
+ | |||
+ | === Esempio #2: da IMAP a IMAP === | ||
+ | |||
+ | In questo esempio di effettua la sincronizzazione fra due server IMAP, quindi senza fare accesso diretto al filesystem. Questo il file di configurazione **offlineimap-imap-imap.conf**: | ||
+ | |||
+ | < | ||
+ | [general] | ||
+ | accounts = Test | ||
+ | |||
+ | [Account Test] | ||
+ | remoterepository = RemoteIMAP | ||
+ | localrepository = LocalIMAP | ||
+ | |||
+ | [Repository RemoteIMAP] | ||
+ | type = IMAP | ||
+ | # Strip the " | ||
+ | # ' | ||
+ | # ' | ||
+ | # ' | ||
+ | nametrans = lambda foldername: re.sub(r' | ||
+ | remotehost = mail1.example.org | ||
+ | remoteuser = username1 | ||
+ | remotepass = MySecret1 | ||
+ | createfolders = False | ||
+ | sslcacertfile = / | ||
+ | |||
+ | [Repository LocalIMAP] | ||
+ | type = IMAP | ||
+ | remotehost = mail2.example.org | ||
+ | remoteuser = username2 | ||
+ | remotepass = MySecret2 | ||
+ | sslcacertfile = / | ||
+ | </ | ||
+ | |||
+ | Si esegue il programma in modalità **%%--info%%**: | ||
+ | |||
+ | < | ||
+ | offlineimap --dry-run --info -c ./ | ||
+ | </ | ||
+ | |||
+ | Verifichiamo l' | ||
+ | |||
+ | < | ||
+ | Remote repository ' | ||
+ | ... | ||
+ | Folderlist: | ||
+ | | ||
+ | INBOX | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Local repository ' | ||
+ | ... | ||
+ | Folderlist: | ||
+ | | ||
+ | INBOX | ||
+ | Sent | ||
+ | Spam | ||
+ | Trash | ||
+ | </ | ||
+ | |||
+ | Si capisce che i due server IMAP utilizzano una struttura diversa: il primo ha il prefisso '' | ||
+ | |||
+ | === Sincronizzazione === | ||
+ | |||
+ | La sincronizzazione avviene semplicemente eseguendo il comando con l' | ||
+ | |||
+ | < | ||
+ | offlineimap -1 -c offlineimap-imap-imap.conf -d imap, | ||
+ | </ | ||
+ | |||
+ | * Lo stato della sincronizzazione viene scritto in **'' | ||
+ | * La '' | ||
+ | * Potrebbe essere necessario specificare l' | ||
+ | |||
+ | === Soluzione problemi === | ||
+ | |||
+ | Vedere **[[offlineimap3]]**. | ||
+ | |||
+ | |||
+ | ==== isync ==== | ||
+ | |||
+ | Consente la sincronizzazione di una **Maildir locale** con un server **IMAP remoto**. | ||
+ | |||
+ | * Errore **'' | ||
+ | * FIXME Esiste un modo di fare trasferimento ricorsivo di tutte le cartelle? Provare l' | ||
+ | * FIXME Problemi con le cartelle che contengono spazi nel nome, vedere la soluzione di eseguire direttamente '' | ||
+ | * Lo stato della sincronizzazione viene scritto in ogni Maildir nel file **'' | ||
+ | |||
+ | === Uso diretto di mbsync === | ||
+ | |||
+ | Per il problema delle cartelle che contengono spazi nel nome, si lancia **'' | ||
+ | |||
+ | < | ||
+ | mbsync --config mbsync.conf < | ||
+ | </ | ||
+ | |||
+ | ==== mailsync ==== | ||
+ | |||
+ | Consente la sincronizzazione di un server **IMAP remoto** con il **filesystem locale** (non Maildir) oppure **altro server IMAP**. | ||
+ | |||
+ | **Non supporta il formato Maildir** su filesystem locale. Il programma in effetti si appoggia sulla libreria **c-client** per accedere agli archivi di posta, in passato Debian includeva una patch per supportare Maildir, ma questa patch è stata rimossa (verificato in **libc-client2007e** di Debian Jessie). | ||
+ | |||
+ | Con questo file di configurazione **mailsync.conf** si sincronizza un server IMAP (remoto) con uno che gira in localhost: | ||
+ | |||
+ | < | ||
+ | store first-server { | ||
+ | server | ||
+ | ref | ||
+ | pat * | ||
+ | prefix | ||
+ | passwd | ||
+ | } | ||
+ | |||
+ | store second-server { | ||
+ | server | ||
+ | ref | ||
+ | pat * | ||
+ | prefix | ||
+ | passwd | ||
+ | } | ||
+ | |||
+ | channel first-to-second first-server second-server { | ||
+ | msinfo | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Per lanciare la sincronizzazione per la prima volta si cancella un eventuale file di stato **'' | ||
+ | |||
+ | < | ||
+ | rm .msinfo | ||
+ | mailsync -v -d -di -dc -f mailsync.conf first-to-second | ||
+ | </ | ||
+ | |||
+ | ==== interimap ==== | ||
+ | |||
+ | Effettua la sincronizzazione fra due server IMAP, ma richiede la capability **QRESYNC** su entrambi. | ||
==== imapsync ==== | ==== imapsync ==== | ||
+ | |||
+ | :!: Non presente in Debian 10 Buster. Obsoleto? | ||
To migrate an IMAP account from one host1 to host2, there is the **'' | To migrate an IMAP account from one host1 to host2, there is the **'' | ||
Line 72: | Line 320: | ||
FIXME Problema con allegati con BODY vuoti: invece di saltare il messaggio il programma si blocca. | FIXME Problema con allegati con BODY vuoti: invece di saltare il messaggio il programma si blocca. | ||
+ | |||
==== imapcopy ==== | ==== imapcopy ==== | ||
+ | |||
+ | :!: Non presente in Debian 10 Buster. Obsoleto? | ||
Il tool non supporta SSL né TLS, inoltre **non effettua una sincronizzazione**, | Il tool non supporta SSL né TLS, inoltre **non effettua una sincronizzazione**, | ||
Line 89: | Line 340: | ||
Lanciare il comando con l' | Lanciare il comando con l' | ||
- | |||
- | ==== isync ==== | ||
- | |||
- | * Problemi con le cartelle che contengono spazi nel nome. | ||
- | * Esiste un modo di fare trasferimento ricorsivo di tutte le cartelle? Provare l' | ||
- | |||
- | ==== offlineimap ==== | ||
- | |||
- | ==== mailsync ==== | ||
- | |||
- | **Non supporta il formato Maildir** su filesystem locale. Il programma in effetti si appoggia sulla libreria **c-client** per accedere agli archivi di posta, in passato Debian includeva una patch per supportare Maildir, ma questa patch è stata rimossa (verificato in **libc-client2007e** di Debian Jessie). | ||
===== Quota ===== | ===== Quota ===== | ||
Line 142: | Line 382: | ||
</ | </ | ||
- | ====== ====== | + | ====== |
- | + | ||
- | ---- | + | |
- | < | + | La connessione cifrata STARTTLS si appoggia su [[authdaemon_problem]]. Per effettuare debug lato client si può usare Firefox attivando la **Console degli errori** dal menu **Strumenti**. Durante l'aggiornamento da Weezy a Jessie ad esempio si deve risolvere il problema del file '' |
doc/appunti/linux/sa/imap.txt · Last modified: 2024/03/21 12:56 by niccolo