Non mi intendo di autenticazioni, ma capisco qualcosa sulle RE.
Prova a modificare il tuo pezzo:
codice:
  if($user =~/(.+)\@.+/) {
    $user=$1;
  }
in:
codice:
  if($user =~/(.+)\@(.+?)\./) {
    $user = $1;
    my $domi = $2;
    print "utente: $user == dominio: $domi \n";
  }
Nota che ho dichiarato la variabile $domi dentro la routine, cosa che probabilmente non ti va bene (dovrai dichiararla fuori da qualche parte, altrimenti non riesci ad usarla)
Ho aggiunto il print per controllo, poi andra` tolto.
Non so come potrai usare $domi, ma credo dovrai avere una lista di domini ammessi (che deve essere scritta nel codice in modo che non possa venir modificata da altri) e verificare che sia uno di quelli.


PS: quando posti codice, usa il tag VB CODE, che puoi inserire anche tramite il bottone CODE sopra l'area di testo