Grazie ragazzi, ho adottato la soluzione della realloc perché è più vicina alle mie esigenze; le altre prevedono un numero di inserimenti predefiniti e a me non piace.

Capito anche il problema malloc all'interno del ciclo (in effetti era logico), però email lo tratto come se fosse un array perché voglio che sia un array di struct mail e credo di esserci riuscito perché mi stampa in ordine tutti gli indirizzi che vado ad inserire