The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

Net::Axigen - Perl extension for Gecad Technologies Axigen Mail Server (www.axigen.com). This module use Axigen CLI interface.

DESCRIPTION

Module Net::Axigen is intended for creation and removal of domains, accounts, handle of quotas, and also execution of other necessary operations on handle of a Gecad Technologies Axigen Mail Server.

Operation with a mail server is carried out by means of Telnet protocol with Net::Telnet module usage.

Note: Gecad Technologies do not offer support and should not be contacted for support regarding the Perl module Net::Axigen. Gecad Technologies and the author of the Net::Axigen module do not take full responsibility in case of miss-usage of the Perl module or for any damage caused in this matter.

SYNOPSIS

Connections

        use Net::Axigen;
        my $axi = Net::Axigen->new('127.0.0.1', 7000, 'admin', 'password', 10);
        $axi->connect();
        ...
        my $rc=$axi->close();

Axigen Mail Server and OS version

        my ($version_major, $version_minor, $version_revision)=$axi->get_version();
        my ($os_version_full, $os_name, $os_version_platform)=$axi->get_os_version();

Domains

        $axi->createDomain($domain, $postmaster_password, $maxFiles);
        $axi->unregisterDomain('my-domain.com');
        $axi->registerDomain('my-domain.com');

        my $domain_list = $axi->listDomains();
        foreach my $ptr(@$domain_list) { print "$ptr\n"; }

        my $domain_info = $axi->listDomainsEx();
        print "Domain \t\tUsed\tTotal\n";
        foreach my $domain( sort keys %$domain_info) 
        {
          print "$domain:\t".$domain_info->{ $domain }->{used}."\t".$domain_info->{ $domain }->{total}."\n"; 
        }

Accounts

        my $account_list = $axi->listAccounts('my-domain.com');
        foreach my $ptr(@$account_list) { print "$ptr\n"; }

  my $account_list = $axi->listAccountsEx($domain);
  print "Account \t\tFirst Name\tSecond Name\n";
  foreach my $acc( sort keys %$account_list) 
  {
     print "$acc\t".$account_list->{ $acc }->{firstName}."\t".$account_list->{ $acc }->{lastName}."\n"; 
  }
        
        $axi->addAccount($domain, $user, $password);
        $axi->removeAccount($domain, $user);

        $axi->setAccountContactData($domain, $user, $firstName, $lastName);
        $axi->setQuotaLimitNotification($domain, $user, $notificationSubject, $notificationMsg);
        $axi->setAccountPassword($domain, $user, $password);

Quotas

        my $quota = 
        { 
          maxAccounts => 10, # admin limits
          maxAccountMessageSizeQuota => 200000, # admin limits
          maxPublicFolderMessageSizeQuota => 300000, # admin limits
          messageSize => 20000, # domain quota
          totalMessageSize => 200000 # domain quota
        };
        $axi->setDomainQuotas($domain, $quota);
        
        # $domain - the domain in which the account will be removed;
        # $quota - quota hash ptr

Storage Files

        $axi->compactAll($domain);
        $axi->compactAllDomains();

SAMPLES

Samples of usage of the Net::Axigem module are in folder Net-Axigen\samples

        samples/domain_create.pl
        samples/domain_unregister.pl
        samples/domain_register.pl
        samples/add_account.pl
        samples/remove_account.pl
        samples/compact_domains.pl
        samples/accounts_info.pl
        samples/io_exception_dbg.pl

METHODS

new()

Instantiates a new instance of a Net::Axigen.

 my $axi = Net::Axigen->new($host, $port, $user, $password, $timeout);
 
 # $host - Mail Server host
 # $port - CLI connection port
 # $user - CLI admin user
 # $password - admin password
 # $timeout - Telnet timeout
connect()

Connect to Axigen Mail Server

 $axi->connect();
close()

Close Axigen Mail Server connection

 my $rc=$axi->close();
get_version()

Get Axigen mail Server Version

 my ($version_major, $version_minor, $version_revision)=$axi->get_version();
get_os_version()

Get OS Version

 my ($os_version_full, $os_name, $os_version_platform)=$axi->get_os_version();
listDomains()

List all domains, registered on Axigen Mail Server

 my $domain_list = $axi->listDomains();
 foreach my $ptr(@$domain_list) { print "$ptr\n"; }
