Connect with us

Entwicklung & Code

Model Context Protocol: Anwendungsbeispiel in TypeScript


Das KI-Unternehmen Anthropic, das 2021 von ehemaligen OpenAI-Mitarbeitern gegründet wurde, hat das Model Context Protocol (MCP) mit dem Ziel einer Standardisierung der Kommunikation zwischen Large Language Models und externen Datenquellen entwickelt. Beim sogenannten Tool Calling hat das LLM die Möglichkeit, auf vordefinierte Schnittstellen zuzugreifen. Diese lassen sich parametrisieren und erlauben so große Flexibilität. Die meisten LLM-Anbieter unterstützen dieses Feature. Jede Datenquelle braucht dabei eine Verknüpfung über eine eigene Funktion, was in der Regel eine Anpassung am Programmcode erforderlich macht.


Sebastian Springer

Sebastian Springer

Sebastian Springer weckt als Dozent für JavaScript, Sprecher auf zahlreichen Konferenzen und Autor die Begeisterung für professionelle Entwicklung mit JavaScript.

Das Model Context Protocol soll die Verknüpfung externer Datenquellen deutlich vereinfachen und es erlauben, externe Schnittstellen, Datenbanken, Unternehmenssysteme oder Dateisysteme ohne zusätzliche Anpassung direkt anzubinden. Dieser Artikel widmet sich den technischen Details der Funktionsweise des MCP und zeigt anhand eines konkreten Beispiels mit dem MCP-TypeScript-SDK, wie eine Integration in eine Applikation gelingen kann.

Die zentrale Anlaufstelle für Ressourcen zum Thema MCP sind zum einen die offizielle Website des Projekts und zum anderen das GitHub-Repo. Dort stehen die Dokumentation, die Spezifikation und eine ganze Reihe von Software Development Kits (SDKs) für verschiedene Programmiersprachen wie Python, TypeScript, C# oder Kotlin zur Verfügung.

Eine Applikation, die das MCP nutzt, besteht aus verschiedenen Komponenten:

  • MCP-Server: Der Server ist die Stelle bei MCP, die ihre Funktionalität über das MCP zur Verfügung stellt. Das können Daten aus einer Datenbank, aber auch Suchergebnisse aus dem Internet sein. Die Schnittstellen des Servers sind exakt definiert und lassen sich von der Clientseite verwenden.
  • MCP-Client: Die Gegenseite zum Server ist der Client. Er kommuniziert mit dem Server und führt die verfügbaren Operationen über die Schnittstellen aus. Dabei gibt es sowohl lesende als auch schreibende Operationen.
  • MCP-Host: Die Applikation, mit der die Benutzer interagieren. Das kann eine Web-Applikation, eine klassische Desktop-Applikation (wie Claude Desktop), eine Entwicklungsumgebung (wie Cursor) oder ein eigener, auf Frameworks wie Langchain basierender Agent sein. In diese Applikation ist der Client eingebettet, sodass der Host nicht direkt über MCP mit dem Server, sondern über den Umweg des Clients kommuniziert.

Ein MCP-Server kann direkt in eine Applikation integriert, aber auch, und das wird der häufigere Fall sein, ein eigenständiger Dienst sein. Die MCP-Initiative stellt eine Reihe von SDKs in unterschiedlichen Programmiersprachen bereit, die die Grundlage für die Serverimplementierung bilden. Der Server selbst ist modular aufgebaut und erlaubt verschiedene Transportmechanismen, über die er mit den Clients kommuniziert. Das TypeScript-SDK sieht aktuell die Transportmechanismen Streamable HTTP, SSE und stdio vor. Streamable HTTP und SSE basieren auf HTTP, wobei die MCP-Spezifikation vom 26.03.2025 den SSE-Transport als veraltet (deprecated) markierte und die Version vom 18.06.2025 (latest) SSE bereits nicht mehr erwähnt.

