maksit-postclient/README.it.md

18 KiB
Raw Blame History

Postclient — client PEC, REM e IMAP da scrivania

Line Coverage Branch Coverage Method Coverage .NET License Platform

Lingua: English · Italiano · Français · Deutsch · Español

L’interfaccia del programma è in inglese, italiano, francese, tedesco o spagnolo. Questi documenti descrivono lo stesso client di posta elettronica da scrivania open source per chi invia e conserva posta elettronica certificata (PEC), registered electronic mail (REM) eIDAS e posta IMAP / POP3 / SMTP ordinaria su Windows, Linux e macOS.

Postclient è un client locale, non una webmail. Si collega con IMAP, POP3 e SMTP alle caselle che già possiedi: Gmail, Microsoft 365, PEC italiana presso un gestore qualificato (Aruba, InfoCert Legalmail, Namirial, Poste Italiane, Register.it, Libero, e IMAP su dominio personalizzato), e REM europea quando l’operatore espone IMAP/SMTP. Le ricevute restano su questo PC come .eml più un archivio SQLite ricercabile.

Non è un prestatore di servizi fiduciari qualificati (QTSP), non è un gestore PEC, non è una marca temporale e non è una casella in cloud. Buste e ricevute le emette il gestore / QTSP. Questo programma le apre, mostra l’evidenza di consegna e tiene gli originali sulla macchina.

Tipo Client di posta da scrivania per PEC, REM e IMAP
Sistemi Windows, Linux, macOS (Apple Silicon e Intel)
Stack C#, .NET 10, Avalonia, MailKit
Licenza Apache 2.0
Non è Un QTSP, un nuovo indirizzo PEC/REM, posta ospitata, un’app scanner

Modifiche: CHANGELOG.md. Sviluppo: CONTRIBUTING.md e README in inglese (compilazione, test, release).

Pensato per la posta certificata sul desktop

La posta da scrivania e la webmail trattano di solito una busta PEC o una parte di evidenza ETSI REM come un allegato qualunque. Postclient è scritto intorno a quella evidenza:

  • Apre buste PEC / REM — legge il postacert.eml interno (il messaggio destinato al destinatario) invece del wrapper del gestore; colonna Tipo PEC, RIC, REM o SIG (firmato digitalmente).
  • Colonna consegna dall’evidenza dell’operatore — accettazione, avvenuta-consegna, ETSI SubmissionAcceptance / Delivery / Retrieval, LRE e avis AR24, Zustellung e Abholbestätigung De-Mail, acuse de recibo. Dopo l’invio SMTP, Inviata viene abbinata alle ricevute in Posta in arrivo/Ricevute tramite Message-Id, daticert.xml e prefissi oggetto. La PEC italiana non ha ricevuta di lettura: avvenuta consegna è il deposito nella casella certificata.
  • Anteprima FatturaPA — XML della fattura elettronica italiana in una vista leggibile (parser XML, non intelligenza artificiale).
  • Fascicolo di .eml originali — esporta i messaggi selezionati come i file che un notaio, uno sportello PA, una banca o un giudice può conservare.
  • Da è un selettore di casella — non si digita un From libero; l’invio usa l’identità SMTP dell’account collegato.
  • Etichette di pratica su questo PC — condominio, fascicolo cliente, avviso IMU. Le etichette sono locali, non un database di studio in rete.
  • Archivio locale di tutta la cartella — Scarica messaggi memorizza tutta la cartella IMAP in mail.db più gli .eml su disco (non una finestra degli ultimi N). FTS su oggetto, corpo, testo degli allegati PDF/XML/HTML/CSV/JSON e etichette.
  • Ricerca per significato sul dispositivo (RAG) — EmbeddingGemma 300M opzionale in Impostazioni → Indici…. I vettori restano in mail.db. La posta non lascia la macchina. Si possono ricostruire o riparare gli indici per parole e per significato.
  • Regole tra caselle — sposta, elimina, flag, etichetta; la cartella di destinazione può stare su un altro account, compreso un file dati .pst / .ost collegato. Importa JSON o un file .rwz legacy; l’export è JSON.
  • Apre .pst / .ost come casella — lo store Unicode è scrivibile (cartelle, flag, sposta, elimina). Un file offline viene copiato in un .pst Unicode alla prima scrittura. Non serve un altro programma di posta per leggere il file.
  • Pacchetti per Paese — Impostazioni → Funzionalità accende o spegne Italia (PEC, FatturaPA, fascicolo), Europa (REM eIDAS), Francia, Germania, Spagna e Svizzera. L’IMAP ordinario resta disponibile.

A chi serve

Privati

Client quotidiano per uno o più indirizzi: Gmail o Microsoft 365 accanto a una PEC personale (Italia) o a una casella REM IMAP (UE). Cerca un avviso di condominio, un file IMU o una comunicazione della PA anni dopo, senza lasciare gli originali sul server di terzi.

