Signatur
Beschreibung
imap_set_quota() setzt die maximale Speichergröße für ein bestimmtes IMAP-Postfach (Quota Root) auf dem IMAP-Server. Diese Funktion ermöglicht es, serverseitig zu steuern, wie viel Speicher einem Postfach zugewiesen wird. Sie ist besonders nützlich für Administratoren, die Postfachgrößen zentral verwalten müssen.
Die Funktion verwendet das IMAP-QUOTA-Erweiterungsprotokoll (RFC 2087). Der IMAP-Server muss diese Erweiterung unterstützen, damit imap_set_quota() erfolgreich arbeiten kann. Viele moderne IMAP-Server wie Dovecot oder Cyrus IMAP unterstützen diese Erweiterung.
Der Parameter mailbox_size wird in Kilobytes (KB) angegeben. Die Verbindung muss typischerweise mit Administratorrechten aufgebaut worden sein, da normale Benutzer meist keine Berechtigung haben, eigene oder fremde Quotas zu setzen.
Um die aktuell gesetzte Quota abzufragen, kann die Funktion imap_get_quota() bzw. imap_get_quotaroot() verwendet werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $imap Pflicht | IMAP\Connection | Eine aktive IMAP-Verbindungsinstanz, die mit imap_open() geöffnet wurde. Die Verbindung sollte mit ausreichenden (Administrator-)Rechten hergestellt worden sein. |
|
| $quota_root Pflicht | string | Der Name des Postfachs (Quota Root), für das die Quota gesetzt werden soll. Typischerweise der Benutzername oder der Postfachpfad, z. B. user/beispiel oder INBOX. |
|
| $mailbox_size Pflicht | int | Die maximale Postfachgröße in Kilobytes (KB). Ein Wert von 0 kann je nach Server-Implementierung die Quota aufheben oder auf unbegrenzt setzen. |
Rückgabewert
true zurück, wenn die Quota erfolgreich gesetzt wurde, andernfalls false. Ein Fehlschlag tritt auf, wenn der Server die QUOTA-Erweiterung nicht unterstützt, die Verbindung nicht die nötigen Rechte besitzt oder der angegebene Postfachname nicht existiert.Beispiele
Quota für ein IMAP-Postfach setzen
<?php
// IMAP-Verbindung mit Administratorkonto aufbauen
$imap = imap_open(
'{imap.example.com:143}',
'admin@example.com',
'geheimesPasswort'
);
if (!$imap) {
die('Verbindung fehlgeschlagen: ' . imap_last_error());
}
// Quota für den Benutzer 'max.mustermann' auf 500 MB setzen (= 512000 KB)
$benutzer = 'user/max.mustermann';
$quotaKB = 512000; // 500 MB in KB
$ergebnis = imap_set_quota($imap, $benutzer, $quotaKB);
if ($ergebnis) {
echo "Quota erfolgreich auf {$quotaKB} KB gesetzt.";
} else {
echo 'Fehler beim Setzen der Quota: ' . imap_last_error();
}
imap_close($imap);
Quota setzen und anschließend überprüfen
<?php
$imap = imap_open(
'{imap.example.com:143/imap}',
'admin@example.com',
'geheimesPasswort'
);
if (!$imap) {
die('Verbindung fehlgeschlagen.');
}
$benutzer = 'user/erika.muster';
$neueQuotaKB = 102400; // 100 MB
// Quota setzen
if (imap_set_quota($imap, $benutzer, $neueQuotaKB)) {
echo "Quota gesetzt. Überprüfe aktuellen Stand...\n";
// Quota auslesen zur Bestätigung
$quota = imap_get_quota($imap, $benutzer);
if ($quota) {
echo "Aktuelle Quota: " . $quota['STORAGE']['limit'] . " KB\n";
echo "Aktuell genutzt: " . $quota['STORAGE']['usage'] . " KB\n";
}
} else {
echo 'Quota konnte nicht gesetzt werden: ' . imap_last_error();
}
imap_close($imap);
// Wichtig · Fallstricke
Serverunterstützung erforderlich: imap_set_quota() setzt voraus, dass der IMAP-Server die QUOTA-Erweiterung (RFC 2087) implementiert. Falls der Server diese nicht unterstützt, schlägt die Funktion stillschweigend fehl und gibt false zurück. Mit imap_last_error() lässt sich der genaue Fehler abfragen.
Berechtigungen: Das Setzen von Quotas erfordert in der Regel administrative Rechte auf dem IMAP-Server. Normale Benutzerkonten haben typischerweise keine Berechtigung, Quotas zu verändern. Stellen Sie sicher, dass die verwendete Verbindung über ausreichende Rechte verfügt.
Einheitenproblem: Der Wert für mailbox_size wird in Kilobytes angegeben – nicht in Megabytes oder Bytes. Eine häufige Fehlerquelle ist die Verwechslung der Einheiten.
PHP 8.1: Ab PHP 8.1 liefert imap_open() ein IMAP\Connection-Objekt statt einer Ressource. Die Funktion selbst wurde in PHP 8.4 als veraltet (deprecated) markiert, da die gesamte IMAP-Erweiterung im Zuge der Modularisierung ausgelagert wird. Es empfiehlt sich, auf moderne IMAP-Bibliotheken wie Horde_Imap_Client oder Webklex/php-imap umzusteigen.