Ein MCP-Client kann die HTTP-basierten Transportmechanismen verwenden, um sich mit einem entfernten Server zu verbinden. Der stdio-Transport ist für lokale Anwendungen gedacht. Hierbei verbindet sich der Client über die Standard-Ein- und -Ausgabe mit dem Server. Dieser Weg arbeitet deutlich schneller, ist jedoch nur für die Verwendung auf einem System geeignet. Das Python-SDK definiert zusätzlich zu diesen Transporttypen noch weitere wie den ASGI-Transport (Asynchronous Server Gateway Interface), eine Schnittstelle aus der Python-Welt, die neben der Kommunikation über HTTP noch weitere Protokolle wie WebSockets oder benutzerdefinierte Protokolle unterstützt.

Die MCP-Spezifikation unterteilt die Features, die ein Server seinen Clients bietet, in drei Kategorien: Resources, Tools und Prompts.

Mit der Feature-Kategorie Resources stellt ein MCP-Server Daten zur Verfügung. Ein typisches Beispiel ist die Anbindung an eine Datenbank. Resources sollten Daten nur lesend zur Verfügung stellen, keine komplexen Berechnungen durchführen und keine Seiteneffekte wie Datenmanipulationen aufweisen. Sie sind parametrisierbar, um die Abfrage zu beeinflussen und eine höhere Flexibilität zu erreichen.

Die MCP-Spezifikation sieht vor, dass das Format [protocol]://[host]/[path] Resources spezifiziert. Ein Beispiel könnte folgendermaßen aussehen: postgres://database/users. Die Antwort auf eine Resources-Anfrage kann entweder im Textformat wie beispielsweise JSON oder als Binärdaten wie PDFs oder Bilder erfolgen.

Der MCP-Server stellt über den Endpunkt resources/list eine Liste der verfügbaren Resources zur Verfügung. Jeder Datensatz weist mindestens die URL der jeweiligen Resource und einen menschenlesbaren Namen auf. Hinzu kommen noch eine optionale Beschreibung und ein ebenfalls optionaler MIME-Type, der das Format der Rückmeldung spezifiziert.

Die Spezifikation sieht nicht nur den lesenden Zugriff auf Ressourcen vor, sondern auch einen Benachrichtigungsmechanismus, über den der Server registrierte Clients über Änderungen der verfügbaren sowie Datenänderungen einer einzelnen Resource benachrichtigen kann.

Die Features der Kategorie Tools dürfen Berechnungen durchführen und Seiteneffekte aufweisen. Clients müssen berücksichtigen, dass eine Toolausführung im Vergleich zu einer Ressourcenabfrage länger dauern kann. Diese Werkzeuge können Funktionen sein, die aufgrund einer Eingabe eine bestimmte Ausgabe produzieren, aber auch Schnittstellen zu Datenbanken und anderen Systemen, um dort gespeicherte Informationen zu manipulieren. Ähnlich wie Resources können Clients auch die verfügbaren Tools eines Servers über einen Endpunkt auslesen. Dieser lautet tools/list.

Die Beschreibung eines MCP-Tools ist etwas umfangreicher als die einer Resource. Sie enthält einen Namen und ein Input-Schema, um die Parameter des Tools zu beschreiben. Hinzu kommen noch dessen optionale Beschreibung und optionale Metadaten über die Tool-Annotations. Die Annotations liefern Clients beziehungsweise Hinweise für Entwicklerinnen und Entwicklern über das Verhalten eines Tools. Die meisten vordefinierten Annotations der MCP-Spezifikation sind Boolean-Werte. So sagt beispielsweise die readOnlyHint-Annotation aus, dass das Tool sein Umfeld nicht modifiziert. Wie auch bei den Resources kann ein Client sich beim Server registrieren, um über Änderungen benachrichtigt zu werden.

