In base alle mie esigenze e a ciò che ho capito (soprattutto grazie alla risposta di Mich_) ho fatto le seguenti modifiche (righe con commento "***mAx***"):

codice:
 use Authen::PAM;
 $| = 1; #force STDOUT autoflush after each write
 my ($seq,$vrfy,$mode,$user,$passw);
 sub pam_conv_func {
   my @res;
   while ( @_ ) {  
     my $msg_type = shift;
     my $msg = shift;
     #print $msg;
     push @res, 0;
     push @res, $passw;
   }
   push @res, PAM_SUCCESS;
   return @res;
 }

 while(<STDIN>) {
    ($seq,$vrfy,$mode,$user,$passw) = split(/ /);
    unless($mode =~ /^\(.*\)$/) {
     $passw=$user; $user=$mode;
  }
    unless($seq && $vrfy && $user && $passw) {
     print "$seq ERROR Wrong arguments\n";
  } elsif($vrfy ne 'VRFY') {
    print "$seq ERROR Only clear text passwords supported\n";
  } else {
    my ($res,$pamh,$domi);  # ***mAx*** aggiunta dichiarazione variabile 'domi'
    chomp($passw);
    if($user =~/(.+)\@.+/) {$user=$1; $domi=$2}  # strip the domain name if necessary + ***mAx*** assegnazione della seconda parte della stringa a $domi
    if($domi eq "\@dominio3.com") {$domi = "DOM3\\\\"}  # ***mAx*** verifica se il dominio è il 3 e se si lo chiama DOM3
    elsif($domi eq "\@dominio2.it") {$domi = "DOM2\\\\"}  # ***mAx*** verifica se il dominio è il 2 e se si lo chiama DOM2
    else {$domi = "DOM1\\\\"}  # ***mAx*** Il dominio è il n. 1 e lo chiama DOM1
    $user = $domi.$user \n;  # ***mAx*** l'utente si chiama DOMINIOn\\utente
    if(($res=pam_start("login", $user, \&pam_conv_func, $pamh))!=PAM_SUCCESS ||
      ($res=pam_authenticate($pamh, 0))!=PAM_SUCCESS ||
      ($res=pam_end($pamh, 0))!=PAM_SUCCESS) {
    print "$seq ERROR ".pam_strerror($pamh,$res)."\n";
    } else {
    print "$seq OK \n";
     }
   }
 }
Ho dei seri dubbi sulla correttezza della sintassi delle mie modifiche, in particolare della parte riguardante i caratteri speciali all'interno delle stringhe (il risultato finale in $user vorrei che fosse es. DOM1\\giovanni).
Ha un minimo di senso quello che ho scritto? (prima di darlo in pasto al mailserver...).

Ancora grazie a tutti.
mAx