API e Softwares Gratuitos

A API aberta IceWarp fornece controle completo do servidor, acesso groupware, gerenciamento de contas e domínios, configurações do servidor, agendamentos, estatísticas e muito mais, accessíveis a partir scripts arbitrários ou programas. A AVI está disponível para todas as linguagens com suporte a objetos COM, imediatamente após a instalação do servidor e sem custos adicionais.


Disponibilizamos, também, uma série de utilitários gratuitos, úteis para administradores e desenvolvedores, que permitem realizar testes de tráfego SMTP, testes de configurações do DNS, analisar e inspecionar erros em logs e muito mais.


Integration com servidor de mail de forma facilitada.

Documentação API

A API oferece a melhor forma de manter seu servidor IceWarp usando qualquer linguagem de programaçãoo, como Visual C++, Visual Studio, Delphi, FreePascal, PHP, ASP, Visual Basic, Microsoft .NET ou qualquer outra. Você pode usar RPC (Remote Procedure Call), bem como objeto COM, para acesso remoto a servidores.


Maiores informações podem ser encontradas na pasta API, na raíz da instalação do Merak. Em api\classes.txt temos uma listagem completa de todas as funções para objetos COM. A listagem completa de variáveis accessíveis via API está no arquivo api\Delphi\APIConst.pas file. Também existem pastas para outras linguagens de programação, mas a mais importante e sempre atualizada será a pasta Delphi. Nessa pasta, você encontrará o código fonte para a ferramenta de linha de comando Tool - tool.exe, que usa a API para realizar diversas tarefas, como criação de contas ou mudanças em múltiplas contas de uma só vez.


Objetos COM também podem ser usados para enviar mensagens de email e mensagens IM, sem necessitar conhecimentos profundos dos protocolos de comunicação. Eles também fornecem acesso a rotinas para manipular arquivos compactados IDP (IceWarp Data Packager).


Objetos COM disponíveis:

  • IceWarpServer.APIObject
  • IceWarpServer.DomainObject
  • IceWarpServer.AccountObject
  • IceWarpServer.RemoteAccountObject
  • IceWarpServer.ScheduleObject
  • IceWarpServer.StatisticsObject
  • IceWarpCOM.GroupWare
  • IceWarpCOM.Mailer
  • IceWarpCOM.IMMessage
  • IceWarpCOM.IDP

Todos objetos COM podem operar com nomes de variáveis publicados na pasta API.

IceWarpServer.APIObject

Funções para definir e realizar queries em configurações globais do servidor, permitindo ainda criar/editar/excluir domínios do mail server. Também pode ser usado para adicionar/editar/excluir contas.


<?    
$api=new COM('IceWarpServer.APIObject');        
$tarpit = $api->GetProperty('C_Config_Delivery_Tarpitting');      
echo 'Tarpitting is '.($tarpit==0 ? 'disabled':'enabled').'<br />';        
$api->SetProperty('C_Config_Delivery_Tarpitting', ($tarpit==0 ? 1 : 0));      
echo 'Tarpitting has been '.($tarpit==0 ? 'enabled':'disabled');       
$api->Save();    
$api->UpdateConfiguration();      
$api->Release();  
?> 

IceWarpServer.DomainObject

Funções para definir e realizar query das configurações de domínios, permitindo a criação/edição/exclusão de domínios.


<?    
$dom=new COM('IceWarpServer.DomainObject');
$dom->New('newdomain.com');    
$dom->Save();      
echo 'newdomain.com was created';       
$dom->Release();  
?>  

IceWarpServer.AccountObject

Funções para definir e realizar query das configurações de contas.


<?    
$account=new COM('IceWarpServer.AccountObject');      
$account->New('newuser@newdomain.com');    
$account->SetProperty('U_Password', 'newpassword');      
if ($account->Save())      
echo 'Account newaccount@newdomain.com was created';    
else      
echo 'Error creating account newaccount@newdomain.com';       
$account->Release();  
?> 

IceWarpServer.RemoteAccountObject, IceWarpServer.ScheduleObject

Simples conjunto de funções para definir e realizar query de configurações de contas remotas.


