Changelog
Cosa cambia
Ogni versione con le novità e le correzioni. Senza edulcorazioni — anche gli errori di cui non siamo orgogliosi sono elencati qui.
1.0.4
Versione di sicurezza: l'elenco dei messaggi di una casella ora verifica che la casella appartenga all'utente connesso — e la sincronizzazione della posta con AnnexOffice diventa più leggera
Corretto e migliorato
- L'elenco dei messaggi di una casella tramite l'interfaccia di programmazione (GET /api/v1/mailboxes/{id}/messages) non verificava se la casella appartenesse all'utente connesso. Un utente connesso sullo stesso server poteva così recuperare i messaggi di caselle altrui se ne conosceva il numero. Dalla 1.0.4 il server risponde «non trovato» per le caselle altrui. Consigliamo di aggiornare alla 1.0.4
- Sincronizzazione della posta con AnnexOffice: il server consegna i messaggi dall'ultima sincronizzazione (delta con checkpoint) invece di tutti ogni volta, e le eliminazioni arrivano complete, pagina per pagina. Ha effetto con una versione di AnnexOffice che usa la sincronizzazione (con AnnexCREATE 0.7.4) — i client più vecchi continuano a recuperare tutto
1.0.3
Versione di sicurezza: l'accesso dell'app AnnexTalk conta i tentativi falliti, blocca gli account e rispetta gli indirizzi bloccati — come l'accesso nel browser
Corretto
- La via di accesso propria dell'app AnnexTalk non rispettava gli indirizzi bloccati, non contava i tentativi falliti e non bloccava gli account — a differenza dell'accesso nel browser. L'app ora segue le stesse regole, e ogni tentativo fallito è riportato nel registro dell'amministrazione
1.0.2
Versione correttiva: Apple Contatti si configura con la sola e-mail — e offre l'account come predefinito per i nuovi contatti
Corretto
- Apple Contatti si annunciava in modalità «Automatica» solo con la parte del nome dell'indirizzo — il server rifiutava l'accesso. Ora completa il dominio: la configurazione senza nome del server riesce, e arrivano le rubriche e la directory aziendale
- Apple non offriva l'account come predefinito per i nuovi contatti — la radice dell'account restituiva una lista di diritti vuota. Le schede nuove finivano nell'account sbagliato; l'account ora è offerto, e la creazione sul server e la cancellazione sono provate
1.0.0
L’ambito è completo: dall’installazione alla migrazione da Exchange e al posto di lavoro su Mac e Windows — e in AnnexTalk segnalare e bloccare
Novità
- In AnnexTalk si può segnalare un messaggio: la segnalazione va all’amministrazione del Suo server — resta nel registro di amministrazione e arriva per posta agli amministratori del Suo dominio, mai a ma-kom. Chi blocca un mittente non conta più i suoi messaggi
- La migrazione da un Exchange in casa si svolge interamente sul server: direttamente via EWS, senza un Mac di mezzo — posta, appuntamenti, contatti, attività, note e cartelle pubbliche arrivano con essa, verificata su una cassetta postale vera
- Il posto di lavoro nell’interfaccia web su Mac e Windows — installato dalla macchina vergine fino al primo messaggio risposto
0.12.1
AnnexTalk ora anche nel browser — leggere e rispondere in canali e messaggi diretti; inoltre due errori dell’archivio corretti, e la migrazione nomina ogni voce non trasferita, il programma di installazione controlla la versione di sistema, e lo stato del sistema confronta MX/SRV con il certificato
Novità
- L’interfaccia web ha una voce di menu AnnexTalk: i canali e i messaggi diretti si leggono e si rispondono lì — limite: nessun contatore dei non letti, nessuna discussione, nessuna reazione; il pulsante «Aggiorna» recupera i nuovi messaggi
Corretto
- Con la sospensione, l’archiviazione contava in modo errato: `archive-run` segnalava, ad esempio, «24 archiviati», anche se la sospensione non aveva spostato alcun messaggio. La sospensione ha sempre funzionato — non è andato perso nulla, solo il numero era sbagliato. Ora il comando conta solo ciò che si trova effettivamente nell’archivio
- Il processo di archiviazione giornaliero non terminava quando un messaggio con scadenza superata non poteva essere archiviato (ad esempio in una cartella senza proprietario) — lo riprendeva di continuo e girava all’infinito. Ora si interrompe e segnala quali messaggi sono rimasti indietro
- Il programma di installazione macOS non controllava la versione minima: su un Mac con un sistema troppo vecchio, AnnexGroup si interrompeva all’avvio con «dyld: Symbol not found» e «Abort trap» — senza indicare che la causa era il sistema. `install-macos.sh` e il programma di installazione .pkg rifiutano ora prima di installare qualsiasi cosa: lo script indica che AnnexGroup richiede macOS 14 o più recente e quale macOS ha questo Mac; il programma di installazione .pkg mostra l’avviso di macOS che è richiesto macOS 14
- Lo stato del sistema segnava il certificato come valido anche quando non copriva il nome verso cui i suggerimenti DNS dell’amministrazione puntano MX e SRV — per impostazione predefinita `mail.<vostro-dominio>`, regolabile tramite `smtp_hostname`. Un programma di posta che seguiva il record SRV si interrompeva alla connessione. Lo stato del sistema ora nomina ciò che manca
- Una migrazione da Exchange terminava con «completed_with_errors — 2 errors» senza dire quali — i nomi stavano solo nel registro del server. Il numero era giusto; nulla è scomparso in silenzio. Il registro di migrazione nomina ora ogni voce non trasferita con il motivo: cartella, oggetto e ID del messaggio per i messaggi, il titolo per appuntamenti, contatti, attività e note
- La pagina di importazione mostrava solo lo stato di un processo terminato. Ora si apre sotto ogni processo un elenco che nomina tutte le voci saltate e non riuscite con il motivo — per esempio «Non riuscito · Posta in arrivo / Fattura marzo — message too large»
- Un allegato che non si poteva leggere durante la migrazione da Exchange faceva fallire l’intero messaggio; ora il messaggio arriva senza di esso, e l’allegato compare con oggetto e nome del file nel registro di migrazione. Gli allegati vuoti (ad esempio `ATT00001.txt`) arrivano come file vuoti
0.12.0
Fusi orari Windows letti correttamente, agenti IA senza peso sulla licenza — e una disinstallazione che non lascia nulla
Novità
- Gli agenti IA non contano più contro il limite di utenti della licenza: per ogni utente pagante è possibile lo stesso numero di agenti, e superarlo genera una segnalazione — non un blocco
Corretto
- Gli appuntamenti con nomi di fuso orario Windows — come li scrive il calendario di Windows — erano spostati di due ore: nella sincronizzazione del calendario, negli inviti per mail e nella migrazione via Microsoft Graph. Il server ora conosce la corrispondenza tra fusi Windows e fusi IANA e legge correttamente tutti e tre i punti
- Un numero di telefono modificato nel browser non arrivava mai alla rubrica del client quando il contatto aveva già una scheda salvata — il vecchio numero restava. I numeri modificati ora sostituiscono quello salvato, e i nuovi portano un tipo
- La disinstallazione su macOS lasciava caricato l’helper dell’autoaggiornamento, puntando a un programma eliminato — ora viene eliminato anch’esso
- Gli appuntamenti senza partecipanti apparivano nei programmi di calendario come richieste di riunione con «Risposta richiesta» — il server scriveva un organizzatore in ogni appuntamento. Ora solo gli appuntamenti con partecipanti riportano un organizzatore
- I partecipanti inseriti nell’interfaccia web mancavano nella sincronizzazione del calendario: i programmi di calendario ricevevano l’appuntamento senza di loro e mostravano un appuntamento semplice invece di uno con invitati. La sincronizzazione ora li include
- I programmi di calendario non mostravano il nome dell’organizzatore di un appuntamento con partecipanti — compariva «Sconosciuto». Il server non inviava alcun nome per l’organizzatore; ora riporta il nome dell’account, e i nomi con la virgola («Sanwald, Pascal») arrivano per intero
- Gli accessi simultanei potevano perdere voci nel registro di amministrazione: misurato con 40 voci simultanee, ne sono arrivate 2. Ora arrivano tutte, e la catena di tracciabilità resta chiusa
- La pagina di aggiornamento dell’amministrazione mostrava per una nuova versione le note dell’ultima versione installata e segnalava durante il caricamento «Mai richiesto». Entrambi i problemi sono risolti a partire dagli aggiornamenti successivi alla 0.12.0 — chi aggiorna dalla 0.11.0 alla 0.12.0 vede ancora l’errore durante quel passaggio
0.11.0
Federazione sicura fin da subito, cinque lingue ovunque, più calendari — e due falle di sicurezza in meno
Novità
- La federazione tra server AnnexGroup è disattivata per impostazione predefinita da questa versione; chi la utilizza la attiva nella configurazione e deposita la chiave pubblica di ogni partner — senza chiave, il server non accetta più nulla
- L’elenco globale degli indirizzi è ora disponibile anche nell’interfaccia web — fino alla 0.10.0 era visibile solo tramite la rubrica dei programmi di posta (CardDAV)
- L’interfaccia parla ora costantemente la lingua dell’utente in tutte e cinque le lingue — sette pagine mantenevano parti dei loro testi cablate in inglese o tedesco, i termini seguono ora quelli di Outlook, e l’amministrazione parla tedesco invece di Denglisch
- Un’installazione si cancella ora dai motori di ricerca — la pagina di accesso di un server aziendale non ha nulla da fare in un indice di ricerca
- Più calendari per utente: creare, rinominare, eliminare — nell’interfaccia web e tramite CalDAV; la disponibilità conta tutti i calendari propri, e la migrazione da Exchange crea i calendari aggiuntivi come calendari a sé invece di mettere tutto in uno
- La ricerca nella propria rubrica filtra ora sul server — con 1 051 contatti, finora ogni ricerca restituiva l’intera rubrica (914 KB invece di un singolo risultato)
- Ogni utente può decidere per sé chi vede la propria disponibilità — più stretta o più ampia della regola del dominio: nessuna informazione, solo libero/impegnato, o con oggetto e luogo
- IMAP supporta ora UIDPLUS e MULTIAPPEND: i programmi di posta come mbsync assegnano in modo univoco i messaggi caricati, e più messaggi entrano in un colpo solo oppure nessuno
- Le liste di blocco accettano ora anche intervalli di rete (IPv4 e IPv6) — con protezione contro il blocco di se stessi
- Il numero di account e di postazioni AnnexOffice del codice di attivazione è un limite rigido; l’amministrazione mostra chi occupa una postazione e la libera con un clic
- Il modulo appuntamenti pianifica: tutti gli invitati e le sale su una linea temporale, un clic adotta l’orario, e un suggerimento nomina il prossimo spazio libero in comune
- I dipendenti vedono accanto alla posta in arrivo la loro giornata — gli appuntamenti di oggi e le attività in scadenza
- Data e ora compaiono nei moduli come le scrive la lingua dell’interfaccia — anche se il browser ha un’altra lingua
- La catena delle prove viene verificata quotidianamente in esercizio; un’interruzione compare nello stato del sistema — e anche il registro delle azioni amministrative è ora incatenato
- IMAP supporta ora NOTIFY: un canale per molte cartelle — Evolution mostra la posta in arrivo con l’impostazione di fabbrica
- La procedura guidata di migrazione accetta Exchange come origine tramite EWS, e le cartelle pubbliche diventano sale condivise
- La rubrica aziendale è ora anche un’interfaccia — i client ricevono così suggerimenti di destinatari durante la composizione
Corretto
- La connessione tra due server AnnexGroup verifica ora il certificato dell’altra parte e richiede una firma valida per ogni messaggio in arrivo
- Una condizione di corsa nel flusso di eventi poteva far cadere il server quando un browser si disconnetteva nel momento in cui un messaggio veniva distribuito
- Chi faceva doppio clic su «Invia» nel browser spediva il messaggio due volte — il blocco contro il doppio invio non agiva mai lì
- Nella pagina iniziale dei dipendenti, una scheda restava permanentemente su «Caricamento …»
- La lista di controllo della configurazione spuntava la migrazione anche quando una migrazione era fallita
- La panoramica delle interfacce dell’area sviluppatori dava per l’elenco dei messaggi un percorso che non esiste
- Un messaggio HTML in arrivo poteva eseguire script nella sessione del destinatario; la posta HTML compare ora in un riquadro isolato senza script, e le immagini remote e i pixel di tracciamento non vengono caricati
- Dietro un proxy inverso si poteva falsificare l’indirizzo del mittente di una richiesta e così aggirare il blocco dell’accesso e la lista di blocco; l’intestazione di inoltro vale ora solo da proxy inversi registrati (trusted_proxies) — chi esegue AnnexGroup dietro nginx o simile ne inserisce l’indirizzo
- La pagina di dettaglio di un messaggio mostra il messaggio invece della sua costruzione grezza, e una risposta cita il testo in modo leggibile — con «R:» nell’oggetto quando l’interfaccia è in italiano
- Un messaggio spostato riceve una nuova identificazione nella cartella di destinazione, dopo l’eliminazione le notifiche al programma di posta sono corrette, e QRESYNC segnala i messaggi eliminati come richiede lo standard
- Oggetto e mittente con umlaut appaiono leggibili — prima comparivano nella posta in arrivo come «=?utf-8?q?…», anche in messaggi già presenti nella casella
- «Rispondi» nell’interfaccia web raggiunge i mittenti che scrivono con nome; oggetti e nomi con umlaut escono codificati a norma
- La vista settimanale mostra un appuntamento come un blocco lungo la sua durata, si apre alle 07:00 e mostra i colori degli appuntamenti; le cartelle dei propri agenti compaiono con i loro nomi a sé
- Gli accessi in scrittura tramite CalDAV e CardDAV richiedono ora solo la metà delle andate e ritorni al database
- Un account con il ruolo «root» si poteva creare tramite l’interfaccia di programmazione e poi cadeva dal conteggio; le sale contavano contro il numero di utenti della licenza — entrambe le cose sono ora chiuse
- IMAP tollera ora più programmi di posta sulla stessa casella — misurato con tre client simultanei: 98 errori prima, nessuno dopo
- IMAP: COPY crea ora tutti i messaggi o nessuno — niente di definitivo a metà strada
- Sei riscontri del passaggio sui dispositivi Apple sono corretti: ORG con reparto resta nei contatti, CalDAV e CardDAV salvano gli oggetti con il nome scelto dal programma, i contatti eliminati raggiungono i dispositivi, libero/impegnato non conta più come conflitto l’appuntamento in corso di pianificazione — e gli appuntamenti salvati non portano più METHOD
0.10.0
Migrazione senza Mac, multi-tenant, conformità — e un’interfaccia coerente
Novità
- La migrazione da Exchange in casa avviene sul server: direttamente via EWS, senza un Mac di mezzo — posta, appuntamenti, contatti, attività e note arrivano insieme
- Creare molte caselle da un elenco invece di compilare cinquanta moduli
- Multi-tenant: il ruolo «amministratore di dominio» gestisce il proprio dominio — utenti, sale, gruppi di distribuzione, condivisioni — e il confine vale anche per ricerca, rubrica e disponibilità
- Conformità: journaling, casella di archivio come casella IMAP a sé, blocco di conservazione, ricerca su tutto il dominio con esportazione mbox e regole di controllo per tenant
- Lo stato del sistema verifica il certificato rispetto ai nomi di individuazione e indica quelli mancanti prima che la configurazione fallisca
- L’amministrazione è ordinata: quattro aree con un nome invece di undici pulsanti uguali, e le procedure guidate mostrano a che punto si è
- Disponibilità nel modulo appuntamenti dell’interfaccia web — «nessuna informazione» è uno stato a sé e non sembra «libero»
- Nell’interfaccia web: più destinatari, copia e copia nascosta, e tutti gli orari nel fuso del lettore
Corretto
- Un appuntamento arretrava della differenza di fuso a ogni salvataggio — elenco, griglia del calendario e modulo calcolavano in tre fusi diversi
- Messaggio, contatto, agente e spazio non si aprivano: il messaggio rispondeva 404, gli altri tre rimandavano in silenzio al proprio elenco
- La procedura guidata di migrazione non inviava le credenziali digitate e le salvava invece nel browser
- Un secondo clic su «Invia» spediva lo stesso messaggio una seconda volta
- Le regole di filtro non salvavano l’azione selezionata
- Carico, occupazione del disco e registro del server erano visibili a ogni casella; il flusso in tempo reale persino senza accesso
- Il calendario mescolava nomi di giorni e mesi tedeschi e inglesi
- La configurazione di esempio inclusa ometteva `loc=UTC` nella connessione al database — su una macchina non impostata su UTC tutti gli orari slittavano
- Lo script di installazione ora segnala se un altro server di posta occupa già la porta 25, invece di lasciare il servizio in un ciclo di riavvii senza dire nulla
0.9.0
Groupware completa — e il server si aggiorna da solo
Novità
- Libero/impegnato nei calendari: chi cerca un appuntamento vede chi ha tempo, senza chiedere
- Sale e apparecchiature come partecipanti del calendario — prenotate, rifiutate, senza correre nei corridoi
- Elenco globale degli indirizzi in ogni client standard
- Gruppi di distribuzione che si risolvono internamente: scrivere a un indirizzo, raggiungere tutti
- Invia come e invia per conto di — con condivisioni invece di password condivise
- Assenza con periodo: dall’inizio alla fine, non solo accesa e spenta
- Regole sul server (Sieve): impostate nel client, applicate alla consegna
- Cartelle pubbliche con gerarchia a tre livelli
- Condivisioni per caselle, calendari e rubriche
- Autaggiornamento con ritorno: il server scarica la versione, la prova e cambia — se qualcosa va storto, la precedente è a portata di mano
Correzioni
- Otto pagine di amministrazione restituivano una pagina vuota con HTTP 200 — mancava la chiamata al modello base
- macOS: programma e installatore usavano directory di dati diverse — backup e ripristino segnalavano a torto «nessun dato»
- L’assistente privilegiato dell’autaggiornamento ascoltava un livello troppo in alto e non sentiva il segnale — l’aggiornamento restava silenziosamente su «preparato»
- Un ritorno volontario riuscito segnalava un errore dove non c’era
0.8.2
I client di calendario e contatti si collegano
Corretto
- CalDAV e CardDAV accettano le stesse credenziali di IMAP. Prima venivano accettati solo i token, ed Evolution, Thunderbird e i client Apple non offrono un punto in cui inserirne uno: nessun client standard riusciva a collegarsi
- La configurazione tramite l'indirizzo del server funziona: il punto di ingresso indica ora il principal invece di negare l'accesso
0.8.1
Multilingue dappertutto
Novità
- Documentazione disponibile in inglese oltre che in tedesco
- Sito in cinque lingue (inglese, tedesco, spagnolo, francese, italiano)
- Interfaccia del server, messaggi di errore e posta di sistema nella lingua del destinatario; preferenza di lingua per utente
- Pacchetto di licenze: le postazioni AnnexOffice sono incluse nella licenza del server
Corretto
- Cinque violazioni dello standard IMAP che facevano mostrare in modo errato la posta ricevuta in Thunderbird
- App macOS: crash all’avvio fuori da un bundle applicativo, e TLS verso un server con certificato proprio
- Una corsa critica nel flusso di eventi che interrompeva la serie di test
0.8.0
Prima versione pubblica
Incluso
- Server di posta con SMTP, IMAP, coda e firma DKIM
- Calendario, contatti, attività, note, spazi condivisi, condivisione
- Agenti IA come sotto-account con livelli di autonomia e ciclo di revisione
- Interfaccia web, installabile come web app, chiara e scura
- CalDAV e CardDAV per dispositivi Apple
- Ricerca full-text in tutte le aree
- Amministrazione con procedura guidata, autodiagnosi, backup e ripristino
- Protezione dai tentativi di accesso, blocklist, preimpostazioni di sicurezza
- Integrazione di Rspamd e ClamAV
- Pacchetti per macOS (Apple Silicon e Intel, notarizzati da Apple) e Linux (x86-64 e ARM64)
Limitazioni note
- Niente MAPI e niente EWS come protocollo del server — e nemmeno ActiveSync. AnnexGroup punta esclusivamente su protocolli aperti; per noi Exchange è la sorgente di una migrazione, non un protocollo da reimplementare.
- Il multi-tenant in 0.8.0 era preparato solo nel modello dati — superato da allora: ruolo cliente dedicato (amministratore di dominio), nell’interfaccia web e tramite API
- Nessuna procedura guidata per l'importazione automatica delle caselle esistenti
- Certificati tramite Let's Encrypt solo con challenge HTTP — i certificati wildcard richiedono la via DNS e non sono ancora integrati