Ottima domanda. cerchiamo di risolvere il nodo:
Io memorizzo un una tabella del database i vari dati del cliente, tra cui nome, indirizzo e-mail, data della registrazione e indirizzo ip dal quale si è registrato. Nel campo dell'indirizzo ip metto la parola "manuale" nel caso il cliente ha richiesto l'iscrizione tramite e-mail o telefono... Così posso in qualsiasi momento risalire a quando è stata data l'autorizzazione per l'invio della newsletter.
Se il cliente chiede di essere rimosso dalla mailinglist, setto un flag nel database, ma non cancello i suoi dati. Potrei aggiungere anche ip e data della disiscrizione. Da quel momento semplicemente non gli invio pù e-mail (la richiesta era solo di disdetta newsletter non di cancellazione dati). Questi dati li mantengo per 10 anni...
Se il cliente invece mi chiede di cancellare i suoi dati, li cancello e basta. A meno che non abbia altri rapporti di lavoro con lui, per i quali sono obbligato a conservare i dati per 10 anni... Non penso che il titolare dei dati possa farti causa oltre un tempo ragionevole (un anno?) dal ricevimento dell'ultima newsletter (per i tempi di prescrizione dovresti chiedere un'avvocato).
Se tengo un backup dei dati (uno giornaliero, settimanale, mensile ed uno annuo), sarei obbligato a cancellare i dati anche dal backup. Ma siccome i backup vengono sovrascritti dopo al massimo un anno, questi dati andranno automaticamente persi. Dai backup sarà possibile risalire al momento di iscrizione/disiscrizione del cliente fino a un anno dopo la cancellazione. Se il cliente quindi fa causa entro un'anno, posso recuperare le prove della (dis)iscrizione.
In caso di controlli devi far vedere come funziona il tuo software, e come i dati vengono cancellati.