[RISOLTO] Gmail e autenticazione app unixlike

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.
Rispondi
Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3797
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

[RISOLTO] Gmail e autenticazione app unixlike

Messaggio da joe »

Sto cercando informazioni ed ispirazione sull'utilizzo di GMail con client unix-like tipo mutt, fetchmail o similari, quindi applicazioni che lavorino anche in modo indipendente da un grosso client famoso tipo thunderbird tanto per capirci.

Tra i vari problemi che sembrano essere spuntati nel tempo c'è la richiesta da parte di Google di modalità sempre più stringenti riguardo l'autenticazione: con l'intenzione dichiarata di maggiore protezione e sicurezza delle nostre "chiavi" della casella email, account e altri servizi del suo ecosistema big G richiede ad esempio un contatto telefonico su cui basare ad esempio l'autenticazione a doppio passaggio ecc...

Al momento sto usando da molti mesi (mi sa che sono anni ormai) Mailspring.
All'inizio sembrava ottimo, funzionava discretamente, anche se un po' pesante per i miei gusti, però aveva il vantaggio di lavorare bene con Gmail, visualizzando correttamente l'organizzazione delle directory/etichette così come sono pensate da Google. In pratica è come usare gmail dal browser via webmail, ma senza aprire il browser.
Ultimamente però mi sono ritrovato sempre più a che fare con un'applicazione un po' troppo farraginosa, che ogni tanto crasha (anche se non del tutto, basta aspettare un secolo e poi si riprende).
Avevo persino pensato di compilarla da sorgenti. Poi sembra che servisse mezzo mondo di roba e un'astronave per farne un pacchetto e alla fine avevo lasciato perdere, vado a memoria e posso sbagliarmi, magari è più semplice di quanto ricordi ora...

Volevo provare a passare ad una soluzione più unix-like e riprovare mutt, o magari neomutt.
Ma allo stesso tempo vorrei tentare una strada un po' più estrema, ovvero utilizzare un sistema di scaricamento dei messaggi indipendente e istruire poi neomutt a gestire la directory delle mail in locale. In questo modo si dovrebbe massimizzare la rapidità delle azioni senza scomodare internet nella fase interattiva, e di tanto in tanto si sincronizza la mail locale con il server remoto via imap.
Per lo scopo esiste il progetto "isync"... ne avevo parlato anni fa in altro post ma alla fine non avevo utilizzato quella soluzione in concreto oltre il test su account diversi da gmail.

Eviterei soluzioni tipo il vecchio POP, per mantenere tanto in locale come in accesso da web o via imap con altri client la stessa struttura delle varie maildir/label di Gmail.

Qual è il punto?
L'autenticazione.

Sembra che serva un consulente per gestire l'autenticazione a gmail con un cliente che loro considerano "esotico" e potenzialemnte pericoloso per la sicurezza.

Io mi sono letto un po' di roba, ma senza capirci troppo e non in modo convintissimo insomma. Avrei bisogno di una conferma per esperienza personale, anche solo per supporto "morale". ;)
In pratica prima si potevano abilitare le applicazioni "meno sicure", adesso invece sembra che non sia più possibile.

In sintesi: qualcuno qui usa mutt o ancor meglio isync, ma anche msmtp e simili client con Gmail?
Come gestite l'autenticazione?

Grazie in anticipo e scusate se l'ho fatta lunga come sempre... :D
Ultima modifica di joe il mer 29 nov 2023, 12:53, modificato 1 volta in totale.

Avatar utente
conraid
Staff
Staff
Messaggi: 13630
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Gmail e autenticazione app unixlike

Messaggio da conraid »

Devi creare un app password
https://support.google.com/mail/answer/185833?hl=it
Io ci uso in questo modo neomutt e altri. Per il sync in locale puoi provare offlineimap, lo usavo anni fa ma sinceramente non so dirti se è rimasto al passo dei cambiamenti.

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3797
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: Gmail e autenticazione app unixlike

Messaggio da joe »

Ma l'app password richiede l'autenticazione in due passaggi:
App passwords can only be used with accounts that have 2-Step Verification turned on.

Nel tuo caso come hai gestito questo aspetto?
Hai attivato la verifica in due passaggi dando il numero di telefono a Gmail o come?
Ultima modifica di joe il ven 24 nov 2023, 11:55, modificato 1 volta in totale.

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3797
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: Gmail e autenticazione app unixlike

Messaggio da joe »

Ieri sera stavo valutando questo wizard semi-automatico per configurare un po' tutta la baracca:
https://github.com/LukeSmithxyz/mutt-wizard