<?    
$ra=new COM('IceWarpServer.RemoteAccountObject');      
$ra->Open(0); // Opens the first remote account    
$schedule = $ra->GetSchedule('ra_schedule');
// Retrieve schedule for the object      
$schedule->Count = 1; // Sets 1 schedule item      
$schedule->SetProperty("s_weekdays_su", true);    
$schedule->SetProperty("s_weekdays_mo", true);    
$schedule->SetProperty("s_weekdays_tu", true);    
$schedule->SetProperty("s_weekdays_we", true);    
$schedule->SetProperty("s_weekdays_th", true);    
$schedule->SetProperty("s_weekdays_fr", true);    
$schedule->SetProperty("s_weekdays_sa", true);    
$schedule->SetProperty("s_scheduletype", 0); // Every x minutes type    
$schedule->SetProperty("s_every", 1200); // Sets 20 minutes    
$schedule->SetProperty("s_wholeday", true); // whole day interval      
$ra->SetSchedule('ra_schedule', $schedule); // Sets the changed schedule     
$ra->Save(); // Save the changed remote account  
?>   

IceWarpServer.StatisticsObject

Interface para obtenção de informações estatísticas, como o tempo que determinado serviço está em execução e tráfego dos serviços.


<?    
$stats=new COM('IceWarpServer.StatisticsObject');      
$stats->Poll('SMTP');      
echo  $stats->GetProperty('st_smtp_messagesout')  . ' messages sent out';      
$statsi->Release();  
?>  

IceWarpCOM.GroupWare

Interface para acesso ao groupware usando a API GroupWare e GroupWare PHP class.


<?    
require_once('gw.php'); 
$gw=new MerakGWAPI(); 
$gw->user='john@doe.com;      
$gw->pass='secret';      
$gw->Login();      
$gw->OpenGroup('*');      
$gw->OpenFolder('Contacts');      
$vcard='
BEGIN:VCARD
VERSION:2.1
PRODID:-//IceWarp//Merak Mail Server 9.0.0-3//EN
FN:John Doe
N:Doe;John
NOTE;ENCODING=QUOTED-PRINTABLE:Multiple line note=0D=0AAnother=0D=0AMore=0D=0AAnd more
URL;http://www.icewarp.com.br/
UID:370398ef4001
CLASS:PUBLIC
SEQUENCE:1
CREATED:20070803T170731Z
DTSTAMP:20070803T170731Z
LAST-MODIFIED:20070803T170747Z
ORG:IceWarp Ltd.
END:VCARD';

$gw->FunctionCall($fid, 'AddVCard', $vcard);      
?>  

IceWarpCOM.Mailer

Funções para enviar mensagens em texto puro ou HTML, adicionar anexos, inserir imagens incorporadas no corpo da mensagem, especificar charsets, Cc, Reply-Para ou quaisquer cabeçalhos customizados. Sintaxe 100% compatível com o famoso componente ASP Email.

Mensagem de texto puro em PHP

<?    
$com = new COM("IceWarpCOM.Mailer"); 
$com->RemoteHost = "smtp.mydomain.com";
$com->Helo = "mycomputer.mydomain.com";
$com->FromName = "John Doe";
$com->FromAddress = "john@mydomain.com";
$com->AddRecipient("mother@mydomain.com", "Mom");
$com->Subject = "Hi mom";
$com->BodyText =  "Just wanted to let you know I have new 
IceWarp Server installed.".  "\n\nSincerely,".  "\nJohn";
if (!$com->SendMail()) echo $com->Response;
$com->Release();
$com = null;  
?>    

Mensagem de texto puro em ASP

<%  
Set Mail = Server.CreateObject( "IceWarpCOM.Mailer" )    
Mail.RemoteHost = "localhost"  
Mail.Helo = "localhost"    
Mail.FromName = "User One"  
Mail.FromAddress = "user1@demodomain.com"  
Mail.MailFrom = Mail.FromAddress  
Mail.AddRecipient "user2@demodomain.com.br", "User Two"    
Com.Subject = "Test message"  
Com.IsHTML = "True"  
Com.BodyText = "IceWarp COM objects under IIS work"    
If Not Com.SendMail Then Response.Write com.Response    
Set Com = Nothing  
%>   

Mensagem HTML em PHP

