I have made a sample plugin, not tested yet.
Any suggestions would be apreciated 
File milogin.php
PHP Code:
<?php
// Change username / host based on email address.
// Author: Pedro R. Benito <pedro@ubu.es>
// Last modified: 09/02/2009
//
// 1.- User enters email address instead username.
// 2.- Username and host are selected automaticaly.
class milogin extends rcube_plugin
{
function init()
{
$this->add_hook('startup', array($this, 'startup'));
$this->add_hook('authenticate', array($this, 'authenticate'));
}
function startup($args)
{
$rcmail = rcmail::get_instance();
return $args;
}
function authenticate($args)
{
// File containing domain names and associated config.
// Sample content:
//
// <?php
// $domains = array();
//
// $domains['domain1.tld']['type'] = 'simple';
// $domains['domain1.tld']['host'] = 'host.name.tld';
// ? >
include 'milogin_domains.conf.php';
// Discover user and domain name.
// $parts[0] holds login name.
// $parts[1] holds domain name.
$parts = explode('@',$args['user']);
switch($domains[$parts[1]]['type'])
{
case 'simple':
// username = login name
$args['username'] = $parts[0];
break;
case 'dotted':
// username = loginname.domainname
$args['username'] = $parts[0].".".$parts[1];
break;
}
// Extract host from domain config.
$args['host'] = $domains[$parts[1]]['host'];
return $args;
}
}
?>
File milogin_domains.conf.php
PHP Code:
<?php
$domains = array();
$domains['domain1.tld']['type'] = 'simple';
$domains['domain1.tld']['host'] = 'server1.tld';
$domains['domain2.tld']['type'] = 'dotted';
$domains['domain2.tld']['host'] = 'server2.tld';
?>