mi sa che devi fare un passaggio in piu':
codice:
1° query
CREATE TEMPORARY TABLE first
SELECT * FROM archivio
ORDER BY id DESC;

2° query

CREATE TEMPORARY TABLE temp
SELECT * FROM first
GROUP BY email
ORDER BY id;

3° query

TRUNCATE TABLE archivio;

4° query

INSERT INTO archivio
SELECT * FROM temp;
Il group by prende il primo record che soddisfa la condizione a prescindere dall'id, cioe' prende il primo che incontra fisicamente nella tabella. Quindi ordinando prima la tabella per ID DESC sei sicuro che ti prendera' solo i record con l'ID piu' alto.