Prompts sind Vorlagen, die dem MCP-Host die Arbeit mit dem Large Language Model (LLM) erleichtern. Damit kann eine MCP-Applikation nicht nur die Kommunikation zwischen Client und Server, sondern auch zum LLM hin standardisieren. Bei einer Applikation, die ein Code-Review-Feature anbietet, dient der Prompt beispielsweise dazu, den zu überprüfenden Code korrekt einzubetten. Laut der MCP-Spezifikation besitzen die Prompt-Templates einen eindeutigen Namen. Zusätzlich sieht die Spezifikation noch die optionalen Felder description für eine menschenlesbare Beschreibung und arguments mit einer Liste der unterstützten Argumente des Schemas vor.

Die Prompt-Endpunkte eines MCP-Servers kommen ähnlich wie Tools zum Einsatz. Der Client fragt nach dem eindeutigen Identifier und übermittelt die benötigten Werte. Der Server antwortet mit dem Prompt, in den die Werte integriert sind, sodass der Client beziehungsweise die Host-Applikation den Prompt direkt verwenden kann.Für eine Liste aller verfügbaren Prompts bietet der MCP-Server den Endpunkt prompts/list an.

Die SDKs, die die MCP-Initiative zur Verfügung stellt, implementieren die Spezifikation und dienen als Grundlage für die Implementierung von MCP-Servern und MCP-Clients. Das folgende Beispiel implementiert einen einfachen MCP-Server mit je einer Resource, einem Tool und einem Prompt mit dem TypeScript-SDK.


import {
  McpServer,
  ResourceTemplate,
} from '@modelcontextprotocol/sdk/server/mcp.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import { z } from 'zod';

const server = new McpServer({
  name: 'mcp-server',
  version: '1.0.0',
});

server.tool(
  'currency-converter',
  'Convert currency between EUR and USD',
  {
    amount: z.number(),
    from: z.enum(['EUR', 'USD']),
    to: z.enum(['EUR', 'USD']),
  },
  async ({ amount, from, to }) => {
    const exchangeRate =
      from === 'EUR' && to === 'USD'
        ? 1.1
        : from === 'USD' && to === 'EUR'
        ? 0.91
        : 1;
    const convertedAmount = amount * exchangeRate;
    return {
      content: [
        {
          type: 'text',
          text: `${amount} ${from} is ${convertedAmount.toFixed(2)} ${to}`,
        },
      ],
    };
  }
);

server.resource(
  'price-list',
  new ResourceTemplate('price-list://products/{category}', {
    list: undefined,
  }),
  async (uri, { category }) => {
    const priceList = [
      { name: 'Apple', category: 'Fruit', price: 1.2 },
      { name: 'Banana', category: 'Fruit', price: 0.8 },
      { name: 'Carrot', category: 'Vegetable', price: 0.5 },
      { name: 'Bread', category: 'Bakery', price: 2.5 },
      { name: 'Milk', category: 'Dairy', price: 1.5 },
    ];

    const filteredList =
      category !== 'all'
        ? priceList.filter(
            (item) => item.category.toLowerCase() === category.toLowerCase()
          )
        : priceList;

    return {
      contents: [
        {
          uri: uri.href,
          text: JSON.stringify(filteredList),
          json: filteredList,
        },
      ],
    };
  }
);

server.prompt(
  'get-product-description-prompt',
  {
    productName: z.string().describe('The name of the product.'),
    length: z
      .enum(['short', 'medium', 'long'])
      .optional()
      .describe('The desired length of the description.'),
  },
  async (input) => {
    const { productName, length } = input;

    let promptInstructions = `Please generate a compelling product description.`;

    let promptCore = `The product is named "${productName}". `;
    promptCore += `Focus on its general benefits and appeal. `;

    let refinements = '';

    if (length) {
      let lengthGuidance = '';
      if (length === 'short')
        lengthGuidance = 'Keep it concise, around 1-2 sentences. ';
      if (length === 'medium')
        lengthGuidance = 'Aim for a paragraph of about 3-5 sentences. ';
      if (length === 'long')
        lengthGuidance =
          'Provide a detailed description, potentially multiple paragraphs. ';
      refinements += lengthGuidance;
    }

    const fullPrompt = `${promptInstructions}\n\nProduct Details:\n${promptCore}\n\nStyle and Constraints:\n${refinements.trim()}`;

    return {
      messages: [
        {
          role: 'user',
          content: {
            type: 'text',
            text: fullPrompt,
          },
        },
      ],
    };
  }
);

