Holger Herbst stellte ein aktuelles Projekt vor, wo es darum geht größere eMail Postfächer von einem POP3 Server in FileMaker zu übertragen. Herausforderung dabei ist die Tatsache, dass POP3 Postfächer normalerweise pro Client separat geladen und synchronisiert werden. Zudem stellt das POP3 Protokoll keine persistenten UUIDs zur Verfügung. Es kann also sein, dass die IDs während eines längeren Zeitraums mehrfach für unterschiedliche Nachrichten verwendet werden.

Um die Lösung hinsichtlich Performance und Datenübertragung zu optimieren, hat Holger einen Cache-Mechanismus für seine FileMaker-Lösung auf dem Server entwickelt. Mit einer trickreichen Abfolge von MBS-Listen-Befehlen gelingt es dabei, die vom POP3-Server gelieferten ID-Listen direkt auszuwerten, ohne jedes Mal alle Nachrichten einzeln laden und vergleichen zu müssen.

Durch den Umstand, dass der Mail-Cache für die Lösung als eigene Tabelle zentral auf dem FileMaker-Server existiert, können Mails per POP3 unabhängig von den Client-Rechnern oder per Server-Script synchronisiert und geladen werden. Es wird dabei sicher gestellt, dass jede Nachricht immer nur einmal geladen werden muss und dann in der FileMaker-Lösung zentral zur Verfügung steht. Weitere Mechanismen sorgen für die Invalidierung/Löschung älterer Nachrichten aus dem Cache, sobald diese vom POP3-Server gelöscht wurde. Einzige Voraussetzung bei diesem Setup ist, dass die POP3-Clients die abgeholten Nachrichten nicht sofort vom eMail-Server löschen, sondern einen längeren Zeitraum für den Abgleich erlauben. Somit wird sicher gestellt, dass das Server-Script immer genug Zeit hat, die IDs aller neuen Nachrichten in der Cache-Tabelle zu hinterlegen.

Vorteil der vorgestellten Lösung ist die hohe Performance beim Synchronisieren, weil mit einer einzigen POP3-Abfrage das gesamte Postfach mit allen neuen Nachrichten mit der Cache-Tabelle verglichen werden kann.

Die verwendeten Listen-Befehle sind hier noch einmal kurz dokumentiert:
https://www.mbsplugins.eu/ListDeCombine.shtml
https://www.mbsplugins.eu/ListNot.shtml
https://www.mbsplugins.eu/ListAddPrefix.shtml
https://www.mbsplugins.eu/ListAndColumn.shtml