# EMule

eMule (englisch mule [ˈiːmjuːɫ], deutsch ‚Maultier‘) ist ein weitverbreiteter und freier Filesharing-Client für das eDonkey2000- und das Kad-Netzwerk. Er wurde als Alternative zu dem ursprünglichen, mittlerweile aufgegebenen eDonkey-Client entwickelt und um zahlreiche Fähigkeiten erweitert. eMule ist mittlerweile der mit Abstand gebräuchlichste Client für das eDonkey2000-Netzwerk, welches jedoch heute nur mehr eine unbedeutende Rolle im Filesharing spielt.

## Eigenschaften

eMule ist frei und quelloffen, des Weiteren enthält es keine Werbung und Spionageprogramme. Es werden mehrere Protokolle (eD2K, Quellenaustausch, Kad) zum Auffinden anderer Clients verwendet. Ein internes Vertrauenspunkte-System sorgt für eine bevorzugte Behandlung von Clients, die große Mengen an Daten hochladen, so dass diese in der eigenen Warteschlange schneller vorankommen.
eMule verfügt über eine integrierte Datenkompression zwischen eMule- und kompatiblen Clienten. PeerCache wird unterstützt, so ist es Internetprovidern möglich, ihre von eMule verursachten Datenübertragungsrate durch Caching zu reduzieren.
Die „intelligente Fehlerkorrektur“ (Intelligent Corruption Handling, kurz „I.C.H.“), die eMule dem original eDonkey-Client ebenfalls voraus hat, wurde inzwischen durch die bessere „Erweiterte Intelligente Fehlerkorrektur“ (Advanced Intelligent Corruption Handling, kurz A.I.C.H.) ersetzt. Diese verbesserte Variante kann nun defekte Dateisegmente schon in 180-kB-Größe ausmachen und unbeschädigte Teile retten. Beim originalen eDonkey-Client musste der gesamte Chunk (9,28 MB) erneut geladen werden. Weiterhin lassen sich die eDonkey-Downloadlinks mit einem zusätzlichen AICH-Hashwert ergänzen, was präventiv gegen defekte Daten schützen kann.
Mit der Vorschaufunktion können Videos und Archive angeschaut werden, bevor sie vollständig heruntergeladen wurden.
Es ist möglich, die heruntergeladenen Dateien zu kategorisieren und in unterschiedliche Ordner zu verteilen. Dateien können sowohl im Hochladen als auch im Herunterladen verschiedene Prioritäten zugewiesen werden. Das Verwenden komplexer booleschen Suchanfragen wird unterstützt.
eMule hat einen integrierten IRC-Klienten. Es verwendet die freie SMIRC-Implementierung.
Man kann eMule per Webschnittstelle von jedem beliebigen Rechner (oder Handheld) mit Zugang zum Netzwerk oder einem Internetanschluss aus fernsteuern.
Durch das Erstellen von „Kollektionen“ ist es möglich, zusammenhängende Dateien im Netzwerk zu finden. Der Ordner mit nicht fertiggestellten (temporären) Dateien nimmt viel Platz in Anspruch, meist mehr als z. B. früher bei eDonkey, und es kann aufgrund der Arbeitsweise von eMule vorkommen, dass eine der Originalgröße entsprechende temporäre Datei angelegt wird, auch wenn erst ein paar Kilobytes heruntergeladen sind.

## Versionsgeschichte

Die erste offizielle Version 0.02 wurde am 6. Juli 2002 bei SourceForge.
Da das quelloffene Modell dazu einlud klientseitige Restriktionen des Protokolls zu deaktivieren, wurde mit der Version 0.19a vom 14. September 2002 ein Kredit-System eingeführt. In der Warteschlange eines anderen Benutzers wird nun umso schneller vorrückt, je mehr Daten man ihm bereits gesendet hat. Eigene Kreditpunkte können nicht manipuliert werden, da diese bei den anderen Benutzern gespeichert sind.
Mit der Version 0.47a sind folgende Funktionen hinzugekommen:
Dateien bis 256 GB (vorher 4 GB) werden unterstützt. Es gibt erweiterte Suchmöglichkeiten, verbesserte Proxyunterstützung und Unterstützung serverseitig gespeicherter Dateibewertungen. Clients, die Spam-Nachrichten verschicken, werden automatisch gebannt. eMule 0.47a ist bereits grundlegend Kad-2.0-fähig, eine vollständige Aktivierung erfolgte erst in späteren Versionen; das „alte“ Kad-1.0-Netz wird ab Version 0.50a nicht mehr unterstützt.
Ab der Version 0.47b ist „Obfuskation“ (Protokollverschleierung) im eDonkey2000-Netzwerk möglich. Eine Obfuskation ins Kademlia-Netzwerk kam ab der Version 0.49a vollständig hinzu. Das kann Providern und/oder Netzwerkadministratoren das Erkennen von eMule-Datenverkehr erschweren und so Gegenmaßnahmen eventuell verhindern. Entgegen weitläufigen Annahmen wird dadurch keine größere Anonymität erzielt. Unter Umständen äußert sich die Protokollverschlüsselung sogar in geringfügig höherer Nutzung der Übertragungsrate („Overhead“).

