doc:appunti:linux:sa:imap
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| doc:appunti:linux:sa:imap [2013/10/14 16:56] – [offlineimap] niccolo | doc: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 | ||
| + | </ | ||
| + | |||
| + | Some IMAP servers present all the folders as subfolders of the INBOX: | ||
| + | |||
| + | < | ||
| + | a3 LIST "" | ||
| + | * LIST (\HasNoChildren) | ||
| + | * LIST (\HasNoChildren) | ||
| + | * LIST (\HasNoChildren) | ||
| + | * LIST (\Marked \HasChildren) " | ||
| + | a4 CREATE INBOX.Archive | ||
| + | </ | ||
| + | |||
| + | For other IMAP servers, the folders are outside the INBOX: | ||
| + | |||
| + | < | ||
| + | a3 LIST "" | ||
| + | * LIST (\HasNoChildren) | ||
| + | * LIST (\HasNoChildren \Drafts) | ||
| + | * LIST (\HasNoChildren \UnMarked \Sent) " | ||
| + | * LIST (\HasNoChildren \Trash) | ||
| + | * LIST (\HasNoChildren) | ||
| + | a4 CREATE Archive | ||
| </ | </ | ||
| ===== Migrating IMAP folder ===== | ===== Migrating IMAP folder ===== | ||
| - | ==== imapsync | + | ==== offlineimap |
| - | To migrate an IMAP account from one host1 to host2, there is the **'' | + | Sincronizza una cartella su server **IMAP remoto** con una **Maildir locale** oppure un altro **server |
| - | <code bash> | + | **ATTENZIONE** :!: Le versioni **6.3.4** di Debian Wheezy e **6.5.4** hanno diversi bug. |
| - | #!/bin/sh | + | |
| - | login1=username_on_host1 | + | **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:// |
| - | passwd1=SecretOnHost1 | + | |
| - | login2=username_on_host2 | + | |
| - | passwd2=SecretOnHost2 | + | |
| - | ./imapsync \ | + | **ATTENZIONE** :!: Il programma effettua una sincronizzazione **bidirezionale**, |
| - | | + | |
| - | | + | **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 ulteriori. Vedere l' |
| - | --user1 " | + | |
| - | --password1 | + | 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**: |
| - | | + | |
| - | --subscribe \ | + | < |
| - | | + | [general] |
| + | accounts = Test | ||
| + | |||
| + | [Account Test] | ||
| + | remoterepository = RemoteIMAP | ||
| + | localrepository = Localhost | ||
| + | |||
| + | [Repository RemoteIMAP] | ||
| + | type = IMAP | ||
| + | # Strip the "INBOX" | ||
| + | # ' | ||
| + | # 'INBOX.Trash' => '.Trash' | ||
| + | # 'INBOX.Sent' | ||
| + | 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: | ||
| + | | ||
| </ | </ | ||
| - | FIXME Problema | + | Per vedere quale Certification Authority deve essere usata è necessario recuperare il certificato SSL dal server remoto, ad esempio |
| - | ==== imapcopy ==== | + | |
| - | Il tool non supporta SSL né TLS, inoltre **non effettua una sincronizzazione**, | + | < |
| + | openssl s_client -showcerts -connect mail.example.org: | ||
| + | </ | ||
| - | Si prepara un file di configurazione | + | Quindi si ispeziona la **certificate chain** alla ricerca |
| + | |||
| + | * O = Actalis S.p.A., CN = Actalis Organization Validated Server CA G3 | ||
| + | * O = Let's Encrypt, CN = R3 | ||
| + | |||
| + | Avendo installato il pacchetto | ||
| < | < | ||
| - | SourceServer host1 | + | [SSL: DH_KEY_TOO_SMALL] dh key too small (_ssl.c: |
| - | SourcePort 143 | + | |
| - | DestServer host2 | + | |
| - | DestPort 143 | + | |
| - | converttimezone " | + | |
| - | converttimezone " | + | |
| - | Copy " | + | |
| </ | </ | ||
| - | Lanciare | + | 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 |
| - | ==== isync ==== | + | Se si desidera utilizzare una connessione con STARTTLS su porta 143, è necessario aggiungere le opzioni '' |
| - | | + | Si esegue il programma in modalità |
| - | * FIXME Esiste un modo di fare trasferimento | + | |
| - | * 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 === | + | < |
| + | offlineimap --dry-run --info -c ./ | ||
| + | </ | ||
| - | Per il problema delle cartelle che contengono spazi nel nome, si lancia **'' | + | Nell'output |
| < | < | ||
| - | mbsync | + | ... |
| + | Remote repository ' | ||
| + | ... | ||
| + | Folderlist: | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | Local repository ' | ||
| + | Folderlist: | ||
| </ | </ | ||
| - | ==== offlineimap ==== | ||
| - | La versione **6.3.4** | + | Come si vede il server |
| - | Creare un file di configurazione **'' | + | * 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**: | ||
| < | < | ||
| Line 115: | Line 187: | ||
| [Account Test] | [Account Test] | ||
| - | localrepository | + | remoterepository |
| - | remoterepository | + | localrepository |
| - | [Repository | + | [Repository |
| - | type = Maildir | + | type = IMAP |
| - | localfolders | + | # Strip the " |
| + | # ' | ||
| + | # ' | ||
| + | # ' | ||
| + | nametrans = lambda foldername: re.sub(r' | ||
| + | remotehost = mail1.example.org | ||
| + | remoteuser = username1 | ||
| + | remotepass = MySecret1 | ||
| + | createfolders = False | ||
| + | sslcacertfile = /usr/share/ca-certificates/mozilla/DST_Root_CA_X3.crt | ||
| - | [Repository | + | [Repository |
| type = IMAP | type = IMAP | ||
| - | # Remote server is Courier-IMAP, | + | remotehost = mail2.example.org |
| - | nametrans = lambda foldername: re.sub(' | + | remoteuser = username2 |
| - | # Remote server is Lotus Domino, add an " | + | remotepass = MySecret2 |
| - | #nametrans = lambda foldername: ' | + | sslcacertfile = / |
| - | remotehost = mail.host1.it | + | |
| - | remoteuser = user1 | + | |
| - | remotepass = password1 | + | |
| </ | </ | ||
| - | quindi eseguire | + | Si esegue il programma in modalità **%%--info%%**: |
| < | < | ||
| - | offlineimap -1 -c offlineimap.conf -d imap, | + | offlineimap --dry-run --info -c ./ |
| + | </ | ||
| + | |||
| + | Verifichiamo l' | ||
| + | |||
| + | < | ||
| + | Remote repository ' | ||
| + | ... | ||
| + | Folderlist: | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | Local repository ' | ||
| + | ... | ||
| + | Folderlist: | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | |||
| + | 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 **'' | * Lo stato della sincronizzazione viene scritto in **'' | ||
| * La '' | * La '' | ||
| - | * L' | + | * Potrebbe essere necessario specificare l' |
| - | * L' | + | |
| - | * FIXME il **'' | + | === Soluzione problemi === |
| - | * FIXME Ogni tanto si blocca, bisogna fare un **'' | + | |
| - | | + | Vedere |
| + | |||
| + | |||
| + | ==== isync ==== | ||
| + | |||
| + | Consente la sincronizzazione di una **Maildir locale** con un server | ||
| + | |||
| + | * Errore | ||
| + | * FIXME Esiste un modo di fare trasferimento ricorsivo di tutte le cartelle? Provare l'opzione | ||
| + | | ||
| + | | ||
| + | |||
| + | === Uso diretto | ||
| + | |||
| + | Per il problema delle cartelle | ||
| + | |||
| + | < | ||
| + | mbsync --config mbsync.conf < | ||
| + | </ | ||
| ==== mailsync ==== | ==== 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). | **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 si sincronizza un server IMAP (remoto) con uno che gira in localhost: | + | Con questo file di configurazione |
| < | < | ||
| Line 181: | Line 311: | ||
| mailsync -v -d -di -dc -f mailsync.conf first-to-second | 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 ==== | ||
| + | |||
| + | :!: Non presente in Debian 10 Buster. Obsoleto? | ||
| + | |||
| + | To migrate an IMAP account from one host1 to host2, there is the **'' | ||
| + | |||
| + | <code bash> | ||
| + | #!/bin/sh | ||
| + | |||
| + | login1=username_on_host1 | ||
| + | passwd1=SecretOnHost1 | ||
| + | login2=username_on_host2 | ||
| + | passwd2=SecretOnHost2 | ||
| + | |||
| + | ./imapsync \ | ||
| + | --host1 83.145.162.149 \ | ||
| + | --authmech1 LOGIN \ | ||
| + | --user1 " | ||
| + | --password1 " | ||
| + | --subscribed \ | ||
| + | --host2 127.0.0.1 \ | ||
| + | --authmech2 LOGIN \ | ||
| + | --user2 " | ||
| + | --password2 " | ||
| + | --subscribe \ | ||
| + | --delete2 --expunge2 | ||
| + | </ | ||
| + | |||
| + | FIXME Problema con allegati con BODY vuoti: invece di saltare il messaggio il programma si blocca. | ||
| + | |||
| + | ==== imapcopy ==== | ||
| + | |||
| + | :!: Non presente in Debian 10 Buster. Obsoleto? | ||
| + | |||
| + | Il tool non supporta SSL né TLS, inoltre **non effettua una sincronizzazione**, | ||
| + | |||
| + | Si prepara un file di configurazione **'' | ||
| + | |||
| + | < | ||
| + | SourceServer host1 | ||
| + | SourcePort 143 | ||
| + | DestServer host2 | ||
| + | DestPort 143 | ||
| + | converttimezone " | ||
| + | converttimezone " | ||
| + | Copy " | ||
| + | </ | ||
| + | |||
| + | Lanciare il comando con l' | ||
| + | |||
| ===== Quota ===== | ===== Quota ===== | ||
| Line 222: | Line 407: | ||
| </ | </ | ||
| - | ====== ====== | + | ====== |
| - | + | ||
| - | ---- | + | |
| - | < | + | 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.1381762578.txt.gz · Last modified: by niccolo
