Introdotto rilasciare Samba 4.12.0, che ha continuato lo sviluppo del ramo Samba 4 con un'implementazione completa di un controller di dominio e un servizio Active Directory, compatibile con l'implementazione di Windows 2000 e in grado di servire tutte le versioni di client Windows supportate da Microsoft, incluso Windows 10. Samba 4 è un prodotto server multifunzionale che fornisce anche l'implementazione di un file server, un servizio di stampa e un server di identità (winbind).
Le implementazioni integrate delle funzioni crittografiche sono state rimosse dal codice base a favore dell'utilizzo di librerie esterne. Si è deciso di utilizzare GnuTLS come libreria crittografica principale (è richiesta almeno la versione 3.4.7). Oltre a ridurre le potenziali minacce associate all'identificazione delle vulnerabilità nelle implementazioni integrate degli algoritmi crittografici, il passaggio a GnuTLS ha consentito anche miglioramenti significativi delle prestazioni quando si utilizza la crittografia in SMB3. Durante il test con l'implementazione del client CIFS dal kernel Linux 5.3, è stato registrato un aumento di 3 volte nella velocità di scrittura e un aumento di 2.5 volte nella velocità di lettura.
Aggiunto un nuovo backend per la ricerca su partizioni SMB utilizzando il protocollo Riflettorebasato sui motori di ricerca elasticsearch (in precedenza il backend veniva fornito in base a Localizzatore di GNOME). Al pacchetto è stata aggiunta anche l'utilità "mdfind" con un'implementazione client che consente di inviare richieste di ricerca a qualsiasi server PMI che esegue il servizio Spotlight RPC. Il valore predefinito dell'impostazione "spotlight backend" è stato modificato in "noindex" (per Tracker o Elasticsearch è necessario impostare esplicitamente i valori su "tracker" o "elasticsearch").
Il comportamento delle operazioni "net ads kerberos pac save" e "net eventlog export" è stato modificato in modo che non sovrascrivano più il file, ma visualizzino invece un errore se tentano di esportare in un file esistente.
samba-tool ha migliorato l'aggiunta di voci di contatto per i membri del gruppo. Se in precedenza, utilizzando il comando 'samba-tool group addmemers', potevi semplicemente aggiungere utenti, gruppi e computer come nuovi membri del gruppo, ora c'è il supporto per aggiungere contatti come membri del gruppo.
Lo strumento Samba consente il filtraggio per unità organizzative (OU, Unità organizzativa) o sottoalbero. Sono stati aggiunti i nuovi flag "--base-dn" e "-member-base-dn", consentendo di eseguire un'operazione solo con una determinata parte dell'albero di Active Directory, ad esempio solo all'interno di un'unità organizzativa.
Aggiunto il nuovo modulo VFS 'io_uring' utilizzando la nuova interfaccia del kernel Linux io_uring per I/O asincroni. Io_uring supporta il polling I/O e può funzionare con il buffering (il meccanismo "aio" proposto in precedenza non supportava l'I/O bufferizzato). Quando si lavora con il polling abilitato, le prestazioni di io_uring sono significativamente superiori a quelle di aio. Samba ora utilizza io_uring per supportare SMB_VFS_{PREAD,PWRITE,FSYNC}_SEND/RECV e riduce il sovraccarico di mantenimento di un threadpool nello spazio utente quando si utilizza il backend VFS predefinito. Per creare il modulo VFS 'io_uring', è necessaria la libreria liberare e kernel Linux 5.1+.
VFS offre la possibilità di specificare un valore temporale speciale UTIME_OMIT per contrassegnare la necessità di ignorare l'ora nella funzione SMB_VFS_NTIMES().
In smb.conf è stato interrotto il supporto per il parametro “write cache size”, che è diventato privo di significato dopo l'introduzione del supporto io_uring.
Samba-DC e Kerberos non supportano più la crittografia DES. Rimosso il codice di crittografia debole da Heimdal-DC.
È stato rimosso il modulo vfs_netatalk, che non era più mantenuto e non era più rilevante.
Il backend BIND9_FLATFILE è stato deprecato e verrà rimosso in una versione futura.
La libreria zlib è inclusa come dipendenza dell'assembly. L'implementazione nativa di zlib è stata rimossa dal codice base (il codice era basato su una versione precedente di zlib che non supportava correttamente la crittografia).
È stato stabilito il test fuzzing del codice base, anche nel servizio
oss-fuzz. Durante i test di fuzzing sono stati identificati e corretti molti errori.
Il requisito minimo della versione Python è aumentato da Python
3.4 a Python 3.5. La possibilità di creare un file server con Python 2 viene ancora mantenuta (prima di eseguire ./configure' e 'make', è necessario impostare la variabile d'ambiente 'PYTHON=python2').