MailIn-Schnittstelle
Der OMEGAServer kann ein Postfach überwachen und eingehende Mails der Anwender in genau einer Datenbank abspeichern.
Für diese Funktion sind folgende Voraussetzungen zu erfüllen:
- Es muss eine betriebsbereite Mailschnittstelle vorhanden sein. (Einrichtung einer Mailschnittstelle siehe Kapitel 4.7 Mailanbindung )
- In der Mailschnittstelle muss als DB eine gültige Datenbankschnittstelle angegeben werden. Diese Datenbankschnittstelle muss ebenfalls betriebsbereit konfiguriert sein. (Einrichtung einer Datenbankschnittstelle diese Kapitel 4.6 Datenbankanbindung )
- Die Mail-Serveraufgabe muss entsprechend konfiguriert sein. Hier werden auch die weiteren Verarbeitungsschritte für eine eingehende Mail konfiguriert.
Generelles
Die Mail-In-Schnittstelle überwacht ein oder mehrere Mail-Postfächer und übernimmt eingehende Mails. Für jede eingegangene Mail wird ein Datensatz in der Datenbank eingefügt. Dabei werden folgende Informationen gespeichert:
- Mailstatus:
- 1 = Mail soll versendet werden,
- 2 = Mail wurde versendet,
- 3 = Mail wurde empfangen,
- 4 = Mail wurde empfangen und verarbeitet,
- 5 = Mail konnte nicht an den Mailserver übertragen werden (z.B. weil dieser
nicht erreichbar ist, oder weil die Empfängermailadresse aus Sicht des
eigenen Mailservers ungültig ist.), - 6 = Mail soll nicht verarbeitet werden,
- 7 = Mail wurde versendet, kam aber aufgrund unbekannter
Empfängermailadresse wieder zurück.
- Maildatum („erhalten am“ oder „gesendet am“)
- Nachrichtentext
- Betreff
- Mailadresse Absender
- Mailadresse Empfänger
- Mailadresse TO
- Mailadresse CC
- Mailadresse BCC (nur bei ausgehenden Mails)
- Dateinamen der Mailanhänge
Hier wird, mit Semikolon getrennt, eine Liste aller Dateinamen der Mailanhänge generiert. Falls die Mailschnittstelle Mailanhänge hinzufügt, erscheinen auch diese in dieser Liste. - Originaldateiname der Mailanhänge
Hier wird, mit Semikolon getrennt, eine Liste aller Original-Dateinamen der Mailanhänge generiert. Falls die Mailschnittstelle Mailanhänge hinzufügt, erscheinen auch diese in dieser Liste.
Die Felder mit Mailinhalten werden nicht bei allen Mailtypen gleichermaßen gefüllt.
Die Felder mit Mailinhalten dürfen in der Datenbank nicht als MEMO-Felder angelegt werden. Wenn der Inhalt eines Mailtextfeldes (Nachrichtentext oder Betreff, oder Mailadresse) für das Datenbankfeld zu lang ist, wird der Feldinhalt auf die maximale Länge gekürzt, entsprechend markiert und der Originaltext wird zusätzlich als Mailanhang abgespeichert.
Nach der erfolgreichen Verarbeitung einer Mail, wird diese entweder gelöscht, oder in einen Versandordner verschoben, oder zumindest als gelesen markiert.
Die Besonderheiten der einzelnen Mailsysteme sind im Folgenden beschrieben. Bei Widersprüchen zu den generellen Ausführungen gilt die mailsystemspezifische Beschreibung.
IMAP (Mailtyp IMAP)
Es werden alle ungelesenen Mails, die vom IMAP-Server bereitgestellt werden, verarbeitet.
Zur Ermittlung der Sender-Emailadresse wird das Attribut „From“ der Nachricht (IMAP.Message) verwendet.
Zur Ermittlung der Empfänger-Emailadresse werden die Attribute „TO.ALL“, „CC.ALL“ der Nachricht verwendet.
Als Maildatum wird der Inhalt des Attributs Date der Nachricht (IMAP.Message) verwendet.
Dann werden die Einzelteile der Nachricht verarbeitet. Der erste Teil mit ContentType „TEXT/PLAIN“ wird als Nachrichtentext verwendet. Alle anderen Teile werden wie Mailanhänge behandelt.
Der Dateiname unter dem der Anhang abgespeichert wird, beginnt stets mit der Zeichenfolge „MA_“, darauf folgt die interne ID der Datenzeile, und, falls die Nachricht mehr als einen Anhang besitzt, wird mit „_99“ die laufende Nummer des Anhangs angehängt. Der Dateiname endet stets mit der Dateierweiterung des Originaldateinamens.
Wenn die Nachricht erfolgreich und vollständig abgespeichert wurde, wird die Mail nun aus dem Postfach gelöscht.
MS-Exchange (Mailtyp MAPI/EXCH)
Es werden nur ungelesene Mails, die im Standard-Posteingang-Ordner stehen, verarbeitet.
Es werden nur Mails verarbeiten, denen eine der Klassen „REPORT.IPM.NOTE.NDR“, „IPM.NOTE", „IPM.NOTE.SMIME" und „IPM.NOTE.SMIME.MULTIPARTSIGNED" zugeordnet wurde. Mails mit einer davon abweichenden Klassenzuordnung werden automatisch gelöscht. Es handelt sich hierbei meist um Outlook-Sonderfunktionen wie „Terminanfrage an den Outlook-Kalender“, „Neuanlage oder Änderung einer Outlook-Regel“, etc.
Mails der Klasse „REPORT.IPM.NOTE.NDR“ sind Benachrichtigungen des Mailservers, dass eine zuvor versandte Mail nicht zugestellt werden konnte. Falls die Ursprungsmail in der Datenbank ermittelt werden kann, wird der Status dieser Mail auf „7 = Mail wurde versendet, kam aber aufgrund unbekannter Empfängermailadresse wieder zurück“ gesetzt.
Mails der Klasse „IPM.NOTE.SMIME" und „IPM.NOTE.SMIME.MULTIPARTSIGNED" sind in der Regel verschlüsselt. Diese werden in der aktuellen Version vor dem Einfügen in die Datenbank nicht entschlüsselt.
Zur Ermittlung der Sender-Emailadresse wird das Attribut „Sender.Name“ der Nachricht (MAPI.Message) verwendet, falls der Inhalt des Attributs ein @-Symbol enthält. Falls nicht, wird das Attribut „Sender.SMTPAddress“ verwendet, falls der Inhalt des Attributs ein @-Symbol enthält. Falls auch dies nicht erfolgreich ist, wird ein Dummy-Antwortmail auf die eingehende Mail generiert und daraus dann die erste Empfänger-Mailadresse ausgelesen. Falls auch diese kein @-Symbol enthält, wird die Sender-Emailadresse nicht in den Datensatz eingetragen.
Zur Ermittlung der Empfänger-Emailadresse wird für jeden Empfänger (Recipients) der Nachricht (MAPI.Message), folgender Ablauf durchlaufen: Zur Ermittlung der Emailadresse wird das Attribut „AddressEntry.Name“ des Empfängers verwendet, falls der Inhalt des Attributs ein @-Symbol enthält. Falls nicht, wird das Attribut „AddressEntry.SMTPAddress“ verwendet, falls der Inhalt des Attributs ein @-Symbol enthält. Wurde darüber eine Mailadresse ermittelt, wird diese je nach Empfänger.type der Mail TO- oder der CC-Information angehängt. Sind so alle Empfänger verarbeitet, wird das Attribut ReceivedByName der Nachricht (MAPI.Message) als „Mailadresse Empfänger“ verwendet. Ist dieses Attribut leer, so wird die Mail TO-Information verwendet. Ist dieses Attribut auch leer, so wird die Mail CC-Information verwendet. Ist auch dieses Attribut leer, wird keine Empfänger-Mailadresse in den Datensatz eingetragen.
Als Maildatum wird der Inhalt des Attributs ReceivedTime der Nachricht (MAPI.Message) verwendet.
Es werden nur folgende Anhängetypen verarbeitet: FileData, FileLink, OLE und EmbeddedMessage. Für jeden Anhang (Attachment) der Nachricht (MAPI.Message), mit einem der erwähnten Anhängetypen, wird folgender Ablauf durchlaufen: Als Originaldateinamens wird, falls nicht leer, das Attribut Filename des Anhangs verwendet. Falls das Attribut nicht gefüllt ist, wird, falls nicht leer, das Attribut Displayname des Anhangs verwendet. Falls auch dies leer ist, wird als OriginalDateinamen die Zeichenkette „namenslos.dat“ verwendet. Falls der Anhang vom Typ EmbeddedMessage ist und der Originaldateiname nicht auf „.msg“ endet, wird dem Originaldateinamen „.msg“ angehängt.
Dann wird kontrolliert, ob der Originaldateinamen eine Datei-Extension besitzt. Falls nicht, wird an den Originaldateinamen die Zeichenkette „.dat“ angehängt.
Der Dateiname unter dem der Anhang abgespeichert wird, beginnt stets mit der Zeichenfolge „MA_“, darauf folgt die interne ID der Datenzeile, und, falls die Nachricht mehr als einen Anhang besitzt, wird mit „_99“ die laufende Nummer des Anhangs angehängt. Der Dateiname endet stets mit der Dateierweiterung des Originaldateinamens.
Für Anhänge der Anhangtypen FileData und EmbeddedMessage wird nun der Anhang über die „SaveAsFile“-Methode des Anhangs unter dem zuvor generierten Dateinamen auf der Festplatte des Servers abgespeichert.
Für Anhänge des Anhangtyps FileLink wird die referenzierte Datei in das Mailanhangverzeichnis unter dem zuvor generierten Dateinamen hineinkopiert.
Für Anhänge des Anhangtyps OLE wird nun die Nachricht über die „SaveAs“-Methode der Nachricht mit dem konstanten Originaldateinamen „MAIL.MSG“ unter dem zuvor generierten Dateinamen auf der Festplatte des Servers abgespeichert.
Jede Nachricht (MAPI.Message) wird über das BodyFormat gekennzeichnet, ob es sich um eine Nurtext-Nachricht, um eine HTML-Nachricht, oder um eine Nachricht im RTF-Format handelt. Jede Nachricht besitzt immer auch die drei Attribute (Body, HTMLBody, RTFBody) mit dem Nachrichtentext im jeweiligen Format. Meist sind ein oder zwei dieser Attribute gefüllt.
Bei Nachrichten im HTML-Format wird nun der Inhalt des Attributs HTMLBody mit dem konstanten Originaldateinamen „MAIL.HTML“ als Anhang unter dem zuvor generierten Dateinamen (analog der „normalen“ Anhänge) auf der Festplatte des Servers abgespeichert.
Bei Nachrichten im RTF-Format wird nun der Inhalt des Attributs RTFBody mit dem konstanten Originaldateinamen „MAIL.RTF“ als Anhang unter dem zuvor generierten Dateinamen (analog der „normalen“ Anhänge) auf der Festplatte des Servers abgespeichert.
Nachdem die Nachricht in der Datenbank abgespeichert wurde, wird über die MarkRead-Methode der Nachricht das Gelesen-Kennzeichen gesetzt.
Wenn die Nachricht erfolgreich und vollständig abgespeichert wurde und falls die Löschung nicht durch das Systemsteuerungskennzeichen 850 verhindert wird, wird die Mail nun aus dem Postfach gelöscht.
Lotus Notes (Mailtyp LONO)
Es werden nur Nachrichten (Notes.Dokument) verarbeitet, auf die über die Standardsicht (Notes.Datenbank.GetView) namens „($Inbox)“ zugegriffen werden kann.
Aus jeder Nachricht werden, soweit vorhanden, die Attribute (Notes.Items) "DELIVEREDDATE", "POSTEDDATE", "OMEGAMAILIDENT", "OSPSTATUS", "SMTP_ORIGINATOR", "FROM", "INETFROM", "SENDTO", "INETSENDTO", "COPYTO", "INETCOPYTO", "SUBJECT", "FORM", "FAILUREREASON" und "BODY" ausgelesen.
Es werden nur ungelesene Nachrichten verarbeitet. Zur Verwaltung des Gelesen-Status wird der Nachricht das Attribut „OSPSTATUS“ angefügt. Eine Nachricht wird übersprungen, wenn dieses Attribut vorhanden ist und den Inhalt „READ“ besitzt.
Mails mit "NONDELIVERY REPORT" als Inhalt des Attributs „FORM“ sind Benachrichtigungen des Mailservers, dass eine zuvor versandte Mail nicht zugestellt werden konnte. Falls die Ursprungsmail in der Datenbank ermittelt werden kann, wird der Status dieser Mail auf „7 = Mail wurde versendet, kam aber aufgrund unbekannter Empfängermailadresse wieder zurück“ gesetzt. Zur Identifikation der Ursprungsmail wird der Nachricht beim Versand das Attribut „OMEGAMAILIDENT“ angefügt.
Zur Ermittlung der Sender-Emailadresse wird das Attribut „SMTP_ORIGINATOR“ der Nachricht (NOTES.Document) verwendet. Falls dieses leer ist, wird das Attribut „INETFROM“ verwendet. Falls auch dieses Attribut leer ist, wird das Attribut „FROM“ verwendet
Als Empfänger-Emailadresse wird der Notesbenutzername verwendet, über den die Anmeldung an der Notesdatenbank durchgeführt wurde. Zur Ermittlung der An- und CC-Mailadressen werden die Attribute SENDTO und COPYTO verwendet.
Zur Ermittlung des Maildatums wird das Attribut „DELIVEREDDATE“ der Nachricht verwendet. Falls dies Attribut leer ist, wird das Attribut „POSTEDDATE“ verwendet. Falls auch dies Attribut leer ist, wird das Tagesdatum verwendet.
Die Verarbeitung des Attributs „BODY“ zur Übernahme von Nachrichtentext und Anhängen wird nur dann durchgeführt, wenn der Typ des Attributs = 1 (RICHTEXT) ist.
Innerhalb der Verarbeitung des Attributs „BODY“ werden die eingebettenen Objekte (EmbeddedObjects) des Attributs (Notes.Item) über die Methode „ExtractFile“ des Objekts als Mailanhang abgespeichert. Der Dateiname unter dem der Anhang abgespeichert wird, beginnt stets mit der Zeichenfolge „MA_“, darauf folgt die interne ID der Datenzeile, und, falls die Nachricht mehr als einen Anhang besitzt, wird mit „_99“ die laufende Nummer des Anhangs angehängt. Der Dateiname endet stets mit der Dateierweiterung des Originaldateinamens.
Falls auf dem Server eine Notes-Version mit DXLExporter installiert wurde, wird jetzt mit Hilfe des DXLExporter die Nachricht in eine Datei im DXL-Format exportiert. Die folgenden Punkte werden nur ausgeführt, wenn der DXL-Exporter verfügbar ist.
Wenn nicht die komplette Nachricht wegen der Systemsteuerung (Schalter 852) als Anhang abgespeichert wird, werden jetzt die in der Nachricht eingebetteten GIF-Bilder als Anhänge abgespeichert. Die Daten der GIF-Bilder liegen base64 vor und werden vor dem Export decodiert.
Falls die komplette Nachricht abgespeichert werden soll, wird jetzt ein Anhang „OM_*.dxl“ generiert, der die komplette Nachricht im DXL-Format enthält. Dann wird eine HTML-Datei erzeugt, die der Originalmail weitestgehend entspricht. Dabei werden aber nur einige wenige DXL-Tags berücksichtigt, sodass Abweichungen zur Originalmail im Detail unumgänglich sind.
Wenn die Nachricht erfolgreich und vollständig abgespeichert wurde, wird das Attribut „OSPStatus der Nachricht auf „READ“ gesetzt, andernfalls auf „ERR…“.
Falls über das Systemsteuerungskennzeichen 851 ein Ordner angegeben wurde, in den verarbeitete Mails kopiert werden sollen, wird die Mail nun in diesen Ordner hineinkopiert.
Falls die Löschung nicht durch das Systemsteuerungskennzeichen 850 verhindert wird, wird die Mail nun aus dem Postfach gelöscht.
Novell Groupwise (Mailtyp NOGW)
Es werden nur ungelesene Mails, die im Standard-Posteingang-Ordner „mailbox“ stehen, verarbeitet.
Es werden nur Mails verarbeiten, denen eine der Klassen „REPORT.IPM.NOTE.NDR“, „GW.MESSAGE.MAIL", „GW.MESSAGE.MAIL.INTERNET" zugeordnet wurde. Mails mit einer davon abweichenden Klassenzuordnung werden automatisch gelöscht.
Mails der Klasse „REPORT.IPM.NOTE.NDR“ sind Benachrichtigungen des Mailservers, dass eine zuvor versandte Mail nicht zugestellt werden konnte. Falls die Ursprungsmail in der Datenbank ermittelt werden kann, wird der Status dieser Mail auf „7 = Mail wurde versendet, kam aber aufgrund unbekannter Empfängermailadresse wieder zurück“ gesetzt.
Zur Ermittlung der Sender-Emailadresse wird das Attribut „Sender“ der Nachricht (GW.Message) verwendet.
Zur Ermittlung der Empfänger-Emailadresse wird für jeden Empfänger (Recipients) der Nachricht (GW.Message), folgender Ablauf durchlaufen: Zur Ermittlung der Emailadresse wird das Attribut „emailaddress“ des Empfängers verwendet. Falls dies leer ist, wird das Attribut „DisplayName“ verwendet. Wurde darüber eine Mailadresse ermittelt, wird diese je nach Empfänger.TargetType der Mail TO- oder der CC-Information angehängt.
Als Maildatum wird der Inhalt des Attributs ModifiedDate der Nachricht (GW.Message) verwendet.
Für jeden Anhang (Attachment) der Nachricht (GW.Message) wird folgender Ablauf durchlaufen: Als Originaldateinamens wird, falls nicht leer, das Attribut Filename des Anhangs verwendet. Falls das Attribut nicht gefüllt ist, wird, falls nicht leer, das Attribut Displayname des Anhangs verwendet. Falls auch dies leer ist, wird als OriginalDateinamen die Zeichenkette „namenslos.dat“ verwendet. Falls der Anhang vom Typ gwaMessage ist und der Originaldateiname nicht auf „.msg“ endet, wird dem Originaldateinamen „.msg“ angehängt.
Dann wird kontrolliert, ob der Originaldateinamen eine Datei-Extension besitzt. Falls nicht, wird an den Originaldateinamen die Zeichenkette „.dat“ angehängt.
Der Dateiname unter dem der Anhang abgespeichert wird, beginnt stets mit der Zeichenfolge „MA_“, darauf folgt die interne ID der Datenzeile, und, falls die Nachricht mehr als einen Anhang besitzt, wird mit „_99“ die laufende Nummer des Anhangs angehängt. Der Dateiname endet stets mit der Dateierweiterung des Originaldateinamens.
Es wird nun der Anhang über die „Save“-Methode des Anhangs unter dem zuvor generierten Dateinamen auf der Festplatte des Servers abgespeichert.
Nachdem die Nachricht in der Datenbank abgespeichert wurde, wird das Read-Attribut der Nachricht auf True gesetzt.
Wenn die Nachricht erfolgreich und vollständig abgespeichert wurde und falls die Löschung nicht durch das Systemsteuerungskennzeichen 850 verhindert wird, wird die Mail nun aus dem Postfach gelöscht.
POP3 (Mailtyp POP3)
Es werden alle Mails, die vom POP3-Server bereit gestellt werden, verarbeitet.
Zur Ermittlung der Sender-Emailadresse wird das Attribut „From“ der Nachricht (POP.Message) verwendet.
Zur Ermittlung der Empfänger-Emailadresse werden die Attribute „TO.ALL“, „CC.ALL“ der Nachricht verwendet.
Als Maildatum wird der Inhalt des Attributs Date der Nachricht (POP.Message) verwendet.
Dann werden die Einzelteile der Nachricht verarbeitet. Der erste Teil mit ContentType „TEXT/PLAIN“ wird als Nachrichtentext verwendet. Alle anderen Teile werden wie Mailanhänge behandelt.
Der Dateiname unter dem der Anhang abgespeichert wird, beginnt stets mit der Zeichenfolge „MA_“, darauf folgt die interne ID der Datenzeile, und, falls die Nachricht mehr als einen Anhang besitzt, wird mit „_99“ die laufende Nummer des Anhangs angehängt. Der Dateiname endet stets mit der Dateierweiterung des Originaldateinamens.
Wenn die Nachricht erfolgreich und vollständig abgespeichert wurde, wird die Mail nun aus dem Postfach gelöscht.
Textdatei (Mailtyp TEXT)
Für Mailtyp TEXT ist keine Mail-In-Schnittstelle vorgesehen.