API für Entwickler

Machen Sie den IceWarp Mail Server zu Ihrer persönlich zugeschnittenen Lösung indem Sie ihn genau so erweitern wie Sie es haben möchten. Und zwar ohne zusätzliche Kosten!

Die offen zugängliche API erlaubt dem Entwickler die vollständige Kontrolle über den IceWarp Server. Ob Zugriff auf GroupWare-Elemente, Verwaltung von Konten oder ganzen Domänen, Konfiguration von Server-Einstellungen, all dies kann aus einem beliebigen Script oder Programm gesteuert werden. Die API kann für alle Programmiersprachen eingesetzt werden, welche die COM-Technologie unterstützen. Die API steht unmittelbar nach Installation des IceWarp Servers zur Verfügung, es fallen keine zusätzlichen Kosten für Sie an. Ausserdem können Sie unsere kostenlosen Tools von der Website herunterladen, welche Server-Traffic simulieren, die DNS-Konfigurationen testen, Fehler identifizieren und analysieren können, damit einer reibungslosen Integration nichts mehr im Wege steht.


Mailserver Integration einfach gemacht...

Dokumentation der API

Die API ist bestens dazu geeignet, Ihren IceWarp Server durch ein eigen erstelltes Visual C++, Visual Studio, Delphi, FreePascal, PHP, ASP, Visual Basic oder Microsoft .NET Programm zu konfigurieren oder zu warten. über RPC (Remote Procedure Call) können Sie remote auf die COM-Objekte des Servers zugreifen.

Weitere Informationen zur API finden Sie im API folder im Rootverzeichnis Ihrer Installation. Eine vollständige Liste der unterstützten Funktionen für COM-Objekte ist in der Datei api\classes.txt enthalten; eine weitere Liste der über die API zugreifbaren Variablen ist in api\Delphi\APIConst.pas enthalten. Obschon Dokumentationen für andere Programmiersprachen verfügbar sind, ist die ausführlichste und aktuellste Dokumentation für die Sprache Delphi verfasst worden. In diesem Ordner finden Sie auch Source Code für das Kommandozeilen-Tool (tool.exe), welches eng mit der API zusammenarbeitet und somit als gutes Beispiel selbst für komplizierte Applikationen verwendet werden kann.

COM-Objekte können genutzt werden, um E-Mail und IM-Nachrichten zu versenden. Sie bieten eine abstrahierte Schnittstelle, weshalb Sie sich nicht um die Details aller Kommunikationsprotokolle zu kümmern brauchen. COM-Objekte stellen auch Zugriff auf IDP-Routinen zur Verfügung, zwecks der Manipulation von IDP-Archiven.

Verfügbare COM-Objekte:

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

All diese COM-Objekte können mit den im API-Ordner publizierten Variablen operieren.

IceWarpServer.APIObject

Dieses Objekt enthält Funktionen, um globale Einstellungen des Servers abzufragen und zu setzen. Das APIObject ermöglicht, Domänen des Mail-Servers zu erstellen, editieren oder zu löschen. Schliesslich können Sie Konten hinzufügen, editieren oder löschen.


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

IceWarpServer.DomainObject

Dieses Objekt enthält Funktionen, um Domäneneinstellungen abzufragen und zu setzen sowie ganze Domänen zu erstellen, editieren oder zu löschen.


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

IceWarpServer.AccountObject

Dieses Objekt enthält Funktionen, um Kontoeinstellungen abzufragen und zu setzen.


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

IceWarpServer.RemoteAccountObject, IceWarpServer.ScheduleObject

Ein Set an Funktionen, um Konteneinstellungen remote abzufragen und zu setzen.


<?php        
 $ra=new COM('IceWarpServer.RemoteAccountObject');        
 $ra->Open(0); // Open the first remote account        
 $schedule = $ra->GetSchedule('ra_schedule');        
 if($schedule->Count>0)        
 {        
   $schedule->Select(0); // Select the first schedule as active        
   $schedule->SetProperty("s_weekdays_su", false);        
   $schedule->SetProperty("s_weekdays_mo", true);        
   $schedule->SetProperty("s_weekdays_tu", false);        
   $schedule->SetProperty("s_weekdays_we", true);        
   $schedule->SetProperty("s_weekdays_th", false);        
   $schedule->SetProperty("s_weekdays_fr", true);        
   $schedule->SetProperty("s_weekdays_sa", false);        
   $schedule->SetProperty("s_scheduletype", 0); // Every x minutes type        
   $schedule->SetProperty("s_every", 1200); // Set 20 minutes        
   $schedule->SetProperty("s_wholeday", true); // Whole day interval        
 }        
 $ra->SetSchedule('ra_schedule', $schedule); // Set the changed schedule        
 $ra->Save();        
?>        

IceWarpServer.StatisticsObject

Dies ist ein Interface, um statistische Informationen wie beispielsweise die Laufzeit oder Traffic von Diensten abzufragen.


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

IceWarpCOM.GroupWare

Dies ist ein Interface, um mithilfe der GroupWare API und GroupWare PHP Klasse auf GroupWare zuzugreifen.


