{"id":111,"date":"2026-11-12T13:29:02","date_gmt":"2026-11-12T13:29:02","guid":{"rendered":"https:\/\/anderlini.com\/?p=111"},"modified":"2026-11-12T13:29:02","modified_gmt":"2026-11-12T13:29:02","slug":"postinovip-un-client-di-posta-open-source-ispirato-a-outlook-classico","status":"publish","type":"post","link":"https:\/\/anderlini.com\/?p=111","title":{"rendered":"PostinoVip: un client di posta open source ispirato a Outlook classico"},"content":{"rendered":"<blockquote>\n<p><strong>Una precisazione prima di iniziare:<\/strong> PostinoVip non \u00e8 propriamente \u201cfarina del mio sacco\u201d. Il progetto nasce da una mia idea e dalle mie esigenze, ma \u00e8 stato progettato e sviluppato con il supporto sostanziale di <strong>Claude Code<\/strong>. Il mio contributo \u00e8 consistito nel definire obiettivi e scelte, provare ogni fase e guidare lo sviluppo attraverso verifiche successive.<\/p>\n<\/blockquote>\n<p>PostinoVip \u00e8 un client di posta desktop libero e open source per Linux e Windows, pensato per chi apprezza l\u2019organizzazione e i comandi dell\u2019Outlook classico. Il progetto comprende posta elettronica, calendario e contatti, ma mantiene i dati sul computer dell\u2019utente e non utilizza servizi esterni propri n\u00e9 telemetria.<\/p>\n<figure><img decoding=\"async\" src=\"https:\/\/anderlini.com\/wp-content\/uploads\/2026\/11\/postinovip-anonimizzata.png\" alt=\"PostinoVip su Windows con cartelle, elenco dei messaggi e riquadro di lettura\" style=\"width:100%;height:auto;border-radius:12px\" \/><figcaption>PostinoVip su Windows: interfaccia ispirata a Outlook classico, con cartelle, elenco dei messaggi e riquadro di lettura.<\/figcaption><\/figure>\n<h2>Da quale esigenza nasce<\/h2>\n<p>L\u2019idea era realizzare un programma di posta multipiattaforma con un\u2019interfaccia familiare: barra multifunzione, Preferiti, cartelle, messaggi raggruppati per data e riquadro di lettura. Non una copia di Outlook, ma un\u2019applicazione indipendente, costruita con tecnologie aperte e pensata anche come percorso di studio.<\/p>\n<p>Lo sviluppo \u00e8 proceduto per piccoli passi verificabili. Ogni nuova funzione \u00e8 stata prima definita, poi implementata e infine provata nell\u2019uso reale prima di passare alla fase successiva.<\/p>\n<h2>Posta, ricerca e utilizzo offline<\/h2>\n<p>PostinoVip gestisce pi\u00f9 account tramite IMAP o POP3 e invia i messaggi attraverso SMTP. Le connessioni sono cifrate con SSL\/TLS o STARTTLS e i certificati vengono sempre controllati.<\/p>\n<p>Una copia locale della posta viene conservata in un database SQLite con indice di ricerca. In questo modo i messaggi si aprono rapidamente, possono essere cercati e rimangono disponibili anche senza connessione. I messaggi scritti offline attendono nella Posta in uscita e vengono inviati quando la rete torna disponibile.<\/p>\n<p>Tra le funzioni gi\u00e0 presenti ci sono conversazioni, categorie, contrassegni, regole, risposte automatiche, firme, testo formattato, conferme di lettura, gestione dei file <code>.eml<\/code>, stampa in PDF, Archivia, Ignora e Pulisci conversazione.<\/p>\n<h2>Calendario, contatti e Gmail<\/h2>\n<p>Il calendario supporta CalDAV con viste Giorno, Settimana e Mese, appuntamenti ricorrenti e promemoria. I contatti utilizzano CardDAV e sono integrati nella vista Persone e nel completamento automatico degli indirizzi.<\/p>\n<p>Per Gmail \u00e8 disponibile l\u2019accesso OAuth2 di Google al posto della password, utilizzabile anche per calendario e contatti. Chi compila autonomamente il programma deve registrare il proprio client OAuth nella console Google: il repository non contiene credenziali condivise.<\/p>\n<h2>Architettura: Flutter e C#<\/h2>\n<p>PostinoVip \u00e8 formato da due programmi che lavorano sullo stesso computer:<\/p>\n<ul>\n<li>un\u2019interfaccia desktop sviluppata in <strong>Flutter<\/strong>;<\/li>\n<li>un core in <strong>C# e .NET 10<\/strong>, basato su MailKit e MimeKit, che comunica con i server di posta.<\/li>\n<\/ul>\n<p>L\u2019interfaccia avvia e arresta automaticamente il core. I due componenti comunicano tramite API HTTP\/JSON esclusivamente su <code>127.0.0.1<\/code>, usando una porta e un token casuali generati a ogni avvio. Non \u00e8 quindi necessario installare o configurare un server esterno.<\/p>\n<h2>Sicurezza e privacy<\/h2>\n<p>Le password e i token OAuth vengono conservati nell\u2019archivio sicuro del sistema: il portachiavi tramite libsecret su Linux e il Credential Manager di Windows. Il token utilizzato tra interfaccia e core non viene scritto nei log n\u00e9 passato sulla riga di comando.<\/p>\n<p>Le e-mail HTML vengono ripulite nel core e mostrate senza JavaScript. Le immagini remote, che possono essere usate come pixel di tracciamento, restano bloccate fino alla scelta esplicita dell\u2019utente. PostinoVip non raccoglie telemetria e si collega soltanto ai server configurati negli account.<\/p>\n<p>La copia locale di posta, contatti e calendari non \u00e8 cifrata direttamente dall\u2019applicazione: per proteggerla \u00e8 quindi consigliata la cifratura del disco del sistema operativo.<\/p>\n<h2>Distribuzione su Linux e Windows<\/h2>\n<p>Per Linux sono disponibili gli script per creare un pacchetto <code>.deb<\/code> e una AppImage. Su Windows il progetto utilizza un installer realizzato con Inno Setup. I pacchetti contengono il core .NET gi\u00e0 compilato in modalit\u00e0 self-contained, quindi l\u2019utente non deve installare separatamente il runtime .NET.<\/p>\n<p>L\u2019interfaccia offre cinque temi chiari e scuri e permette di scegliere tra barra multifunzione classica e semplificata.<\/p>\n<h2>Un progetto ancora in versione alpha<\/h2>\n<p>PostinoVip \u00e8 un progetto personale e di studio ancora in versione alpha. \u00c8 utilizzato quotidianamente, ma \u00e8 stato collaudato soprattutto con un server IceWarp e con Gmail. Windows \u00e8 stato provato meno di Linux, mentre macOS non \u00e8 ancora supportato.<\/p>\n<p>Microsoft 365 e Outlook.com dispongono gi\u00e0 del codice OAuth2, ma non sono stati verificati con un account reale. Gli installer non sono firmati e Windows SmartScreen pu\u00f2 quindi mostrare un avviso al primo avvio. Prima di utilizzare il programma con una casella di lavoro \u00e8 prudente provarlo con un account dedicato.<\/p>\n<h2>Codice sorgente e licenza<\/h2>\n<p>Il repository contiene il core C#, l\u2019applicazione Flutter, i test, gli script di packaging e una documentazione tecnica molto dettagliata, compreso il diario delle scelte e delle verifiche effettuate durante lo sviluppo.<\/p>\n<p>PostinoVip \u00e8 distribuito secondo la licenza <strong>GNU Affero General Public License v3.0 o successiva<\/strong>. Non \u00e8 affiliato a Microsoft n\u00e9 approvato da essa; i riferimenti a Outlook descrivono soltanto il modello di interfaccia a cui il progetto si ispira.<\/p>\n<p><a href=\"https:\/\/github.com\/dummy1969\/postinovip\" target=\"_blank\" rel=\"noopener\"><strong>PostinoVip su GitHub \u2192<\/strong><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Una precisazione prima di iniziare: PostinoVip non \u00e8 propriamente \u201cfarina del mio sacco\u201d. Il progetto nasce da una mia idea e dalle mie esigenze, ma \u00e8 stato progettato e sviluppato con il supporto sostanziale di Claude Code. Il mio contributo \u00e8 consistito nel definire obiettivi e scelte, provare ogni fase e guidare lo sviluppo attraverso [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-111","post","type-post","status-publish","format-standard","hentry","category-programmazione"],"_links":{"self":[{"href":"https:\/\/anderlini.com\/index.php?rest_route=\/wp\/v2\/posts\/111","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/anderlini.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/anderlini.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/anderlini.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/anderlini.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=111"}],"version-history":[{"count":1,"href":"https:\/\/anderlini.com\/index.php?rest_route=\/wp\/v2\/posts\/111\/revisions"}],"predecessor-version":[{"id":112,"href":"https:\/\/anderlini.com\/index.php?rest_route=\/wp\/v2\/posts\/111\/revisions\/112"}],"wp:attachment":[{"href":"https:\/\/anderlini.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=111"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/anderlini.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=111"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/anderlini.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=111"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}