const transport = new StdioServerTransport();
await server.connect(transport);


Listing 1: MCP-Serverimplementierung

Die Grundlage für das Beispiel bildet das TypeScript-SDK, das mit dem Kommando npm install @modelcontextprotocol/sdk installiert wird. Das Paket stellt mit der McpServer-Klasse die Grundlage für die Serverimplementierung zur Verfügung. Auf der Server-Instanz sind die Methoden tool, resource und prompt implementiert, die die Schnittstelle zur Registrierung der verschiedenen MCP-Features darstellen. Nachdem die Applikation alle Features registriert hat, ruft sie die connect-Methode der Serverinstanz auf und übergibt ein Transport-Objekt. Das kann wie im Beispiel eine Instanz der StdioServerTransport-Klasse für den Stdio-Transport sein oder auch eine Instanz der StreamableHTTPServerTransport-Klasse für eine Remote-Schnittstelle über Streamable-HTTP. Alternativ dazu unterstützt das TypeScript-SDK auch noch die SSEServerTransport-Klasse für Server Sent Events als Transportmethode.

Für die Implementierung der einzelnen Features des MCP-Servers gelten einige Regeln, die das SDK mit einer sehr strikten Schemavalidierung absichert. Folgt die Implementierung nicht diesen Regeln, lässt sich der Serverprozess nicht starten. Die Validierung stellt auch die Konsistenz der Argumente beim Aufruf sicher und spielt damit eine wichtige Rolle bei der Sicherheit in der Applikation.

Zur Definition von Resources sieht das SDK die resource-Methode des Serverobjekts vor. Diese Methode akzeptiert die Bezeichnung der Resource, die zugehörige URL und eine Callback-Funktion, die das Ergebnis produziert. Die Callback-Funktion darf asynchron sein, sodass auch der Anbindung einer Datenbank nichts im Wege steht. Eine Besonderheit gibt es bei der Registrierung von Resources allerdings: Ist die URL als Zeichenkette angegeben, darf sie keine dynamischen Parameter enthalten. Für diesen Fall akzeptiert die resource-Methode eine ResourceTemplate-Instanz. Hier werden die Parameter im Pfad mit geschweiften Klammern gekennzeichnet. Die Callback-Funktion kann über ihr zweites Argument auf die Parameter der URL zugreifen und das Ergebnis entsprechend modifizieren.

Im Beispiel ist die Resource eine statische Preisliste für eine Reihe von Produkten. Sie trägt die Bezeichnung price-list und ist über die URL price-list://products/{category} erreichbar, wobei category für eine Kategorie steht, nach der die Callback-Funktion die Datensätze filtert. Das TypeScript-SDK arbeitet mit Zod als Validierungsbibliothek und nutzt diese beispielsweise für die Überprüfung des Rückgabewerts der Resource-Callback-Funktion, sodass diese verpflichtend eine gewisse Struktur zurückgeben muss. Das contents-Array im Rückgabewert kann eine Reihe von Objekten aufweisen, die mindestens über die Eigenschaften uri und text verfügen müssen. Zusätzlich akzeptiert das SDK noch weitere Eigenschaften wie json, in der die Daten als JSON-Objekt vorliegen dürfen.



Source link

Entwicklung & Code

Meta integriert KI-Chats in Empfehlungen auf Facebook und Instagram


Ab dem 16. Dezember 2025 will Meta Gespräche mit seinen KI-Funktionen in die Personalisierung von Facebook und Instagram einbeziehen. Damit sollen nicht nur Likes, Kommentare oder geteilte Inhalte eine Rolle spielen, sondern auch Text- und Sprachinteraktionen mit „Meta AI“. Diese zusätzlichen Datenpunkte erweitern laut Ankündigungsbeitrag die Möglichkeiten des Unternehmens, Empfehlungen gezielter auf die Interessen der Nutzerinnen und Nutzer abzustimmen.

