User Tools

Site Tools


doc:appunti:linux:sa:imap

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
doc:appunti:linux:sa:imap [2021/03/08 18:44] – [offlineimap] niccolodoc:appunti:linux:sa:imap [2024/03/21 12:56] (current) – [offlineimap] niccolo
Line 41: Line 41:
 a6 OK FETCH completed. a6 OK FETCH completed.
 a7 LOGOUT a7 LOGOUT
 +</code>
 +
 +Some IMAP servers present all the folders as subfolders of the INBOX:
 +
 +<code>
 +a3 LIST "" "*"
 +* LIST (\HasNoChildren)       "." "INBOX.Sent"
 +* LIST (\HasNoChildren)       "." "INBOX.Trash"
 +* LIST (\HasNoChildren)       "." "INBOX.Spam"
 +* LIST (\Marked \HasChildren) "." "INBOX"
 +a4 CREATE INBOX.Archive
 +</code>
 +
 +For other IMAP servers, the folders are outside the INBOX:
 +
 +<code>
 +a3 LIST "" "*"
 +* LIST (\HasNoChildren)                 "." Spam
 +* LIST (\HasNoChildren \Drafts)         "." Drafts
 +* LIST (\HasNoChildren \UnMarked \Sent) "." Sent
 +* LIST (\HasNoChildren \Trash)          "." Trash
 +* LIST (\HasNoChildren)                 "." INBOX
 +a4 CREATE Archive
 </code> </code>
  
Line 49: Line 72:
 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**, **interimap**, **imapsync** e **imapcopy**.. 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**, **interimap**, **imapsync** e **imapcopy**..
  
-La versione **6.3.4** di Debian Wheezy e **6.5.4** (attualmente in Sid) hanno diversi bug. Conviene prendere la versione 6.5.5-rc3 da GithubPer installarlo manualmente copiare offlineimap in **''/usr/local/bin/''** e la directory **''offlineimap/''** in **''/usr/local/lib/python2.7/dist-packages/''**.+**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://github.com/OfflineIMAP/offlineimap3/pull/80|#80]]). Un rimedio temporaneo è creare manualmente la cartella IMAP sul server ricevente. Esiste il pacchetto **offlineimap3_0.0~git20211018.e64c254+dfsg-1~bpo11+1_all.deb** in bullseye-backports. 
 + 
 +**ATTENZIONE** :!: Il programma effettua una sincronizzazione **bidirezionale**, ma noi siamo interessati alla migrazione di una mailbox da un server ad un altro, pertanto **la bidirezionalità è un rischio**. In caso di confusione sul nome delle cartelle tra i due repository e sullo stato dell'ultima sincronizzazione, c'è il **rischio concreto di eliminare i messaggi dal server di origine**.
  
