SmtpService
Mit dem SmtpService stellt der Integration Server einen kompletten SMTP-Server bereit, der durch seine Integration in das Gesamtsystem in der Lage ist, alle angeschlossenen Applikationen über eingegangene Mails zu informieren.
Der SmtpService des Integration Servers bietet die folgenden Möglichkeiten, mailbasierten Datenaustausch anzubieten.
Mailempfang unter Nutzung des SMTP-Protokolls.
Einschränkung der einliefernden Partner unter Nutzung von Authentifizierungsverfahren, wie z. B. PLAIN oder LOGIN bei ASMTP.
XML-Konfiguration
Wichtiger Hinweis: Die Verfügbarkeit eines Services hängt von der erworbenen Lizenz ab und davon, ob der Service innerhalb der Konfigurationsdatei ./etc/factory.xml der Service-Factory eingetragen wurde (Änderungen erfordern Server-Neustart!). Dort finden Sie auch die zuständige Konfigurationsdatei für einen Service, ansonsten können Sie die Konfigurationsdatei des Services auch direkt in der GUI des Services bearbeiten (Änderungen erfordern Service-Neustart!).
Folgendes XML-Fragment mit allen möglichen Basiseinstellungen kann für die Konfiguration des SmtpServices verwendet werden.
<
Set
name
=
"defaultMessageService"
>MessageService</
Set
>
<
Set
name
=
"listenAddress"
>0.0.0.0</
Set
>
<
Set
name
=
"maxAllowedMailSize"
>2048</
Set
>
<
Set
name
=
"numberOfThreads"
>5</
Set
>
<
Set
name
=
"usePersistantMessaging"
>true</
Set
>
<
Set
name
=
"port"
>25</
Set
>
Dabei haben die einzelnen Parameter die folgende Bedeutung.
defaultMessageService |
Der Name des MessageServices, der für die Weiterleitung von eingehenden Mails verwendet werden soll. |
listenAddress |
Die IP-Adresse des Netzinterfaces, auf die eingehende Anfragen beschränkt sein sollen. Sollen alle Interfaces unterstützt werden, kann der Aufruf weggelassen oder wie im obigen Beispiel gesetzt werden. |
maxAllowedMailSize |
Die maximale Größe in Bytes, die eine E-Mail haben darf, damit sie vom SmtpService noch akzeptiert wird. Die Größe ist in KB (1024 Bytes) anzugeben. Sollen also z. B. 2 MB (die Standardeinstellung) maximal akzeptiert werden, ist der Wert 2048 anzugeben. Der Wert -1 legt fest, dass kein Größen-Limit existiert. |
numberOfThreads |
Die Anzahl an Threads, die parallel auf eingehende Anfragen warten. Sind alle Threads mit Anfragen beschäftigt, sind weitere Anfragen von der Verarbeitung blockiert. Daher ist die Anzahl genügend hoch zu setzen, um Geschwindigkeitseinbußen zu vermeiden. |
port |
Der für den Empfang von eingehenden SMTP-Anfragen zu verwendende Port. |
usePersistantMessaging |
Die Mails werden als persistente Messages an den MessageService weitergegeben. |
SMTPS aktivieren
Um SMTPS zu aktivieren, muss folgender Abschnitt eingefügt werden.
<
Set
name
=
"tlsPort"
>465</
Set
>
<
Set
name
=
"tlsSubjectName"
>*CN=*SMTP Server Certificate Example*</
Set
>
<
Set
name
=
"tlsRequired"
>true</
Set
>
Über tlsPort wird eine zusätzlicher Port aktiviert, auf dem gehorcht wird und über das direkt TLS-Verbindungen aufgebaut werden. Damit das funktioniert, benötigt man als Server ein zugehöriges Zertifikat, das man über den Suchstring tlsSubjectName einstellen muss. Ist das eingestellt und wird ein Zertifikat gefunden, wird auf dem unverschlüsselten Port das Kommando STARTTLS angeboten, das einem das Umschalten auf TLS erlaubt. Mit tlsRequired auf true muss STARTTLS ausgeführt werden, bevor eine weitere Operation durchgeführt werden kann, ansonsten ist die Nutzung optional.
Setzen von Whitelist- und Blacklist-Einträgen
Mit diesem XML-Fragment kann eine Whitelist (erlaubte Adressen) und Blacklist (nicht erlaubte Adressen) hinzugefügt werden.
Mit addIpAddress erfolgt das Hinzufügen einer einzelnen IP-Adresse, mit addAddressRange ein Adressbereich.
<!-- define white access list here -->
<
Call
name
=
"getWhiteAccessList"
>
<
Call
name
=
"addIpAddress"
>
<
Arg
>a single IP address</
Arg
>
</
Call
>
<
Call
name
=
"addAddressRange"
>
<
Arg
>base IP address</
Arg
>
<
Arg
>a netmask</
Arg
>
</
Call
>
</
Call
>
<!-- define black access list here -->
<
Call
name
=
"getBlackAccessList"
>
<
Call
name
=
"addIpAddress"
>
<
Arg
>a single IP address</
Arg
>
</
Call
>
<
Call
name
=
"addAddressRange"
>
<
Arg
>base IP address</
Arg
>
<
Arg
>a netmask</
Arg
>
</
Call
>
</
Call
>
Einschränken auf bestimmte Sender und Empfänger
Wenn die Datei ./etc/mail_address.properties vorhanden ist, können dort E-Mail-Sender und E-Mail-Receiver (auch CC) eingetragen werden, auf die eingehende E-Mails überprüft werden. Nur wenn in der empfangenen E-Mail sowohl Sender als auch Empfänger in dieser Datei gefunden werden, wird die E-Mail verarbeitet. Das ist besonders für den DMZ-Betrieb sinnvoll um Spam-E-Mails auszuschliessen. Die Datei ist folgendermaßen aufgebaut.
# define access list for smtp service
# only accept mails if sender address or (cc) recipients of incoming mail
# are found within this list
# addresses are separated by ;
# example:
# mail.sender=info@lobster.de;lobster.de
# mail.recipients=dw@lobster.de;lobster.de
#
mail.sender=lobster.de;test.org
mail.recipients=hub.org;xxx.org
Hinzufügen einer SmtpAction
Folgendes XML-Fragment fügt dem SmtpService eine SmtpAction hinzu.
<
Call
name
=
"addAction"
>
<
Arg
>
<
New
class
=
"com.ebd.hub.services.smtp.SmtpAction"
>
<
Arg
>System</
Arg
>
<
Arg
>smtp</
Arg
>
<
Call
name
=
"add"
>
<
Arg
>allowedAddress@domain</
Arg
>
</
Call
>
</
New
>
</
Arg
>
</
Call
>
Die beiden Parameter entsprechen dem zu verwendenden Message-Kontext und der zu verwendenden Message-Queue. Für jede E-Mail-Adresse, die für diese Queue aktiviert werden soll, ist ein entsprechender Call-Eintrag der Konfiguration hinzuzufügen.
Setzen eines NoActionDefinedHandlers
Wird eine E-Mail empfangen, die keine E-Mail-Adresse enthält, für die eine SmtpAction definiert wurde, können diese an einen entsprechenden Handler weitergegeben werden. Ist kein solcher Handler gesetzt, werden diese eingegangenen Mails ignoriert und verworfen. Folgendes XML-Fragment fügt dem SmtpService einen NoActionDefinedHandler hinzu.
<
Call
name
=
"setNoActionDefinedHandler"
>
<
Arg
>
<
New
class
=
"[Name der zu setzenden Klasse]"
>
[Eventuell notwendige Einstellungen]
</
New
>
</
Arg
>
</
Call
>
Die zu setzende Klasse muss dabei das Interface com.ebd.hub.services.smtp.INoActionDefinedHandler implementieren. Wir bieten eine Programmierschnittstelle (API), die es Ihnen auch erlaubt eigene Klassen (Preparser, Funktionen, usw.) in Java zu entwickeln. Hierzu bieten wir eine vertiefte Schulung an. Bei Interesse wenden Sie sich bitte an unsere Mitarbeiter im Support bzw. im Vertrieb.
Ein standardmäßig vorhandener Handler ist der DefaultNoActionDefinedHandler, der im Anschluss beschrieben wird.
Setzen des DefaultNoActionDefinedHandlers
Wird dieser Handler als NoActionDefinedHandler gesetzt, werden alle E-Mails, die nicht über eine entsprechende SmtpAction weiterverarbeitet werden können, an eine festgelegte E-Mail-Adresse weitergeleitet. Die Weiterleitung erfolgt über einen entsprechend definierten E-Mail-Server. Folgendes XML-Fragment erzeugt einen DefaultNoActionDefinedHandler.
<
Call
name
=
"setNoActionDefinedHandler"
>
<
Arg
>
<
New
class
=
"com.ebd.hub.services.smtp.DefaultNoActionDefinedHandler"
>
<
Set
name
=
"host"
>mailserver</
Set
>
<
Set
name
=
"port"
>25</
Set
>
<
Set
name
=
"user"
>user</
Set
>
<
Set
name
=
"pwd"
>passwd</
Set
>
<
Set
name
=
"sender"
>sender@domain.invalid</
Set
>
<
Set
name
=
"forwardAddress"
>recipient@domain.invalid</
Set
>
</
New
>
</
Arg
>
</
Call
>
Dabei haben die einzelnen Parameter die folgende Bedeutung.
host |
Der Hostname des zu verwendenden SMTP-Servers. |
port |
Der Port des SMTP-Servers. Wird kein Port gesetzt, wird der Standardwert (25) verwendet. |
user |
Der für die Authentifizierung beim SMTP-Server zu verwendende Benutzername. Wird kein Benutzername angegeben, wird keine Authentifizierung versucht. |
pwd |
Das für die Authentifizierung beim SMTP-Server zu verwendende Passwort. |
sender |
Die für die E-Mail zu verwendende Absenderadresse. |
forwardAddress |
Die Adresse, an die die E-Mail weitergeleitet werden soll. |
Hinweis: Die weitergeleitete E-Mail entspricht nicht mehr dem Format der originalen E-Mail, sondern wird aus den einzelnen Teilen (Body, Attachments) erneut zusammengebaut.
Setzen eines SmtpAuthenticators
Soll eine Authentifizierung für das SMTP-Protokoll aktiviert werden, ist das Setzen des zu verwendenden Authenticators erforderlich. Der SmtpService stellt hierzu zwei mögliche Authentifizierer zur Verfügung.
Der DirectSetAuthenticator, dessen Benutzer direkt über die XML-Konfigurationsdatei gesetzt werden.
Der FileAuthenticator, dessen Benutzer in einer eigenen Datei definiert sind und beim Starten geladen werden.
Folgendes XML-Fragment setzt den vom SmtpService zu verwendenden Authenticator.
<
Call
name
=
"setSmtpAuthenticator"
>
<
Arg
>
<
New
class
=
"[Klassenname des zu verwendenden Authenticators]"
>
[Eventuell notwendige Einstellungen]
</
New
>
</
Arg
>
</
Call
>
Setzen des DirectSetAuthenticators
Der DirectSetAuthenticator ermöglicht das Setzen der erlaubten Benutzer direkt innerhalb der XML-Konfigurationsdatei.
Der Klassenname für das Hinzufügen zum SmtpService lautet com.ebd.hub.services.smtp.auth.direct.DirectSetAuthenticator.
Hinzufügen eines Benutzers
Folgendes XML-Fragment fügt dem DirectSetAuthenticator einen Benutzer hinzu.
<
Call
name
=
"addUser"
>
<
Arg
>
<
New
class
=
"com.ebd.hub.services.smtp.SmtpUser"
>
<
Arg
>username</
Arg
>
<
Arg
>password</
Arg
>
</
New
>
</
Arg
>
</
Call
>
Die einzelnen Parameter sollten hierbei selbsterklärend sein.
Setzen des FileAuthenticators
Der FileAuthenticator erlaubt das Laden der erlaubten Benutzer über eine weitere Datei, die alle Benutzernamen und Passwörter enthält.
Der Klassenname für das Hinzufügen zum SmtpService lautet com.ebd.hub.services.smtp.auth.direct.FileAuthenticator.
Lesen der Benutzerdatei
Folgendes XML-Fragment lässt den Manager die Benutzerdatei einlesen.
<
Call
name
=
"readUserFile"
>
<
Arg
>./etc/mail_users.cfg</
Arg
>
</
Call
>
Die Bedeutung des Parameters sollte selbsterklärend sein. Der Aufbau einer Datei für die Definition der Benutzer wird in Abschnitt Format der Benutzerdatei des FileAuthenticator beschrieben.
Allgemeine Einstellungen und verfügbare SMTP-Actions
(1) Der MessageService, der verwendet werden soll.
(2) Die Messages werden als persistente Messages an den MessageService weitergegeben.
(3) IP-Adresse und Port des SmtpServices.
(4) Anzahl der Threads zur Verarbeitung der eingehenden E-Mails.
(5) Whitelist und Blacklist können hier bearbeitet werden.
(6) Die maximale Größe in Bytes, die eine E-Mail haben darf, damit sie vom SmtpService akzeptiert wird. Die Größe ist in kB (1024 Bytes) anzugeben. Sollen also z .B. maximal 2 MB (die Standardeinstellung) akzeptiert werden, ist der Wert 2048 anzugeben. Der Wert -1 legt fest, dass kein Limit hinsichtlich der zu akzeptierenden Daten existiert.
(7) Liste der verfügbaren SMTP-Actions. Über das Kontextmenü können diese hinzugefügt, bearbeitet und entfernt werden.
SMTP-Action bearbeiten
(8) Einstellungen des MessageService für die Action. Man kann entweder den Default-MessageService verwenden, oder einen beliebigen anderen. Mit den Parametern Message-Context und Message-Queue kann über den MessageService gesteuert werden, wer die Meldungen erhalten soll.
(9) Hier können E-Mail-Adressen hinzugefügt, geändert und gelöscht werden.