## Funktion

eMule baut auf der serverbasierten eDonkey2000-Plattform auf, ist in Visual C++ programmiert und nutzt die Microsoft Foundation Classes. Der Client verfügt über zusätzliche Suchalgorithmen für Quellen wie den Quellenaustausch sowie über das serverlose Kad, das auf dem Kademlia-Algorithmus basiert.
Der Großteil der eMule-Nutzer ist mit einem Server und somit dem eD2K-Netz (eD2K steht für eDonkey2000) verbunden. Der jeweilige Server indiziert meist alle von einem verbundenen Client freigegebenen Dateien. Fragt ein anderer Client nach einer bestimmten Datei, liefert der Server ihm bekannte (verbundene) Clients, die diese Datei anbieten. Die Kontaktaufnahme und der Download erfolgen dann direkt von Client zu Client ohne den Server (Ausnahme: LowID). Zudem fragt eMule alle Server in der Serverliste nach Quellen ab, nicht nur den verbundenen. Entgegen verbreiteter Auffassung ist es folglich auch irrelevant, mit welchem Server der Client verbunden ist, lediglich eine hohe Auslastung des Servers kann das Liefern der Quellen verzögern. Die Servermethode ist zwar die schnellste und benötigt eine geringe Übertragungsrate, liefert jedoch die wenigsten Quellen. Auch unterliegen alle Clients den Regeln des Servers, mit dem sie verbunden sind: Überwiegend werbefinanziert, beschränken Serverbetreiber oft die maximale Anzahl freigegebener Dateien, wodurch die Datenübertragungsrate für mehr angemeldete Benutzer statt für möglichst viele Dateien genutzt wird, was den Sinn des Tauschprogramms ad absurdum führt.
Die Server dienen nur zum Finden anfänglicher Quellen, den Großteil findet eMule, indem es mit anderen Clients Quellen austauscht. Laden etwa Client „A“ und „B“ die gleichen Dateien herunter, kann „A“ bei „B“ anfragen, welche weiteren Clients er kennt, die ebenfalls diese Datei laden bzw. anbieten. Diese Methode produziert zwar mehr Overhead, als die Quellen von einem Server mitgeteilt zu bekommen, sie gilt aber inzwischen als unentbehrlich.
Neben Server und Quellenaustausch gibt es eine dritte Methode, um an Quellen zu kommen. Da bei einem Ausfall vieler großer Server auch der Quellenaustausch nicht mehr richtig funktionieren würde (es werden erst ein paar Quellen gebraucht, um überhaupt untereinander tauschen zu können), wurde Kademlia als serverloses Netz hinzugefügt. Hier gibt es keine speziellen Server mehr, sondern jeder Client ist auch zugleich Server und arbeitet Suchanfragen anderer Clients ab. Der Vorteil ist, dass das Netz nicht mehr von einigen Serverbetreibern abhängig ist, jedoch kosten die zusätzlichen Aufgaben auf jedem Client etwas Datenübertragungsrate (meist ca. 1 kB/s jeweils für Up- und Download). Kademlia findet in der Regel auch Quellen, die per Server und Quellenaustausch unentdeckt bleiben.

### LowID