Als Beispiel nennt Meta eine Unterhaltung übers Wandern: Wer ein solches Thema mit der KI bespricht, kann künftig Empfehlungen zu passenden Facebook-Gruppen, Reels über Outdoor-Themen oder Werbung für Ausrüstung sehen. Das Vorgehen folgt derselben Logik wie bisherige Personalisierungsmechanismen, erweitert diese jedoch um den direkten Austausch mit den KI-Funktionen.

Meta betont, sensible Informationen nicht für Werbezwecke nutzen zu wollen. Dazu zählen Angaben zu Religion, sexueller Orientierung, politischer Einstellung, Gesundheit, ethnischer Herkunft oder Gewerkschaftszugehörigkeit. Gespräche über diese Themen sollen weder Inhalte im Feed noch personalisierte Anzeigen beeinflussen.

Damit versucht das Unternehmen, Sorgen vor einer zu tiefgehenden Auswertung privater Themen zu adressieren. In den offiziellen Informationen unterstreicht Meta, dass diese Grenzen bereits bei der bisherigen Datennutzung gelten und auch in den neuen KI-basierten Systemen eingehalten werden sollen.

Neben den automatischen Personalisierungen sollen weiterhin individuelle Anpassungen möglich sein. Über die bekannten Werkzeuge wie Ads Preferences oder Feed-Kontrollen können Nutzende ihre Anzeige- und Inhaltseinstellungen verändern. Damit bleibt es ihnen selbst überlassen, den Einfluss von KI-Empfehlungen einzugrenzen oder zu verstärken.

Außerdem können Menschen entscheiden, wie sie mit Meta AI interagieren möchten – per Spracheingabe oder Text. Bei Sprachbefehlen erscheint ein Hinweislicht, das signalisiert, dass das Mikrofon aktiv genutzt wird. Meta betont, dass eine Aufnahme nur erfolgt, wenn die Zustimmung vorliegt und eine entsprechende Funktion bewusst Verwendung findet.

Ein zentraler Punkt ist die Verknüpfung verschiedener Meta-Dienste über das Accounts Center. Nur wenn Nutzerinnen und Nutzer ihre Konten dort registrieren, fließen die Daten auch plattformübergreifend in die Empfehlungen ein. Wer beispielsweise WhatsApp nicht mit dem Accounts Center verbindet, muss laut Ankündigungsbeitrag nicht damit rechnen, dass KI-Chats aus dem Messenger das Facebook- oder Instagram-Erlebnis beeinflussen.

Auf diese Weise versucht Meta, den Nutzenden selbst mehr Kontrolle über die Reichweite ihrer Interaktionen zu geben. Die Entscheidung, welche Informationen zwischen den Plattformen geteilt werden, liegt bei denjenigen, die ihre Konten verknüpfen oder getrennt halten.

Die geplanten Änderungen treten am 16. Dezember 2025 in Kraft. Meta kündigt an, Nutzerinnen und Nutzer vorab per Benachrichtigungen und E-Mails zu informieren, sodass ausreichend Zeit bleiben soll, Einstellungen zu überprüfen oder anzupassen.

Die Einführung soll schrittweise erfolgen. Zunächst wird das Update in den meisten Regionen umgesetzt, später möchte das Unternehmen die Funktion weltweit bereitstellen.


(mdo)



Source link

Weiterlesen

Entwicklung & Code

Jakarta EE Developer Survey 2025 zeigt Wachstum bei Java 21 und Cloud


Die Eclipse Foundation hat die Ergebnisse des 2025 Jakarta EE Developer Survey veröffentlicht. Mit über 1.700 Teilnehmenden – ein Plus von 20 Prozent gegenüber dem Vorjahr – liefert die Befragung einen umfangreichen Einblick in den Stand von Enterprise Java weltweit. Die Resultate unterstreichen den wachsenden Einfluss von Jakarta EE, insbesondere im Kontext von Cloud-nativen Anwendungen und moderner Java-Entwicklung.