Però in fondo ci sono delle avvertenze che credo non siano corrette... se il mio inglese non m'inganna, lì direbbe che per abilitare applicazioni di terze parti (come in questo caso direi "isync" e "msmtp") sarebbe richiesto di DISATTIVARE l'autenticazione a due fattori, mentre sul link di google dice proprio il contrario. Ma forse non ho ben capito io.
Watch out for these things

Gmail accounts need to create an App Password to use with "less secure" applications. This password is single-use (i.e. for setup) and will be stored and encrypted locally. Enabling third-party applications requires turning off two-factor authentication and this will circumvent that. You might also need to manually "Enable IMAP" in the settings.
Voi come la vedete?

Io cercando avevo trovato anche la possibilità di autenticarsi in un altro modo, ma sempre arzigogolato utilizzando "OAuth2"...
Però ho chiesto prima proprio perché è piuttosto complicato da quel poco che ho letto.

Avatar utente
conraid
Staff
Staff
Messaggi: 13630
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Gmail e autenticazione app unixlike

Messaggio da conraid »

Io ho autenticazione a due fattori e app password. Come ho gestito? non ricordo sinceramente, son passati anni, ma se l'ho fatta io fidati che è semplice :) Però sì, ho sia telefono sia google authenticator.

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3797
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: Gmail e autenticazione app unixlike

Messaggio da joe »

Ecco ok, allora no... io volevo evitare appunto l'autenticazione a due fattori.
Che poi non so neanche come funziona nella pratica, ma se ti arriva un SMS sul telefono ogni volta che scarichi le mail non fa per me... sicuramente non funzionerà così, ci sarà un sistema più furbo che convalida la tua identità ogni tot sessioni o roba simile. Tu saprai eventualmente dire qualcosa in più su come funziona nella pratica.

Ad ogni modo a me sta molto sullo stomaco dare a Google il mio numero di telefono per fare una cosa che si è sempre fatta da più di 20 anni senza doverlo fornire. Quindi non è solo un discorso di comodità ma anche diciamolo pure una faccenda ideologica. Poi mi direte che basta avere uno smartphone android per aver fornito a big G anche le mutande della moglie ma quello è un altro discorso... io posso avere enne account gmail e associarne uno al mio dispositivo android, ma voglio (se in qualche modo è ancora possibile) continuare ad usare gli altri enne meno uno come ai bei vecchi tempi.

D'altro canto in qualche modo è possibile perché via webmail ad esempio riesco tranquillamente a loggarmi in tutti gli account gmail.
Per di più anche Mailspring nel setup mi fa eseguire il login via web aprendo il browser e una volta fatto scarica, invia e lavora via IMAP senza dover più reinserire ogni volta la password.

Perché mai mutt o neomutt o isync o msmtp o altre applicazioni dovrebbero richiedere l'appoggio ad un numero di telefono con autenticazione a due fattori? Ci dev'essere il "workaround"...

Prima non l'ho scritto per non influenzare le risposte, visto che non ci ho capito proprio benissimo... ma avevo selezionato alcuni segnalibri tra cui il seguente che tra le altre cose dice:

So anyone who's been using passwords and the "Less Secure Apps" setting to talk to gmail's SMTP server will need to switch to the XOAuth2 authentication mechanism instead. (App passwords apparently also work as long as you have 2-step verification turned on, though Google recommends against using them.)


Se ho ben capito si tratta di un meccanismo "a gettoni", e serve un'applicazione che sia in grado di reperire da google questi "token" per poterli poi riutilizzare nell'autenticazione di mutt o come vorrei fare io, di isync e msmtp. La cosa a livello di configurazione di questi tool è abbastanza semplice, si imposta una direttiva "PassCmd" e si indica il comando shell per presentare la password al server di google.
Il problema è che non basta presentare la nostra password ma qualcosa di ottenuto appunto via a valle di tutto l'ambardan OAuth2.

Avevo chiesto qui sperando di trovare come sempre la pappa pronta, probabilmente la via 2-factor è più semplice, ma vedrò di fare qualche tentativo prima di arrendermi.

Avatar utente
conraid
Staff
Staff
Messaggi: 13630
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Gmail e autenticazione app unixlike

Messaggio da conraid »

Ma no, io leggo senza doppia autenticazione, al limite è solo la prima volta. Stessa cosa su thunderbird eh. Le app richiedono solo la password per l'app, per l'autenticazione a 2 fattori ora non ricordo, ma al limite è solo la prima volta.

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3797
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: Gmail e autenticazione app unixlike