Uso tipico: posta certificata e ordinaria nella stessa finestra; vedere se il gestore ha accettato e depositato la PEC; stampare o salvare un PDF; esportare l’.eml originale se lo chiede il Comune, la banca o il giudice.

Studi e agenzie

Serve quando le identità certificate non devono mescolarsi: PEC personale, PEC dello studio, posta ordinaria. Un commercialista, un avvocato, un notaio, un CAF, un amministratore di condominio o uno studio UE che deposita in PA può tenere ogni casella del gestore distinta (quota IMAP QUOTA in barra di stato), raggruppare un invio con le sue ricevute ed esportare un fascicolo senza caricare la pratica su un archivio di terzi.

Il programma non sostituisce il gestore, non emette una ricevuta qualificata e non condivide le etichette tra i PC dell’ufficio.

Account e protocolli

In ingresso: IMAP (albero cartelle), POP3 (solo Posta in arrivo), o un .pst / .ost collegato. I .pst Unicode sono scrivibili. In uscita: SMTP. Cifratura: automatica, SSL/TLS, STARTTLS, STARTTLS se disponibile, oppure nessuna. MailKit usa i metodi SASL che il server offre.

Si possono usare più caselle insieme. I profili compilano host e porte:

Profilo Ruolo
Gmail IMAP/SMTP; accesso Google (OAuth2 / XOAUTH2) o password per le app Gmail
Microsoft 365 IMAP/SMTP; accesso Microsoft. Quasi tutti questi account rifiutano la password della casella
IT PEC — Aruba imaps.pec.aruba.it / smtps.pec.aruba.it (POP3: pop3s.pec.aruba.it)
IT PEC — InfoCert Legalmail mbox.cert.legalmail.it / sendm.cert.legalmail.it. Spesso lo User ID InfoCert, non l’indirizzo
IT/EU PEC — Namirial imaps.sicurezzapostale.it / smtps.sicurezzapostale.it
IT PEC — Poste Italiane mail.postecert.it
IT PEC — Register.it imap.pec-email.com / smtp.pec-email.com
IT PEC — Libero mail.postacert.it.net
EU — Intesi Group imap.ig-trustmail.com / smtp.ig-trustmail.com
IMAP / POP3 Qualunque host indicato dall’operatore. Imposta il tipo di casella su PEC italiana o REM UE se quella casella è certificata (anche con dominio personalizzato)
Archivio locale Cartella su disco (postclient.store.json + mail.db + .eml). Senza password e senza SMTP. Crea, collega, sposta o sgancia dal menu File.

Le caselle IMAP certificate usano la password del gestore, o una password per le app se c’è il 2FA. AR24 (Francia), De-Mail (Germania), IncaMail (Svizzera) e Lleida (Spagna) di solito non sono IMAP. Se l’operatore ha dato host IMAP/POP3, scegli IMAP / POP3. Altrimenti questa applicazione non apre quella casella; può comunque mostrare l’evidenza ETSI REM su messaggi importati come .eml.