listDomainsEx()

List all domains, registered on Axigen Mail Server, get the total and used size

 my $domain_info = $axi->listDomainsEx();
 print "Domain \t\tUsed\tTotal\n";
 foreach my $domain( sort keys %$domain_info)
 {
  print "$domain:\t".$domain_info->{ $domain }->{used}."\t".$domain_info->{ $domain }->{total}."\n"; 
 }
createDomain()

Create domain.

 $axi->createDomain($domain, $postmaster_password, $maxFiles);
 
 # $domain - created domain name;
 # $postmaster_password - password for postmaster@domain account;
 # $maxFiles - Max quantity of domain storage files (filesize 256 Mbyte)
registerDomain()

Register unregistered domain.

 $axi->registerDomain($domain);
 # $domain - registered domain name;
unregisterDomain()

Unregister domain.

 $axi->unregisterDomain($domain);
 # $domain - unregistered domain name;
setDomainQuotas()

Set domain quotas.

 my $quota = 
 { 
   # Maximum quantity of mail boxes (admin limit)
   maxAccounts => 10, 
        
   # The maximum size of mail boxes (admin limit)
   maxAccountMessageSizeQuota => 20000,
        
   # The maximum size of Public Folders (admin limit)
   maxPublicFolderMessageSizeQuota => 30000,
         
   # The maximum size mail messages (domain quota)
   messageSize => 20000,
         
   # The maximum size of mail boxes (domain quota)
   totalMessageSize => 200000
 };
 $axi->setDomainQuotas($domain, $quota);
 
 # $domain - the domain in which the account will be removed;
 # $quota - quota hash ptr
setQuotaLimitNotification()

Set account quota limit notification - subject and message.

 $axi->setQuotaLimitNotification($domain, $user, $firstName, $lastName);
 
 # $domain - the domain in which the account will be removed;
 # $user - account name;
 # $notificationSubject - subject; 
 # $notificationMsg - message
 
listAccounts()

List all domain accounts.

 my $account_list = $axi->listAccounts('my-domain.com');
 foreach my $ptr(@$account_list) { print "$ptr\n"; }
listAccountsEx()

List all domain accounts whith contact information.

 my $account_list = $axi->listAccountsEx($domain);
 print "Account \t\tFirst Name\tSecond Name\n";
 foreach my $acc( sort keys %$account_list) 
 {
   print "$acc\t".$account_list->{ $acc }->{firstName}."\t".$account_list->{ $acc }->{lastName}."\n"; 
 }
 
addAccount()

Add account.

 $axi->addAccount($domain, $user, $password);
 
 # $domain - the domain in which the account will be added;
 # $user - account name;
 # $password - account password
removeAccount()

Remove account.

 $axi->removeAccount($domain, $user);
 
 # $domain - the domain in which the account will be removed;
 # $user - account name
setAccountContactData()

Set account contact data - first name, last name.

 $axi->setAccountContactData($domain, $user, $firstName, $lastName);
 
 # $domain - the domain in which the account will be removed;
 # $user - account name;
 # $firstName - first name; 
 # $lastName - last name
setAccountPassword()

Set account password.

 $axi->setAccountPassword($domain, $user, $password);
 
 # $domain - the domain in which the account will be removed;
 # $user - account name;
 # $password - new password 
setAccountWebMailLanguage()

Set account WebMail Language.

 $axi->setAccountWebMailLanguage($domain, $user, $lang);
 
 # $domain - the domain in which the account will be removed;
 # $user - account name;
 # $lang - language 
saveConfig()

Save Axigen config file.

 $axi->saveConfig();
compactAll()

Compact domain storage files.

 $axi->compactAll($domain);
compactAllDomains()

Compact all domains storage files.

 $axi->compactAllDomains();
to_utf8()

Convert to utf-8.

 $axi->to_utf8($src);

SEE ALSO

Gecad Technologies Axigen Mail Server Site: http://www.axigen.com

AUTHOR

Alexandre Frolov, <alexandre@frolov.pp.ru>

COPYRIGHT AND LICENSE

Copyright (C) 2009 by Alexandre Frolov

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.8 or, at your option, any later version of Perl 5 you may have available.

1 POD Error

The following errors were encountered while parsing the POD:

Around line 787:

=pod directives shouldn't be over one line long! Ignoring all 2 lines of content