Im Normalfall kontaktiert eMule eine Quelle direkt und fragt nach einem Downloadplatz; das ist jedoch nicht möglich, wenn der Client eine LowID hat. Bestimmt wird die ID normalerweise vom Server, der nach dem Verbinden versucht, den Client direkt zu kontaktieren (im Kad-Netz übernimmt diese Aufgabe ein beliebiger Client). Schlägt das fehl, weil sich der Client zum Beispiel hinter einer Firewall oder einem Router befindet, der die Daten über den Port nicht direkt zu eMule durchlässt, erhält dieser eine LowID. In diesem Fall muss die Kontaktaufnahme über einen Vermittler erfolgen, dessen Rolle im eD2K-Netz der Server und im Kad-Netz ein kontaktierbarer Client, der sogenannte Buddy, übernimmt. eMule teilt dem Server/Buddy mit, dass es von einem LowID-Client herunterladen möchte, dieser übermittelt diese Informationen dem verbundenen LowID-Client, und dieser wiederum kontaktiert dann eMule zwecks der eigentlichen Datenübertragung.
Da ein LowID-Client nicht von außen kontaktiert werden kann, können LowID-Clients nicht voneinander laden. Zusätzlich verursacht die Vermittlung über den Server/Buddy Last auf diesem, weshalb eMule wenn möglich von außen erreichbar sein sollte. LowID ist also keine Erfindung der Programmierer, um bestimmte Anwender zu bestrafen, sondern eine technische Bedingung, damit diese Anwender überhaupt am Netz teilnehmen können.
Einige eMule-Modifikationen wie NeoMule nutzen ähnliche Techniken wie Skype, um die technische Einschränkung zu umgehen, dass LowID-Clients keine anderen LowID-Clients kontaktieren können.

## Nutzerzahlen

Laut slyck.com zählte das eDonkey2000-Netzwerk im Mai 2006 etwas über 3 Millionen Nutzer. Andere Quellen gaben im Mai 2007 sogar über 4,5 Millionen an.
Seit Veröffentlichung des eMule-Clients bei SourceForge wurde das Programm von dort über 650 Millionen Mal heruntergeladen (Stand: Januar 2020) und belegte damit lange den Spitzenplatz unter allen auf SourceForge gelisteten Open-Source-Programmen. In Deutschland zählte e-Mule zu den populärsten Klienten.

## Modifikationen

Es gilt zwischen eMule-Mods und eMule-Forks zu unterscheiden: Eine Mod weicht vergleichsweise wenig vom Original ab, während ein Fork eine komplett eigenständige Entwicklung ist, die unabhängig vom eMule-Hauptcode entwickelt wird.
Solche Mods gibt es, auch aufgrund der hohen Verbreitung von eMule, in inzwischen unüberschaubarer Anzahl. Einige von ihnen sind auf bestimmte Teilbereiche des eD2K-/KAD-Netzes optimiert; so ist die Modifikation ZZUL zum Beispiel auf das effiziente Verteilen einzelner Dateien spezialisiert.
Plattformunabhängige Abwandlungen, die teilweise auf aktuellem eMule-Code basieren, sind zum Beispiel aMule und xMule. Beide sind nicht nur unter Windows, sondern auch unter anderen Betriebssystemen wie Linux oder macOS lauffähig.
Des Weiteren existieren einige Forks, deren bekanntester Vertreter eMule Plus ist. Diese Version basiert auf dem veralteten Quellcode von eMule 0.30, wird aber regelmäßig aktualisiert. Eine Unterstützung für das serverlose Kademlia-Netzwerk bietet sie allerdings nicht.

### Bösartige Mods

Die offene Entwicklung von eMule zog nicht nur Programmierer an, die bestrebt waren, Verbesserungen vorzunehmen, sondern auch solche, die dem Netzwerk schaden wollen bzw. es in Kauf nahmen, dass ihm geschadet wird, um den eigenen Download zu beschleunigen. Angefangen von Modifikationen, die sich unfair verhalten, indem sie den anderen Netzwerkteilnehmern Upload verweigern oder ihn unfair verteilen, über kommerzielle Abwandlungen, die den Benutzer zwingen, für den Gebrauch zu zahlen, bis hin zu Modifikationen, die gezielt das Netzwerk stören und beispielsweise defekte Daten verteilen, reicht die Palette. Es ist mittlerweile zur Gewohnheit geworden, bei solchen Abwandlungen von „Leechern“ zu sprechen, unabhängig davon, in welcher Weise sie das Netzwerk schädigen. Viele Programmierer „gutartiger“ Mods haben es sich zur Aufgabe gemacht, dagegen vorzugehen, indem Benutzer solcher „Leecher“-Mods erkannt und blockiert werden. Um das umzusetzen, gibt es mehrere unterschiedliche Ansätze, die auch unter den Modentwicklern selbst kontrovers diskutiert werden.