Gmail e Microsoft 365 accedono tramite Identity Hub (https://identity.maks-it.com). Impostazioni account apre /desktop-login?provider=Google o Microsoft. Il JWT Hub e il refresh token restano in secrets.bin; IMAP usa un mailbox-token a breve scadenza (XOAUTH2). All’avvio il client rinnova la sessione Hub da quel refresh token, così Gmail e Outlook restano collegati dopo la chiusura. Se una build precedente ha salvato solo il JWT, accedi di nuovo da Impostazioni account. Override: POSTCLIENT_IDENTITY_HUB. La password resta valida per PEC e IMAP generico.

Password e token OAuth stanno accanto alle impostazioni (DPAPI su Windows, mode 600 su Linux/macOS), mai in settings.json.

PEC italiana (posta elettronica certificata)

La PEC è una busta del gestore:

  • messaggio di trasporto con X-Trasporto: posta-certificata, daticert.xml e l’originale in postacert.eml;
  • ricevute (X-Ricevuta) in Posta in arrivo e Ricevute: accettazione, presa-in-carico, avvenuta-consegna, non-accettazione, mancata-consegna, rilevazione-virus, preavviso-errore-consegna.

Visualizza → Apri busta PEC/REM mostra il postacert.eml interno. La colonna Tipo indica PEC (trasporto) o RIC (ricevuta).

La PEC italiana non ha ricevuta di lettura. Avvenuta consegna significa deposito nella casella certificata del destinatario, non che una persona abbia aperto il messaggio.

REM europea (registered electronic mail eIDAS)

Se il messaggio porta evidenza ETSI REM (REMEvidence / urn:etsi:rem, o un nome parte remevidence / rem-md), il client lo tratta come REM. Gli eventi finiscono nella stessa colonna Consegna della PEC:

  • SubmissionAcceptance → il QTSP ha preso in carico;
  • Delivery / avis de réception LRE o AR24 / Zustellung De-Mail / acuse de recibo → depositato;
  • ContentConsignment / Retrieval / Abholbestätigung De-Mail → il destinatario ha ritirato il contenuto (equivalente europeo più vicino alla “lettura”);
  • rifiuto, virus, mancata consegna, DeliveryExpiration → fallito.

S/MIME (smime.p7s / smime.p7m) è mostrato come firmato digitalmente; non è PEC né REM.

Colonna consegna dopo l’invio

Dopo l’SMTP, Postclient memorizza il Message-Id in uscita e, aprendo Inviata, riconcilia le ricevute da Posta in arrivo e Ricevute. L’attesa vale solo per le caselle di tipo PEC o REM (un preset, oppure IMAP/POP3 con quel tipo). Gmail, Microsoft 365 e IMAP ordinario risultano solo inviati. Abbina, in ordine: <msgid> in daticert.xml, X-Riferimento-Message-ID, In-Reply-To, identificativo PEC, poi i prefissi oggetto (ACCETTAZIONE:, CONSEGNA:, AVIS DE RECEPTION:, ACUSE DE RECIBO:, ZUSTELLBESTAETIGUNG:, ABHOLBESTAETIGUNG:, …).

Evidenza Stato Significato
PEC accettazione / presa-in-carico, ETSI SubmissionAcceptance Accettato Il gestore ha preso il messaggio
PEC avvenuta-consegna, ETSI Delivery, avis LRE/AR24, Zustellung Consegnato Depositato nella casella certificata — la PEC non certifica la lettura
ETSI ContentConsignment / Retrieval, Abholbestätigung Ritirato Il destinatario ha ritirato il contenuto
non-accettazione, mancata-consegna, virus, rifiuto ETSI Fallito Il gestore ha segnalato mancata accettazione o consegna

Il client mostra l’evidenza dell’operatore. Non emette ricevuta qualificata, busta PEC o marca temporale.

Le notifiche del sistema segnalano nuove PEC, ricevute e REM (toast Windows, notifica macOS, notify-send su Linux).

Lettura, cartelle, composizione

  • L’albero segue il server (Posta in arrivo, Ricevute, Bozze, Inviata, Archivio, Indesiderata, Cestino, più cartelle personalizzate). I percorsi IMAP nidificati sono cartelle nidificate, comprese le etichette Gmail [Gmail]/… sotto [Gmail]. Bozze, Inviata e Cestino che il server chiama INBOX.Drafts / INBOX.Sent / INBOX.Trash stanno accanto a Posta in arrivo, non sotto. Gmail usa / come separatore: un’etichetta come P.IVA resta una sola cartella. Le cartelle di sistema non si eliminano. Si può creare una cartella, svuotarla (nel Cestino, o in modo definitivo nel Cestino), segnare tutto letto/non letto, eliminare una cartella personalizzata, trascinare i messaggi su una cartella. Quali account e cartelle nidificate sono aperti o chiusi resta in settings.json.
  • Colonne elenco: non letto, stella, allegati, consegna, tipo (PEC / RIC / REM / SIG), da, oggetto, data (locale yyyy-MM-dd HH:mm), etichetta di pratica.
  • Vista: HTML (motore web del sistema), testo, sorgente, o FatturaPA. Disposizione: elenco sopra la lettura, oppure tre colonne (cartelle, elenco, lettura).
  • Raggruppa conversazioni indenta le risposte nell’elenco (Message-ID / In-Reply-To / References, profondità massima 8). Le ricevute PEC dello stesso originale stanno insieme. Non c’è un riquadro conversazioni separato.
  • Azioni: rispondi, rispondi a tutti, inoltra, apri in nuova finestra, letto/non letto, stella, priorità, elimina.
  • La composizione è testo semplice. A, Cc, Ccn sono chip di indirizzo. Gli allegati sono elencati nel compositore. Invia allegati come ZIP impacca i file trascinati (password opzionale). L’invio usa solo l’identità SMTP della casella scelta.

HTML: WebView2 su Windows (profilo sotto la cartella dati), WebKitGTK su Linux, WKWebView su macOS. Se manca il motore, si vede il corpo di testo.

Pacchetti Linux per la vista HTML:

sudo apt install libgtk-3-0 libwebkit2gtk-4.1-0 libsoup-3.0-0

Fedora: gtk3 webkit2gtk4.1 libsoup3.

Archivio locale, ricerca per parole e indice di significato

Scarica messaggi indica tutta la cartella IMAP in SQLite (mail.db) più gli .eml su disco. POP3 riempie solo la Posta in arrivo. L’indicizzazione gira in background; la barra di stato mostra l’avanzamento.

  • Impostazioni → Indici…: indice per parole (FTS) e, se vuoi, EmbeddingGemma 300M (~300 MB) per il significato. Il pacchetto ONNX si scarica da Hugging Face (onnx-community/embeddinggemma-300m-ONNX). I vettori restano in mail.db su questo PC. Dispositivo: Automatico / CPU / GPU (DirectML su Windows). Ricrea o ripara gli indici se la ricerca è storta. I pesi usano i termini Google Gemma.

La ricerca (cartella corrente) copre oggetto, corpo, testo degli allegati (PDF e text/XML/HTML/CSV/JSON), etichette di pratica e il significato quando il modello è pronto. Le etichette esistono solo su questo PC.

L’archivio è solo su questo PC. File → Apri cartella archivio / Esporta archivio copia mail.db e gli .eml. Percorsi:

OS Configurazione Dati
Windows %AppData%\Postclient\ %LocalAppData%\Postclient\
Linux ~/.config/postclient/ ~/.local/share/postclient/
macOS ~/Library/Application Support/Postclient/ stesso

Override: POSTCLIENT_CONFIG / POSTCLIENT_DATA_DIR. Lo zip portatile Windows con installType: portable in settings.json tiene la config accanto all’eseguibile.

La QUOTA IMAP del gestore (se il server la espone) è in barra di stato. È lo spazio della casella presso l’operatore, non uno storage cloud di questa applicazione.

Importazione, esportazione, stampa

Azione Risultato
Importa EML Originali nella cartella corrente
Importa mbox Store mbox locali da un profilo di posta da scrivania
Importa .pst / .ost Copia la posta Outlook in un archivio cartella (percorso proposto sotto stores/ nei dati app). Un secondo import nello stesso archivio salta i duplicati per Message-ID.
Nuovo archivio Menu File: cartella vuota con postclient.store.json e mail.db.
Collega archivio Menu File: cartella che ha già postclient.store.json.
Conservazione Impostazioni → Conservazione…: giorni per cartella (0 = per sempre). I messaggi più vecchi si eliminano in modo permanente.
Regole Impostazioni → Regole: Importa regole… legge l’export JSON di questa app o un file .rwz legacy. Esporta regole… scrive JSON. Ogni regola è legata a una casella; la cartella di destinazione può stare su un’altra casella (anche un file dati collegato). Partono su Scarica messaggi, in import e da Esegui tutte le regole.
Stampa HTML leggibile del messaggio (eventualmente sbustato)
Salva PDF Lo stesso contenuto in PDF
Salva allegati ZIP Tutti gli allegati del messaggio aperto
Esporta EML selezionati (fascicolo) Gli .eml originali — ciò che notaio o PA possono conservare come messaggio

I messaggi aperti sono anche copiati come .eml nella cartella dati. Gli .eml sono gli originali; PDF e stampa sono una copia di lettura.

Lingua dell’interfaccia

Visualizza → Lingua: English, Italiano, Français, Deutsch o Español. I nomi cartella del server (Posta in arrivo, Gesendet, Messages envoyés, Enviados, …) sono mappati su Posta in arrivo / Inviata / … nella lingua dell’UI.

Pacchetti per Paese

Impostazioni → Funzionalità è una matrice di sola posta certificata. IMAP/POP3 ordinario, ricerca, etichette di pratica, import mbox/.pst e file dati collegati restano sempre disponibili. Le righe sono funzioni certificate; le colonne sono Italia, Europa, Francia, Germania, Spagna, Svizzera. La casella in intestazione accende o spegne tutta la colonna.

Pacchetto Cosa sblocca Predefinito
Italia Busta PEC / ricevute / consegna, profili PEC, anteprima FatturaPA, fascicolo Acceso
Europa Evidenza REM eIDAS, profilo Intesi Acceso
Francia / Germania / Spagna / Svizzera Etichette di evidenza (AR24/LRE, De-Mail, Lleida, IncaMail). Quelle reti di solito non sono IMAP. Spento

Spegnere un pacchetto nasconde menu, colonne e profili. Le caselle già configurate restano; sparisce solo l’interfaccia extra.

Download

Quando esiste una GitHub Release: zip portatile e setup Windows (postclient-{version}.exe, self-contained — niente SDK .NET sul PC; percorso predefinito C:\Program Files\MaksIT\Postclient), Flatpak Linux, DMG macOS (osx-arm64 e osx-x64). Le build macOS non sono firmate: al primo avvio Apri dal menu contestuale.

Linux (Flatpak)

flatpak install --user ./postclient-{version}.flatpak
flatpak run eu.postclient.desktop

Compilazione da sorgente, test e procedura di release: README in inglese.

Licenza

Apache License 2.0. Copyright 2026 Maksym Sadovnychyy (MAKS-IT).