<?    
$com = new COM("IceWarpCOM.Mailer");      
$com->RemoteHost = "smtp.mydomain.com";    
$com->Helo = "mycomputer.mydomain.com";      
$com->FromName = "John Doe";    
$com->FromAddress = "john@mydomain.com";      
$com->AddRecipient("mother@mydomain.com", "Mom");      
$com->Subject = "Hi mom";      
$com->IsHTML = True;       
$com->BodyText =  "... one more thing - I can now send even 
HTML messages from my scripts!".  "\n\nSincerely,".  "\nJohn";      
if (!$com->SendMail()) echo $com->Response;      
$com->Release();    
$com = null;  
?> 

Message com anexo em PHP

<?    
$com = new COM("IceWarpCOM.Mailer");      
$com->RemoteHost = "smtp.mydomain.com";    
$com->Helo = "mycomputer.mydomain.com";      
$com->FromName = "John Doe";    
$com->FromAddress = "john@mydomain.com";      
$com->AddRecipient("bob@mydomain.com", "Bob Smith");      
$com->Subject = "Annual report";      
$com->BodyText =  "Hi Bob,\n".  "sending you the annual report.
 See attachment.".  "\n\nRegards,".  "\nJohn";    
$com->AddAttachment(  "c:\\Documents and Settings\\John\\report.rtf");      
if (!$com->SendMail()) echo $com->Response;      
$com->Release();    
$com = null;  
?>    

Mensagem com imagem incorporada no corpo em PHP

<?    
$com = new COM("IceWarpCOM.Mailer");      
$com->RemoteHost = "localhost";    
$com->Helo = "localhost";      
$com->FromName = "Martin";    
$com->FromAddress = "admin@localhost";    
$com->AddRecipient("admin@localhost", "Lobogo :)");    
$com->Subject = "COM obj test";    
$com->IsHTML = "True";      
$com->BodyText = "<html><head>".  "<meta 
http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1
\">".  "</head><body><img src=\"cid:123\">".  "</body></html>";  
$com->AddEmbeddedImage("c:\\image.jpg", "123");      
if (!$com->SendMail()) echo $com->Response;      
$com->Release();    
$com = null;  
?>

IceWarpCOM.IMMessage

Funções para verificar o status de contatos IM e enviar mensagens IM, com suporte a quaisquer tags customizadas XML.

Mensagem IM em PHP (bob@mydomain.com precisa estar na lista de contatos do John)

<?    
$com = new COM("IceWarpCOM.IMMessage");      
$com->MessageFrom = "john@mydomain.com";    
$com->MessageTo = "bob@mydomain.com";    
$com->MessageSubject = "Hey pal";    
$com->MessageBody = "This IM message was sent from my web site";      
if (!$com->SendMessage()) echo "Error";      
$com->Release();    
$com = null;  
?>

Mensagem IM em ASP (remetente e destinatário precisam ter autorizado um ao outro em suas listas de contatos)

<%  
Set IM = Server.CreateObject("IceWarpCOM.IMMessage")    
Im.MessageFrom = "user1@demodomain.com"  
Im.MessageTo = "user2@demodomain.com"  
Im.MessageSubject = "TEST"  
Im.MessageBody = "UNO DUE TRES QUATRO"    
If Not Im.SendMessage Then  
Response.Write "Error sendin message to " & Im.MessageTo & "    "  
Else  Response.Write "Message Sent  "  
End If    
If Im.IsOnline( Im.MessageTo ) Then  
Response.Write Im.MessageTo & " is online  "  
End If    
Set Im = Nothing    
%>   

Query de Presença IM em PHP

<?    
$com = new COM("IceWarpCOM.IMMessage");      
$buddy = "bob@mydomain.com";      
echo $buddy . ' is ';    
if (!$com->IsOnline($buddy)) echo 'NOT';    
echo 'online';      
$com->Release();    
$com = null;  
?> 

IceWarpCOM.IDP

Funções para adicionar e extrair arquivos para/de arquivos compactados IDP (IceWarp Data Packager).

Adicionando arquivo a um arquivo compactado IDP com PHP (precisa ser executado por usuário com permissão de escrita no diretório)

<?    
$com = new COM('IceWarpCOM.IDP');
$com->AddFiles('temp.idp', 'c:\windows\temp')
$com->Release();
$com = null;  
?>