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/14 18:23] – [offlineimap] niccolo | doc:appunti:linux:sa:imap [2024/03/20 17:48] – 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 | ||
+ | a5 LIST "" | ||
+ | </ | ||
+ | |||
+ | 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**, |
- | | + | |
- | | + | Pertanto, prima di iniziare la sincronizzazione, |
- | | + | |
- | --password1 | + | === 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] |
- | --subscribe \ | + | 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 186: | ||
[Account Test] | [Account Test] | ||
- | localrepository | + | remoterepository |
- | remoterepository | + | localrepository |
- | [Repository | + | [Repository |
- | type = Maildir | + | type = IMAP |
- | localfolders = / | + | # Strip the " |
- | # If the remote IMAP is a Lotus Domino, remove the **'' | + | # 'INBOX' |
- | #nametrans = lambda foldername: re.sub(' | + | # 'INBOX.Trash' => ' |
+ | # ' | ||
+ | nametrans = lambda foldername: re.sub(r'^INBOX\.', '', | ||
+ | remotehost = mail1.example.org | ||
+ | remoteuser = username1 | ||
+ | remotepass = MySecret1 | ||
+ | createfolders = False | ||
+ | sslcacertfile = / | ||
- | [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' | + | |
- | * La versione **6.5.4** ogni tanto va in loop (race condition). Occorre la versione | + | === Soluzione problemi === |
- | * Con la versione | + | |
+ | Vedere | ||
+ | |||
+ | |||
+ | ==== isync ==== | ||
+ | |||
+ | Consente la sincronizzazione di una **Maildir locale** con un server | ||
+ | |||
+ | * Errore | ||
+ | * FIXME Esiste | ||
+ | | ||
+ | * Lo stato della sincronizzazione viene scritto | ||
+ | |||
+ | === Uso diretto di mbsync === | ||
+ | |||
+ | Per il problema delle cartelle che contengono spazi nel nome, si lancia | ||
+ | |||
+ | < | ||
+ | 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 182: | Line 310: | ||
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 223: | Line 406: | ||
</ | </ | ||
- | ====== ====== | + | ====== |
- | + | ||
- | ---- | + | |
- | < | + | 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