-**ATTENZIONE** :!: Il programma offre una funzione di sincronizzazione **bidirezionale**, ma noi siamo interessati soprattutto alla migrazione da un server ad un altro, pertanto **la bidirezionalità è un rischio**In caso di confusione sul nome delle cartelle tra i due repository e sullo stato dell'ultima sincronizzazione, c'è il **rischio concreto di eliminare i messaggi dal server di origine**.+**ATTENZIONE** :!: La versione **8.0.0** (Debian GNU/Linux 12 Bookworm) non riesce a gestire correttamente la sincronizzazione con server Courier IMAP in presenza di sottocartelle di primo livello o ulterioriVedere l'**[[https://github.com/OfflineIMAP/offlineimap3/issues/188|issue #188]]**.
  
 Pertanto, prima di iniziare la sincronizzazione, è opportuno indagare quali cartelle sono presenti sul server di origine e **il loro percorso**. Inoltre, se si cambia il file di configurazione, è opportuno rimuovere tutti i file di stato che vengono salvati in **$HOME/.offlineimap/** relativi ad **%%Account-*%%** e **%%Repository-*%%**. Pertanto, prima di iniziare la sincronizzazione, è opportuno indagare quali cartelle sono presenti sul server di origine e **il loro percorso**. Inoltre, se si cambia il file di configurazione, è opportuno rimuovere tutti i file di stato che vengono salvati in **$HOME/.offlineimap/** relativi ad **%%Account-*%%** e **%%Repository-*%%**.
Line 78: Line 105:
 remotepass = MySecret remotepass = MySecret
 createfolders = False createfolders = False
-sslcacertfile = /usr/share/ca-certificates/mozilla/DST_Root_CA_X3.crt+sslcacertfile = /usr/share/ca-certificates/mozilla/Actalis_Authentication_Root_CA.crt 
 +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] [Repository Localhost]
Line 84: Line 115:
 localfolders = /home/username2/Maildir localfolders = /home/username2/Maildir
 </file> </file>
 +
 +Per impostazione predefinita offlineimap tenta una connessione **SSL** su porta **993/TCP**, verificando il certificato del server remoto. Senza l'opzione **sslcacertfile** il client offlineimap non è in grado di inziare la sessione TLS e si blocca con il seguente errore:
 +
 +<code>
 +offlineimap.error.OfflineImapError: No CA certificates and no server fingerprints configured.
 +    You must configure at least something, otherwise having SSL helps nothing.
 +</code>
 +
 +Per vedere quale Certification Authority deve essere usata è necessario recuperare il certificato SSL dal server remoto, ad esempio con il comando:
 +
 +<code>
 +openssl s_client -showcerts -connect mail.example.org:993
 +</code>
 +
 +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**, si cerca nella directory **/usr/share/ca-certificates/mozilla/** il certificato giusto da usare. Dopo aver abilitato SSL si può incappare anche nel seguente errore:
 +
 +<code>
 +[SSL: DH_KEY_TOO_SMALL] dh key too small (_ssl.c:727)
 +</code>
 +
 +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'opzione di configurazione ''ssl_version = tls1_2''.
 +
 +Se si desidera utilizzare una connessione con STARTTLS su porta 143, è necessario aggiungere le opzioni ''ssl = no'' e ''starttls = yes''.
  
 Si esegue il programma in modalità **%%--info%%**, senza alcun trasferimento di messaggi: Si esegue il programma in modalità **%%--info%%**, senza alcun trasferimento di messaggi:
Line 141: Line 200:
 remoteuser = username1 remoteuser = username1
 remotepass = MySecret1 remotepass = MySecret1
 +createfolders = False
 sslcacertfile = /usr/share/ca-certificates/mozilla/DST_Root_CA_X3.crt sslcacertfile = /usr/share/ca-certificates/mozilla/DST_Root_CA_X3.crt
  
Line 181: Line 241:
 Si capisce che i due server IMAP utilizzano una struttura diversa: il primo ha il prefisso ''INBOX.'' per ogni sottocartella, mentre il secondo no. Anche in questo caso è stato necessario utilizzare l'opzione **nametrans** con una opportuna **re.sub()** leggermente diversa dall'esempio #1. Si verifica comunque che il nome ''INBOX'' non viene trasformato, mentre per le sottocartelle avviene la corretta trasformazione che consiste semplicememte nel rimuovere il prefisso ''INBOX.'', compreso il punto. Si capisce che i due server IMAP utilizzano una struttura diversa: il primo ha il prefisso ''INBOX.'' per ogni sottocartella, mentre il secondo no. Anche in questo caso è stato necessario utilizzare l'opzione **nametrans** con una opportuna **re.sub()** leggermente diversa dall'esempio #1. Si verifica comunque che il nome ''INBOX'' non viene trasformato, mentre per le sottocartelle avviene la corretta trasformazione che consiste semplicememte nel rimuovere il prefisso ''INBOX.'', compreso il punto.
  
-=== Altro ===+=== Sincronizzazione ===
  
-Creare un file di configurazione **''offlineimap.conf''** di questo tipo: +La sincronizzazione avviene semplicemente eseguendo il comando con l'opportuno file di configurazione. In questo esempio si esegue un thread singolo (opzione **%%-1%%**) e si scrive nel file di log (opzione **%%-l%%**) il debug del protocollo imap e maildir (opzione **%%-d%%**):
- +
-<file> +
-[general] +
-accounts = Test +
- +
-[Account Test] +
-localrepository = Local +
-remoterepository = Remote +
- +
-[Repository Local] +
-type = Maildir +
-localfolders = /home/user1/Maildir +
-# If the remote IMAP is a Lotus Domino, remove the **''.''** prefix when syncing back. +
-#nametrans = lambda foldername: re.sub('^\.*', '', foldername) +
- +
-[Repository Remote] +
-type = IMAP +
-# Remote server is Courier-IMAP, strip the "INBOX" prefix when copying locally. +
-nametrans = lambda foldername: re.sub('^INBOX\.*', '.', foldername) +
-# Remote server is Lotus Domino, add an "." prefix when copying locally. +
-#nametrans = lambda foldername'.' + foldername +
-remotehost = mail.host1.it +
-remoteuser = user1 +
-remotepass = password1 +
-</file> +
- +
- +
- +
-quindi eseguire+
  
 <code> <code>
-offlineimap -1 -c offlineimap.conf -d imap,maildir -l offlineimap.log+offlineimap -1 -c offlineimap-imap-imap.conf -d imap,maildir -l offlineimap.log
 </code> </code>
  
   * Lo stato della sincronizzazione viene scritto in **''$HOME/.offlineimap/''**   * Lo stato della sincronizzazione viene scritto in **''$HOME/.offlineimap/''**
   * La ''Maildir'' locale può essere anche vuota, viene riempita opportunamente.   * La ''Maildir'' locale può essere anche vuota, viene riempita opportunamente.
-  * L'opzione **''nametrans''** serve ad evitare che nella Maildir locale ogni cartella abbia un prefisso **''INBOX''** (server remoto Courier-IMAP). +  * Potrebbe essere necessario specificare l'opzione **''nametrans''** per entrambi i repository, in modo che la sincronizzazione bidirezionale crei le giuste cartelle sul server remoto, ma noi abbiamo preferito utilizzare l'opzione ''createfolders = False'' in modo che non vi sia propagazione di cartelle verso il server origine
-  * L'opzione **''nametrans''** può servire anche ad aggiungere il prefisso **''.''** nelle cartelle locali quando il server remoto non lo ha (server remoto Lotus Domino). In questo caso ci deve essere un **''nametrans''** corrispondente nella configurazione locale: quando si sincronizza da locale a remoto il prefisso **''.''** deve essere tolto+ 
-  La versione **6.5.4** ogni tanto va in loop (race condition). Occorre la versione **6.5.5**. +=== Soluzione problemi === 
-  * Con la versione **6.5.4** i messaggi importati hanno **mode 0755**, usare la versione **6.5.5**.+ 
 +Vedere **[[offlineimap3]]**. 
  
 ==== isync ==== ==== isync ====
doc/appunti/linux/sa/imap.1615225445.txt.gz · Last modified: 2021/03/08 18:44 by niccolo