Die Eclipse Foundation ist eine der größten Open-Source-Organisationen und betreut Projekte wie Jakarta EE. Mit dem jährlichen Jakarta EE Developer Survey erhebt sie Trends und Prioritäten der weltweiten Java-Community.

Zum ersten Mal liegt die Java-Plattform Jakarta EE mit 58 Prozent Nutzung vor Spring (56 Prozent). Dieser Wechsel markiert einen Meilenstein in der Enterprise-Java-Welt. Ausschlaggebend sei einerseits die Veröffentlichung von Jakarta EE 11, andererseits eine wachsende Aufmerksamkeit dafür, dass Spring selbst auf Jakarta-EE-Spezifikationen basiert.


Balkendiagramm zeigt Nutzung von  Spring/Spring Boot, Jarkata EE und MicroProfile - Spring liegt vorne.

Balkendiagramm zeigt Nutzung von  Spring/Spring Boot, Jarkata EE und MicroProfile - Spring liegt vorne.

Das Balkendiagramm zeigt die Nutzung von Spring/Spring Boot, Jarkata EE und MicroProfile. Spring liegt erstmals vorne.

(Bild: Eclipse Foundation)

Obwohl die vollständige Plattformversion erst nach Abschluss der Umfrage erschien, setzen bereits 18 Prozent der Befragten auf Jakarta EE 11. Besonders dominant ist der frühe Einsatz in kleineren Unternehmen (weniger als 500 Mitarbeitende), doch auch Großunternehmen ab 10.000 Beschäftigten zeigen signifikantes Interesse.


Kaffeetasse, betterCode() Java

Kaffeetasse, betterCode() Java

(Bild: Playful Creatives / Adobe Stock)

Am 14. Oktober dreht sich bei der betterCode() Java 2025 alles um das frisch veröffentlichte Java 25. Die von iX und dpunkt verlag ausgerichtete Online-Konferenz behandelt in sechs Vorträgen die wesentlichen Neuerungen. Eine Keynote von Adam Bien zu 30 Jahren Java rundet den Tag ab.

Ein klarer Trend: 43 Prozent der Entwicklerinnen und Entwickler nutzen bereits Java 21 – ein deutlicher Sprung von 30 Prozent im Jahr 2024. Gleichzeitig geht die Nutzung älterer Versionen wie Java 8 und 17 zurück. Java 11 erlebt dagegen ein leichtes Comeback und erreicht 37 Prozent.


Balkendiagram zeigt Nutzung der Java-Versionen: Java 8 führt vor Java 17; Platz 3 belegt Java 21 und zuletzt Java 11

Balkendiagram zeigt Nutzung der Java-Versionen: Java 8 führt vor Java 17; Platz 3 belegt Java 21 und zuletzt Java 11

Die Grafik zeigt Nutzung der Java-Versionen: Java 8 führt vor Java 17; Platz 3 belegt Java 21 und am wenigsten genutzt wird Java 11.

(Bild: Eclipse Foundation)

Die Strategien zur Cloud-Migration sind weiterhin unterschiedlich verteilt. Zwar bleibt Lift-and-Shift mit 22 Prozent führend, doch gleichzeitig steigt offenbar die Unsicherheit: 20 Prozent der Befragten haben 2025 noch keine klare Cloud-Strategie, fast doppelt so viele wie im Vorjahr.

Die Prioritäten der Community verschieben sich gemäß Umfrage deutlich in Richtung Cloud-native Readiness und eine schnellere Implementierung von Jakarta-EE-Spezifikationen in Applikationsservern. Developer wünschen sich zudem offenbar praxistaugliche Kubernetes-Features wie Health Checks, Secrets-Management und Telemetrie-Unterstützung.

Die Ergebnisse der diesjährigen Umfrage zeigen, wie sich Enterprise Java Schritt für Schritt weiterentwickelt. Entwicklerinnen und Entwickler setzen verstärkt auf Jakarta EE, nutzen schneller neue Java-Versionen wie Java 21 und greifen zunehmend auf Cloud-native Ansätze zurück.