<?php        
 require_once('.\webmail\server\inc\gw\gwapi.php');        
 $gw=new MerakGWAPI();        
 $gw->user='john.doe@icewarpdemo.com';        
 $gw->pass='secret';        
 $gw->Login();        
 $gid = $gw->OpenGroup('*');        
 $fid = $gw->OpenFolder($gid, 'Contacts');        
 $list = $gw->ParseParamLine($gw->FunctionCall('GetContactList', $fid));        
 $data = array();        
 for ($i=0;$i        
   $id = $list[$i][CONTACT_ID];        
   $data[] = $gw->FunctionCall('GetVCard', $fid, $id);        
 }        
 $vcard='
    BEGIN:VCARD
    VERSION:2.1
    PRODID:-//IceWarp//Merak Mail Server 9.2.1//EN
    FN:John Doe
    N:Doe;John
    NOTE;ENCODING=QUOTED-PRINTABLE:Multi-line note=0D=0AAnother=0D=0AMore=0D=0AAnd more
    URL;http://www.icewarp.com/
    UID:370398ef4001
    CLASS:PUBLIC
    SEQUENCE:1
    CREATED:20080503T170731Z
    DTSTAMP:20080503T170731Z
    LAST-MODIFIED:20080503T170747Z
    ORG:IceWarp Inc.
    END:VCARD';        
 $gw->FunctionCall('AddVCard', $fid, $vcard);        
?>        

IceWarpCOM.Mailer

Dieses Objekt enthält Funktionen, um Klartext oder HTML-Nachrichten zu senden und um Anhänge, eingebettete Bilder, spezifische Zeichensätze, Cc, Reply-To oder beliebig angepasste Headers einer E-Mail Nachricht hinzuzufügen. Das Mailer-Objekt ist zu 100% kompatibel zur Syntax der bekannten ASP-E-Mail-Komponente.

Nachricht als Klartext in PHP

<?php        
 $com = new COM("IceWarpCOM.Mailer");        
 $com->RemoteHost = "localhost";        
 $com->Helo = "mycomputer.icewarpdemo.com";        
 $com->FromName = "John Doe";        
 $com->FromAddress = "john@icewarpdemo.com";        
 $com->AddRecipient("mother@icewarpdemo.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;        
   else echo "Mail was sent";        
 $com = null;        
?>        

Nachricht als Klartext in ASP

<%  
Set Com = Server.CreateObject( "IceWarpCOM.Mailer" )    
Com.RemoteHost = "localhost"  
Com.Helo = "localhost"    
Com.FromName = "User One"  
Com.FromAddress = "user1@demodomain.com"  
Com.MailFrom = Mail.FromAddress  
Com.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  
%>   

HTML-Nachricht in PHP

<?php        
 $com = new COM("IceWarpCOM.Mailer");        
 $com->RemoteHost = "localhost";        
 $com->Helo = "mycomputer.icewarpdemo.com";        
 $com->FromName = "John Doe";        
 $com->FromAddress = "john@icewarpdemo.com";        
 $com->AddRecipient("mother@icewarpdemo.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;        
 else echo "Mail was sent";        
 $com = null;        
?>        

Nachricht mit Anhängen in PHP

<?php        
 $com = new COM("IceWarpCOM.Mailer");      
 $com->RemoteHost = "localhost";    
 $com->Helo = "mycomputer.icewarpdemo.com";      
 $com->FromName = "John Doe";    
 $com->FromAddress = "john@icewarpdemo.com";      
 $com->AddRecipient("bob@icewarpdemo.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;        
 else echo "Mail was sent";        
 $com = null;        
?>        

Nachricht mit eingebettetem Bild in PHP

<?php        
 $com = new COM("IceWarpCOM.Mailer");        
 $com->RemoteHost = "localhost";        
 $com->Helo = "mycomputer.icewarpdemo.com";        
 $com->FromName = "John Doe";        
 $com->FromAddress = "john@icewarpdemo.com";        
 $com->AddRecipient("bob@icewarpdemo.com", "Bob Smith");        
 $com->Subject = "Bob you have to see this...";        
 $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;        
 else echo "Mail was sent";        
 $com = null;        
?>        

IceWarpCOM.IMMessage

Dieses Objekt enthält Funktionen, um den Status von IM Kontakten zu überprüfen und IM Nachrichten zu senden. Es werden beliebige XML Tags unterstützt.

IM-Nachricht in PHP (bob@icewarpdemo.com muss in John's Kontaktleiste sein)

<?php        
 $com = new COM("IceWarpCOM.IMMessage");        
 $com->MessageFrom = "admin@icewarpdemo.com";        
 $com->MessageTo = "john@icewarpdemo.com";        
 $com->MessageSubject = "Hey pal";        
 $com->MessageBody = "This IM message was sent from my web site";        
 $com->SendMessage();        
 $com = null;        
?>        

IM-Nachricht in ASP (Sender und Empfänger müssen sich gegenseitig in der Kontaktleiste eingetragen haben)

<%  
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 sending 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    
%>   

Abfrage des IM-Status in PHP

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

IceWarpCOM.IDP

Dieses Objekt enthält Funktionen, um Dateien in IDP-Archive einzufügen bzw. um Dateien vom IDP-Archiv zu extrahieren.

Datei in ein IDP-Archiv einfügen in PHP (Muss ein User mit Schreibrecht auf das Verzeichnis ausführen)

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