Start · Sprachen · PHP · Referenz · ezmlm_hash

ezmlm_hash

Funktion

Berechnet den numerischen Hash-Wert einer E-Mail-Adresse, wie er vom EZMLM-Mailinglistenverwaltungssystem benötigt wird.

seit PHP 4.0.2 Kategorie: http

Signatur

ezmlm_hash(string $addr): int

Beschreibung

ezmlm_hash() berechnet einen numerischen Hash-Wert für eine gegebene E-Mail-Adresse nach dem Algorithmus, den das EZMLM-Mailinglistensystem (Easy Mailing List Manager) intern zur Verwaltung von Abonnenten verwendet. EZMLM speichert Abonnenten in Unterverzeichnissen, die nach einem Hash-Wert benannt sind, um die Dateisystemlast bei großen Listen zu verteilen.

Das Ergebnis ist eine ganze Zahl im Bereich von 0 bis 52, die als Verzeichnisname im EZMLM-Datenverzeichnis dient. PHP-Anwendungen, die direkt mit EZMLM-Verzeichnisstrukturen arbeiten (z. B. um Abonnenten zu lesen oder zu schreiben), benötigen diese Funktion, um den richtigen Speicherort einer E-Mail-Adresse zu ermitteln.

Die Funktion ist ausschließlich dann sinnvoll, wenn eine Anwendung direkt mit den Dateidaten eines EZMLM-Systems interagiert. Für allgemeine Hashing-Aufgaben sind PHP-Funktionen wie md5(), sha1() oder hash() deutlich besser geeignet.

Parameter

Name Typ Default Beschreibung
$addr Pflicht string Die E-Mail-Adresse, für die der EZMLM-Hash berechnet werden soll. Es wird empfohlen, die Adresse in Kleinbuchstaben zu übergeben, da EZMLM zwischen Groß- und Kleinschreibung unterscheidet.

Rückgabewert

Typ
int
Beschreibung
Gibt eine ganze Zahl im Bereich von 0 bis 52 zurück, die dem Hash-Wert der übergebenen E-Mail-Adresse entspricht und als Verzeichnisindex im EZMLM-System verwendet wird.

Beispiele

Hash einer E-Mail-Adresse berechnen

<?php
$email = 'benutzer@example.com';
$hash = ezmlm_hash($email);
echo "Der EZMLM-Hash für '{$email}' ist: " . $hash . PHP_EOL;
?>
Der EZMLM-Hash für 'benutzer@example.com' ist: 34

EZMLM-Verzeichnispfad für eine Adresse ermitteln

<?php
$ezmlmListDir = '/var/lib/ezmlm/meineliste';
$email = strtolower('Mitglied@Example.org');
$hash = ezmlm_hash($email);

// EZMLM speichert Abonnenten in: <liste>/subscribers/<hash>/<lokaler-Teil>
$subscriberDir = $ezmlmListDir . '/subscribers/' . $hash;
$localPart = substr($email, 0, strpos($email, '@'));
$subscriberFile = $subscriberDir . '/' . $localPart;

echo "Verzeichnis: " . $subscriberDir . PHP_EOL;
echo "Datei:       " . $subscriberFile . PHP_EOL;
?>
Verzeichnis: /var/lib/ezmlm/meineliste/subscribers/15 Datei: /var/lib/ezmlm/meineliste/subscribers/15/mitglied

// Wichtig · Fallstricke

Deprecation: ezmlm_hash() ist eine sehr spezielle Funktion ohne breite Anwendung außerhalb von EZMLM-Integrationen. Die EZMLM-Erweiterung gilt als veraltet und ist in modernen PHP-Versionen (ab PHP 8.0) nicht mehr im Core enthalten bzw. kaum noch aktiv gepflegt.

Sicherheitshinweis: Da der Hash-Wert nur 53 mögliche Werte (0–52) annehmen kann, ist er nicht für kryptografische Zwecke oder zur eindeutigen Identifikation von E-Mail-Adressen geeignet. Für sicherheitsrelevante Operationen sollte stets hash() mit einem starken Algorithmus verwendet werden.

Die Funktion steht nur zur Verfügung, wenn PHP mit IMAP-Unterstützung kompiliert wurde (--with-imap).

Siehe auch