Viele Teams arbeiten bereits aktiv an Cloud-Migrationen, doch ein Teil sucht offenbar noch nach der passenden Strategie. Gleichzeitig gestalten Unternehmen ihre Architekturen flexibler und passen bestehende Systeme an moderne Anforderungen an. Damit rückt Jakarta EE verstärkt in den Mittelpunkt der aktuellen Entwicklungen im Java-Ökosystem.

Weitere Informationen sowie der Zugang zum Survey finden sich im Blogbeitrag auf der Seite der Eclipse Foundation.


(mdo)



Source link

Weiterlesen

Entwicklung & Code

Proxmox Mail Gateway 9.0 mit mehr Schutz und einfacherem Quarantäne-Management


Die Proxmox Server Solutions GmbH aus Wien hat mit dem Proxmox Mail Gateway 9.0 ihre Open-Source-Plattform für sichere E-Mail aktualisiert. Ebenso wie die Virtualisierungslösung Proxmox VE 9.0 und der Proxmox Backup Server 4.0 arbeitet das Mail Gateway damit auf Basis von Debian GNU/Linux 13.0 „Trixie“. Während Debian standardmäßig einen Linux-Kernel 6.12 LTS verwendet, habe sich das Proxmox-Entwicklerteam für einen angepassten Linux-Kernel 6.14.11-2 entschieden.

Das Dateisystem ZFS hat gerade den zweiten Release Candidate für Version 2.4 veröffentlicht (zfs-2.4.0-rc2), Proxmox setzt jedoch auf die neueste stabile ZFS-Version 2.3.4. Als Datenbank-Engine kommt PostgreSQL 17 zum Einsatz. Gegen Spam, Viren, Trojaner und Phishing-E-Mails sollen unter anderem Open-Source-Technologien wie ClamAV 1.4.3 und SpamAssassin 4.0.2 mit aktualisierten Rulesets schützen.


Proxmox-Mail-Gateway 9.0 Statistik zu Mails

Proxmox-Mail-Gateway 9.0 Statistik zu Mails

In der Statistik-Ansicht erhalten Nutzerinnen und Nutzer eine Übersicht über ein- und ausgehende sowie Junk-, Virus-Mails und Bounces.

(Bild: Proxmox Server Solutions GmbH)

Das neue Quarantäne-Interface wurde speziell für Mobilgeräte optimiert und ermöglicht es seinen Benutzern, ihre quarantänisierten Nachrichten komfortabel über eine überarbeitete Weboberfläche zu verwalten. Entwickelt mit dem Rust-basierten Yew-Framework soll es die bisherige Implementierung komplett ersetzen.

Die Authentifizierungsfunktionen und SSO-Integration (Single Sign-On) wurden deutlich erweitert: OpenID-Connect-Realms lassen sich nun vollständig über die grafische Oberfläche konfigurieren, inklusive Claim-Zuordnungen und automatischer Rollenvergabe. Dadurch wird eine nahtlose Anbindung an gängige Identity- und Access-Management-Lösungen wie Keycloak, Zitadel oder LemonLDAP::NG ermöglicht.

Mehr Sicherheit soll die Anpassung der Content-Type-Filter-Engine erreichen, die aktualisierten MIME-Typen für Microsoft-Ausführungsdateien zuverlässiger erkennen und blockieren kann.

Alle Verbesserungen und Änderungen, aber auch mögliche auftretende Probleme beim Umstieg von vorherigen Versionen des Proxmox Mail Gateway sind in dem Wiki dokumentiert.

Das Proxmox Mail Gateway 9.0 steht als Open-Source-Software ab sofort zum Download bereit und darf kostenlos eingesetzt werden. Der Zugriff auf das Enterprise-Repository kostet 180 Euro (netto) pro Jahr, professioneller Support ist von 510 bis 1800 Euro (netto) pro Jahr erhältlich.


(mdo)



Source link

Weiterlesen

Beliebt