use Cyrus::IMAP::Admin; # # assuming all necessary variables have been declared and filled accordingly: # my $client = Cyrus::IMAP::Admin->new($host); my $auth = { -mechanism => 'login', -service => 'imap', -authz => $admin, -user => $admin, -minssf => 0, -maxssf => 10000, -password => $admin_pass, }; $client->authenticate( \%$auth); (print $client->{error} && return(1)) if $client->{error}; # e.g. create a new mailbox: $client->createmailbox('user.' . $mailuser);