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 18:04] – [mailsync] niccolo | doc:appunti:linux:sa:imap [2024/03/08 17:18] – [offlineimap] niccolo | ||
---|---|---|---|
Line 45: | Line 45: | ||
===== 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 |
+ | |||
+ | Se si desidera utilizzare una connessione con STARTTLS su porta 143, è necessario aggiungere le opzioni '' | ||
+ | |||
+ | Si esegue il programma in modalità | ||
+ | |||
+ | < | ||
+ | offlineimap --dry-run --info -c ./ | ||
+ | </ | ||
+ | |||
+ | Nell'output si legge: | ||
+ | |||
+ | < | ||
+ | ... | ||
+ | Remote repository | ||
+ | ... | ||
+ | Folderlist: | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Local repository | ||
+ | Folderlist: | ||
+ | |||
+ | </ | ||
+ | |||
+ | Come si vede il server di origine, oltre alla cartella | ||
+ | |||
+ | * 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 | ||
+ | |||
+ | < | ||
+ | offlineimap --dry-run --info -c ./ | ||
+ | </ | ||
+ | |||
+ | Verifichiamo l' | ||
+ | |||
+ | < | ||
+ | Remote repository ' | ||
+ | ... | ||
+ | Folderlist: | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Local repository ' | ||
+ | ... | ||
+ | Folderlist: | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Si capisce | ||
+ | |||
+ | === 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 ==== | ==== isync ==== | ||
- | | + | Consente la sincronizzazione di una **Maildir locale** con un server |
- | | + | |
- | ==== offlineimap ==== | + | * 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 ==== | ==== 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 131: | Line 286: | ||
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 172: | 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