Messaggio da joe »

Si infatti, immaginavo...

Se caverò un ragno dal buco via OAuth2 farò sapere. Per ora grazie delle risposte! :)

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3797
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: Gmail e autenticazione app unixlike

Messaggio da joe »

Eccolo il ragno... ;)

Il link che avevo postato sopra spiega in modo corretto come registrare un'arbitraria applicazione "di fantasia" su google.
Ho provato e la parte più ostica, ma basta seguire le indicazioni... è stata ravanare tra le google apis per attivare il "consent screen" le apis stesse ecc.. non mi dilungo qui perché è spiegato nel link... poi magari faccio un riassunto quando ho testato e impostato il tutto in modo pi completo.

Per fare una sintesi del test eseguito:
- attivare tutto quanto via web dall'interfaccia di google, entrando con l'account di cui si vuole accedere alla mail;
- alla fine si scarica un file .json con i client_id e secret_id
- questi si copiano in altro file json prendendo spunto da: https://github.com/getmail6/getmail6/bl ... mples#L317

Codice: Seleziona tutto

# {"scope": "https://mail.google.com/",
#  "user": "your-gmail-user@gmail.com",
#  "client_id": "the new client id",
#  "client_secret": "the new secret",
#  "token_uri": "https://accounts.google.com/o/oauth2/token",
#  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
#  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs"}
- quest'ultimo file json si dà in pasto al tool "getmail-gmail-xoauth-tokens --init file.json":
https://github.com/getmail6/getmail6/bl ... uth-tokens

- si ottiene in output l'URL a cui collegarsi da browser per attivare l'autenticazione. Credo sia la stessa operazione che viene fatta da Mailspring e altri mail client per registrare la prima autenticazione su Gmail da quell'applicazione.

- ci si collega quindi all'url copiaincollandolo nel browser e si seleziona "continua" finché dice "Your json file is updated".

- a questo punto il file json che avevamo dato in pasto va conservato e viene riutilizzato come argomento sempre dello stesso script in fase di autenticazione:
"getmail-gmail-xoauth-tokens file.json"

- Questo è il comando che dovremo impostare in mutt, msmtp, isync o chi altro dovrà effettuare l'accesso a gmail.
In pratica ecco perché l'applicazione registrata l'ho chiamata "di fantasia": una volta ottenuti i gettoni tokens si possono poi utilizzare e riutilizzare con svariati tools.

Io ho testato con msmtp e il messaggio di test viene inviato senza problemi. Incollo a futura memoria un estratto del mio file di configurazione msmtp.conf per testare la fazenda.

Codice: Seleziona tutto

account example
host smtp.gmail.com
port 587
protocol smtp
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
auth oauthbearer
from example@gmail.com
user example@gmail.com
passwordeval /path/to/getmail-gmail-xoauth-tokens /path/to/updatedfile.json
OK, poi per l'autenticazione ogni programma ha la propria impostazione, per isync ad esempio dovrebbe essere una cosa del tipo:

Codice: Seleziona tutto

PassCmd /path/to/getmail-gmail-xoauth-tokens /path/to/updatedfile.json
Idem per mutt se lo si usasse diretto via imap remoto, scopiazzando da https://www.redhat.com/sysadmin/mutt-email-oauth2:

Codice: Seleziona tutto

imap_authenticators="oauthbearer:xoauth2"
 set imap_oauth_refresh_command="/path/to/getmail-gmail-xoauth-tokens  /path/to/updatedfile.json"
 set smtp_authenticators=${imap_authenticators}
 set smtp_oauth_refresh_command=${imap_oauth_refresh_command}
Ad ogni modo direi che ci sono buone probabilità di riuscire a configurare il tutto (quindi non solo msmtp) anche senza l'autenticazione a 2 fattori, quindi senza fornire il numero di telefono a big G... certo per i nuovi account mi sa che sia impossibile non fornirlo, a prescindere dal tipo di autenticazione.

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3797
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: Gmail e autenticazione app unixlike

Messaggio da joe »

Aggiorno un attimo la situazione.

Allora, l'autenticazione funziona: mbsync (il comando per sincronizzare la maildir locale con quella remota da Imap di GMail) riesce ad autenticarsi proprio grazie alla direttiva "PassCmd" che avevo ipotizzato nel messaggio precedente, richiamando lo script getmail-gmail-xoauth-tokens" e il file JSON che contiene Client ID ecc ricavati manualmente in precedenza dal sito di gestione nuove app di GMail.

