Client di posta IMAP. Scaricare tutti i messaggi sul PC.

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3040
Iscritto il: ven apr 27, 2007 11:21
Slackware: 14.2
Kernel: 4.4.38
Desktop: KDE-4.14.21

Client di posta IMAP. Scaricare tutti i messaggi sul PC.

Messaggioda joe » ven mag 24, 2019 19:27

Ciao a tutti, in altro post avevo chiesto un consiglio su vari client di posta da usare sotto windows.
Nel frattempo ne ho provati due, ma non sono molto pratico dell'utilizzo della mail in protocollo IMAP, cioè avendo sempre usato per lo più POP e poi webmail, volevo chiedervi due cose...

Da quel poco che ho capito i client collegati a server imap scaricano solo le intestazioni dei messaggi e sincronizzano l'albero delle directory e sottocartelle locali con quelle remote.
Questo implica che se io devo aprire un messaggio dal client, questo si deve collegare richiedere l'apertura del messaggio ed infine anche scaricarlo.
Pensavo...
Sì che al giorno d'oggi le connessioni ad internet non sono male per transazioni di dati di questo genere, ma non sarebbe più conveniente:
- scaricare l'albero della casella di posta IMAP in locale e scaricare in locale anche tutti i messaggi, non solo le intestazioni. (un po' come si fà via pop ma preservando appunto l'albero che si trova sul server remoto).
- lavorare in locale, quindi leggere, spostare e cancellare messaggi, creare bozze ecc, senza bisogno della connessione ad internet (se non per l'invio verso SMTP)
- ed infine ri-sincronizzare il server remoto con l'albero della casella locale

Tra l'altro una soluzione del genere mi sembra anche piuttosto facile da salvare con un backup locale ecc...

Cosa ne dite?
Sto perdendo di vista il senso dell'imap oppure la cosa un senso ce l'ha?
Questo meccanismo come si potrebbe mettere in piedi sotto windows?
È una funzionalità da attivare nei client di posta che supportano imap, oppure consigliate qualche altra configurazione migliore?

Gli utenti che hanno accesso al PC fino ad oggi usavano windows live mail 2011 impostato cia IMAP appunto, ma è un carrozzone spaventoso.
Il fatto da preservare è la possibilità di ritrovarsi l'albero della casella di posta così come lo hanno sempre visto e rimaneggiato nel tempo, e così come lo ritrovano anche sulla webmail di Gmail.

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3040
Iscritto il: ven apr 27, 2007 11:21
Slackware: 14.2
Kernel: 4.4.38
Desktop: KDE-4.14.21

Re: Client di posta IMAP. Scaricare tutti i messaggi sul PC.

Messaggioda joe » lun mag 27, 2019 11:56

Ho trovato una soluzione che potrebbe essere interessante chiamato isync:
http://isync.sourceforge.net/
https://wiki.archlinux.org/index.php/Isync
https://www.youtube.com/watch?v=tR9zk3xz5SA

Non l'ho ancora approfondito, ho capito come funziona in ricezione messaggi, o meglio come funziona la sincronizzazione dell'host remoto verso l'host locale... Ma non mi è chiaro cosa accade se modifico la directory locale, ad esempio creo sottocartelle, bozze ecc ecc. Queste nuove modifiche locali saranno sincronizzate anche nell'altro senso verso il server IMAP? Probabilmente sì, ma devo leggermi meglio la documentazione.

Per sintetizzare la configurazione sarebbe la seguente:
- la sessione IMAP si affida ad "isync" che si occupa di sincronizzare una directory locale con l'albero della casella di posta sul server remoto
- il client di posta sarà impostato per puntare alla directory locale, quindi niente imap, pop ecc... L'unico compito "online" che il client dovrà ancora svolgere sarà l'invio dei messaggi collegandosi al server SMTP. Volendo, anche in questo caso si potrebbe cercare qualche alternativa per demandare il compito ad uno strumento apposito, come ad esempio msmtp (https://marlam.de/msmtp/), solo che servirebbe qualcosa che giri anche su windows, msmtp mi sa che funge solo sul pinguino. In questo modo

Un altro programma simile che ho trovato è imapsync:
http://imapsync.lamiral.info/doc/TUTORIAL_Unix.html

Però se non ho capito male prevede la presenza di due server IMAP che vengono sincronizzati, quindi non un server imap remoto e una directory locale.
Se le cosa stanno così la configurazione da mettere in piedi sarebbe quella di far girare un server imap locale da tenere sincronizzato con quello remoto che riceve direttamente la posta.
Il client di posta verrà puntato al server imap che gira in locale, mentre imapsync si occupa di tenerlo sincronizzato con quello remoto (anche qui non ho ben capito come avviene la sincronizzazione nei due sensi).
Ad ogni modo mi sembra una soluzione più complicata. Anche lo scopo de tool sembra sia diverso, ossia si vuole sincronizzare un server IMAP che si sta utilizzando con un secondo server IMAP che si ha intenzione di utilizzare in futuro. In pratica lo strumento viene incontro a chi deve migrare una casella da un server ad un altro, magari perchè si dismette il primo per passare al secondo. Insomma non credo sia pensato per un utilizzo di tutti i giorni.

PS.
Nel frattempo ho testato il funzionamento di sylpheed puntandolo direttamente alla casella IMAP remota.
Si riescono a scaricare i nuovi messaggi in una cache locale, comprensivi di corpo del testo, però non capisco se vengono scaricati tutti o solo quelli presenti nella directory cliccata col tasto destro, senza includere quelli delle sottocartelle.
Una volta scaricati tutti i messaggi bisogna cliccare "lavora offline", altrimenti viene coinvolta la connessione al server remoto ogni volta che si tenta di aprire un messaggio ecc...
E questo per molti utenti è un dettaglio che non porta problema, per altri utenti molto molto base e confusionari è un dettaglio che non ricordano o che fà confusione...
Insomma alla fine il client può lavorare offline sfruttando la rapidità dell'accesso ai messaggi e alle directory scaricate in locale, ma per farlo occorre una procedura che prevede una serie di click non troppo comoda. L'utente medio tende ad utilizzarlo come lo trova, cioè nella modalità online e pertanto osserva una certa lentezza dovuta alla trasmissione dati attraverso la rete internet per raggiungere il server remoto.

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3040
Iscritto il: ven apr 27, 2007 11:21
Slackware: 14.2
Kernel: 4.4.38
Desktop: KDE-4.14.21

Re: Client di posta IMAP. Scaricare tutti i messaggi sul PC.

Messaggioda joe » gio mag 30, 2019 0:29

Ho provato una configurazione del tipo:
- mbsync (eseguibile compreso in isync) per scaricare e sincronizzare via imap l'albero della casella locale con quello del server IMAP remoto.
- clawsmail, e altri client grafici tipo anche sylpheed, tuhnderbird ecc per accedere alla casella locale

Problema:
mbsync crea la casella locale in formato "maildir", ma i client di posta testati non supportano questo tipo di formato (sì va bè, clawsmail dovrebbe avere un plugin per lo scopo, che però non è più mantenuto e non mi sono sbattuto troppo per capire come aggiungerlo...).
Da quanto ho letto questi client grafici supportano bene per la casella di posta locale il formato "MH".

Soluzione testata:
un ulteriore script che copia la directory scaricata e la converte da formato maildir a formato MH. Ne ho trovato uno in Perl:

http://www.theory.bham.ac.uk/staff/scho ... ldir2mh.pl

Certo non è la panacea, in particolare è troppo rigido, a me serve una cosa più automatica, lì si devono specificare le subdir dell'albero della casella di posta... ma è comunque un punto di partenza ottimo come spunto.

In questo modo la directory locale così ottenuta può essere accessibile sia con claws-mail che con sylpheed che lavorano bene col formato MH.
Almeno per la lettura dei messaggi non ci sono problemi. Unica pecca è l'aggiunta da parte di entrambi i client di alcune directory in più, directory solo interne al client comunque, del tipo "posta in arrivo" "trash" "inviata", che non servono perchè già la struttura dell'albero ottenuto via imap contiene le sue directory trash spam inbox sent draft ecc ecc. Ad ogni modo quelle create dal client non danno troppo fastidio... insomma un po' sì ma pazienza.

Il problema può essere l'usabilità... per 2 motivi:
1.
Quando invio una mail il messaggio inviato voglio che vada nella directory "sent", ma non quella aggiunta dal client, bensì quella presente nella mia casella locale. Probabilmente questo si riesce ad ottenere con qualche filtro interno al client forse.
2.
Se voglio mantenere l'approccio IMAP, ovvero tutte le modifiche apportate alla casella locale dovrebbero poi ritrovarsi su quella remota, come se accedessi al server IMAP in modalità "online"... bè c'è da considerare che per la sincronizzazione della directory remota a partire da quella locale bisogna ripercorrere i passaggi a ritroso.
In pratica si dovrà riconvertire la casella in formato MH sulla quale si lavora col client, in formato maildir e copiarla nella directory impostata in isync, in modo che facendolo girare nuovamente digerisca senza problemi il "suo" formato maildir, e le modifiche locali vengano apportate anche al server remoto.
Questo passaggio però mi lascia qualche dubbio, soprattutto perchè nelle impostazioni di mbsync si configura un:

Codice: Seleziona tutto

Channel casella
Master :casella-remote:
Slave :casella-local:

Non vorrei che la sincronizzazione funzionasse solo in un senso e basta... devo rileggere la documentazione di mbsync...

Detto questo inutile dire che almeno dal punto di vista dell'utilizzo in lettura della casella di posta locale così ottenuta èl veramente agevole e di gran lunga più comoda e veloce rispetto al collegamento imap online.

Vi aggiornerò sugli sviluppi.
Certo, c'è da riflettere sul fatto che non ci sia, o non sia così facile trovare (o perlomeno... io non ne ho trovato...) un client di posta che si limiti ad accedere ad una casella di posta locale sia essa in formato mbox maildir o MH senza aggiungere altre trovate di suo, quindi senza aggiungere altre sotto directory ecc.
Ok, ci sono programmi come mutt, neomutt e similari, ma soluzioni grafiche non ne vedo. Strano perché una volta configurati i vari pezzi, poi dal client MUA sarebbe molto più semplice anche l'impostazione, dovrebbe fare meno cose e sarebbe quindi più snello e rapido... Insomma, strano che qualcuno no abbia pensato ad una soluzione del genere, boh, magari sono io che sbaglio e non tengo conto di altri aspetti...

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3040
Iscritto il: ven apr 27, 2007 11:21
Slackware: 14.2
Kernel: 4.4.38
Desktop: KDE-4.14.21

Re: Client di posta IMAP. Scaricare tutti i messaggi sul PC.

Messaggioda joe » gio mag 30, 2019 0:39

Da quanto leggo nella documentazione di mbsync la sincronizzazione per default funziona nei due sensi, se non ho inteso male. Quindi creando una directory o spostando dei messaggi nella casella in locale, quando in seguito si fa girare mbsync, questo propagherà le modifiche dallla casella locale "slave" a quella remota "master", ovviamente tutto via IMAP.

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3040
Iscritto il: ven apr 27, 2007 11:21
Slackware: 14.2
Kernel: 4.4.38
Desktop: KDE-4.14.21

Re: Client di posta IMAP. Scaricare tutti i messaggi sul PC.

Messaggioda joe » lun giu 17, 2019 9:54

Ho messo in piedi una configurazione un po' diversa.

- isync/mbsync scarica e carica le varie directory imap sincronizzando la situazione tra server remoto e directory locale nei due sensi.
- la directory della posta locale (in formato maildir, perché isync la crea così...) viene utilizzata da dovecot come maildir da "servire" ai client che vi si connettono dall'host locale via IMAP
- I client locali vengono configurati usando come indirizzo del server mail per la posta in ingresso il localhost sulla porta su cui sta in ascolto dovecot e specificando il tipo di server IMAP ovviamente
- per la posta in uscita ho invece affidato al client la sessione SMTP direttamente verso il server remoto
- i messaggi inviati in claws-mail non ho ben capito dove vadano a finire, perchè in Sent non ci sono...

Ho testato la cosa con un account "gmx punto com" e claws-mail, e funziona abbastanza.
Nella prova che ho fatto purtroppo la maildir locale viene "sporcata" con una nuova subdir chiamata "queue" e presumibilmente utilizzata per accodare temporaneamente i messaggi in uscita. Però una subdir "Queue" prefissa per lo scopo, nella mia maildir c'era già... Evidentemente claws-mail vuole la sua con la q minuscola...

Alla fine la configurazione non è stata banale, ho dovuto leggere un po' di documentazione e cercare in rete, ho chiesto anche su LQ dove mi hanno dato questo spunto.
Metto qua sotto la configurazione che ho messo in piedi ora con lo scopo di accedere al server locale IMAP da utente semplice con le credenziali di sistema, cioè user e password con cui eseguo il login sul sistema locale slackware:

Codice: Seleziona tutto

~/.mbsyncrc

Codice: Seleziona tutto

IMAPStore gmx-remote
Host imap.gmx.com
Port 993
User pippo@gmx.invalid
Pass 012345689aBcD
SSLType IMAPS
CertificateFile /etc/ssl/certs/ca-certificates.crt

MaildirStore gmx-local
Path ~/mail/gmx/
Inbox ~/mail/gmx/INBOX
Subfolders Verbatim

Channel gmx
Master :gmx-remote:
Slave  :gmx-local:
Create Both
Expunge Both
Patterns *
SyncState *

Codice: Seleziona tutto

/etc/dovecot/dovecot.conf

Codice: Seleziona tutto

mail_location = maildir:~/mail/gmx:LAYOUT=fs:INBOX=~/mail/gmx/INBOX
protocols = imap
passdb {
  driver = shadow
}
userdb {
  driver = passwd
}
service auth {
  user = root
}

Dovecot installato via SBo in versione 2.3.4.