Pertanto potremmo mettere un RISOLTO al titolo della discussione. Anzi ora vado ad inserirlo.

La storia però non finisce qui, perché sì, la maildir locale viene regolarmente popolata, si riesce anche a mantenerla aderente a quella remota, come se si lavorasse da webmail in pratica (ora, potrebbe esserci qualche modifica indesiderata che però per il momento non ho notato... magari con l'uso poi potrebbe saltar fuori qualche anomalia). Tuttavia devo essere sincero... Mutt, mi risulta scomodissimo.

Già anni addietro avevo tentato di piegarlo ad un funzionamento più semplice (forse meno efficiente, potrebbe anche essere per alcuni...) attraverso varie macro che ora non ricordo più assolutamente come funzionavano... ma ricordo che comportavano dei problemini, in pratica avevo messo insieme un po' un accrocchio funzionicchiante, che non mi pare il caso di andare a ripescare.

In quell'occasione avevo preso spunto dal funzioamento di TIN Newsreader (http://www.tin.org/) il glorioso newsreader che si governa con (che fantasia eh...) le freccine destra sinistra alto basso...

Adesso provando Neomutt ho dovuto faticare non poco per ottenere una schermata simile a quella della pagina web di GMail.
Quindi, una barra laterale a sinistra in cui appaiono le varie maildir nominate esattamente come sono nominate quelle della webmail di GMail.
Nella schermata centrale in modalità "Index" vorrei anche lì mantenere la lista dei messaggi presenti nella maildir corrente, e questo lo fa di default (poi va be' l'ordinamento si può scegliere come più aggrada.. io vorrei tenere i messaggi più recenti in alto, ma se un certo nuovo messaggio appartiene ad un botta e risposta già iniziato, vorrei anche che aprendo quel messaggio apparisse l'intero "tread" con le varie ramificazioni, e coi messaggi più recenti in basso.
Che poi alla fine è più o meno l'organizzazione dei messaggi che si ha sulla webmail di GMail.

A parte poi la visualizzazione... la grande scomodità che ho riscontrato risiede nella più banale navigazione.
Possibile che non si possa ad esempio muoversi nella "sidebar" selezionando una maildir diversa dalla corrente in modo intuitivo?
Esempio:
- premo TAB per lavorare nella Sidebar
- con le frecce su e giù seleziono la maildir che voglio aprire (in cui mi voglio spostare insomma)
- con invio la apro, e nella schermata a destra appaiono i messaggi della maildir selezionata, in modalità "index" insomma.

Mi pare una modalità di una banalità estrema. Facile e che non richiede neanche il manuale...
Per fare una cosa del genere ho dovuto aggiungere un config un keybindig (Ctrl + j , k , l) per spostarmi e giù e su tra le maildir della sidebar e ctrl+l per entrare nella maildir selezionata. È troppo scomodo...
Ho provato a semplificare un minimo scegliendo come tasti le frecce (Ctrl+ giù , su, dx) ma per qualche santo non funzionano, da quel che ho capito potrebbe dipendere dal terminale e come intercetta i segnali della tastiera, insomma una roba complicatissima per ottenere un comportamento banale.

Altro esempio:
- voglio selezionare un messaggio e segnarlo come letto (mark as read)
- voglio selezionare tutti i messaggi per farci poi qualche cosa tipo spostarli o cancellarli... ma non si può avere un classico "Ctrl+a" e Canc o qualcosa del genere?
- Voglio selezionare enne messaggi della INBOX e "archiviarli" che in GMail significa spostarli nella maildir "All Mail". Io fare "Shift+freccia giù" o qualcosa del genere per selezionare i messaggi (o anche "spazio") dopodiché premere "m" per "move" e poter selezionare una maildir in cui spostare i messaggi.

Ora, capisco che la curva d'apprendimento di mutt o neomutt possa essere ripida. Io stesso utilizzo Vim/NVim, DWM e altri software non proprio intuitivi all'inizio, ma qui le cose da fare con le email mi sembrano semplici nel mio caso (probabilmente chi ha a che fare con l'email in modo più spinto potrebbe avere esigenze molto diverse dalle mie), secondo voi si può sperare di impostare neomutt in modo "basic" come descritto?
Spero di aver reso l'idea...
Come dicevo non utilizzo Mutt da anni e anche allora non lo utilizzavo in modo così spinto... e no mi aveva convinto neanche allora.

Non so se qui ci siano utenti Mutt o NeoMutt...
Conraid mi pare di intuire che lo utilizzi forse, siccome parlava di "offlineimap" (simile ad isync).

Rispondi