pdadmin-forum

pdadmin-forum » Information » Add-Ons » [Fertiggestellt] Postboxen Quota Check und Benachrichtigung » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Seiten (2): [1] 2 nächste » Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Postboxen Quota Check und Benachrichtigung
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Lars
Moderator


images/avatars/avatar-11.gif

Dabei seit: 20.12.2005
Beiträge: 996
Herkunft: Leipzig

Achtung Postboxen Quota Check und Benachrichtigung Antworten | Zitieren | Editieren | Melden       Zum Anfang der Seite springen

Hallo liebe PD-Admin Gemeinde,

wie in diversen Themen hier im Forum schon angesprochen, fehlt PD-Admin eine Funktion zur Benachrichtigung von Benutzern bei Gefahr eines Überlaufs ihrer Postbox. Da hierzu nie eine konkrete Aussage gemacht wurde ob das nun umgesetzt wird und vor allem wann, hat einer unserer Entwickler diese Funktion nun in einem einfachen PHP-Skript umgesetzt. Nach einem Monat Testzeit hat sich das Skript bewährt und ich möchte es euch nun auch zur Verfügung stellen.
---
Funktion:

- Prüfung der Postbox-Größen
- Prüfung der erlaubten Quota (Auswertung .quota File)
- Berechnung des verbrauchten Speicherplatzes
- Bei erreichen eines definierten Schwellwertes erfolgt die Auslößung einer Benachrichtigung an den betroffenen Benutzer (E-Mail wird aus DB geholt)

Integration:

1. Archiv von laden *1 und an beliebige Stelle entpacken.

2. Variablen in der postbox_check.php anpassen. Insbesondere das DB Passwort für vadmin, Absenderadresse und event. Mailtexte.
Schwellwert ist auf 70% gestellt und kann nat. auch geändert werden.

3. Zum Test kann man die "Debug Echo" und den Mail Eintrag Zeile 132 nutzen und das Skript mit "php postbox_check.php" aufrufen(oder im Browser falls erreichbar).

4. Die Debug Settings wieder auskommentieren und das Skript per Cronjob einbinden. Z.B.:
code:
1:
30 1 * * 0 php /usr/local/pd-admin2/htdocs/popbox_check/postbox_check.php


*1: http://www.leits.com/pub/upload/postbox_check.zip

Feedback erwünscht. Dieses Skript kann natürlich auch wenn gewünscht in PD-Admin aufgenommen werden. Ist aber halt PHP, kein Perl Augenzwinkern

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
<?php
///////////////////////////////////////////////////////////
// Postbox Quota Checker fuer 
// PD-Admin Installationen
//
// Version 0.9
//
// Die Groesse der Postboxen wird mit der vergebenen Quota
// verglichen und ab einem einstellbaren Schwellwert
// eine Benachrichtigung ausgeloest.
// E-Mailadressen werden aus der PD-Admin DB geholt.
//
// Author: Rayk Zimmermann - LEITS GbR [www.leits.com]
//
// License: GPL - see LICENSE File
////////////////////////////////////////////////////////////


//Mailklasse includen
require("mailclass/email_versand.php");

# Speicherpfad zu den Postfaechern (z.b. /home/popuser/popboxen)
$popboxpfad='/home/popuser/popboxen';

# Verbindungs-Einstellungen zur MySQL DB
$dbhost="localhost";
$dbuser="vadmin";
$dbpass="yourpassword";
$dbname="vadmin";

//Ab welchem Prozentwert soll Email verschickt werden
$schwelle=70;

//Absender fuer Email-Versand
$abs_name = "Postmaster - Quota-Check";
$abs_email = "postmaster@yourdomain.tld";

//Kopie an Postmaster (wenn definiert)
$bcc_email='';

function dirscan($dir)
{
  $dirlist = opendir($dir);
  while ($file = readdir ($dirlist))
  {
    if ($file != '.' && $file != '..' && $file != 'mailclass')
    {
      $newpath = $dir.'/'.$file;
      $level = explode('/',$newpath);
      if (is_dir($newpath))
      {
        $mod_array[] = array(
          'level'=>count($level)-1,
          'path'=>$newpath,
          'name'=>end($level),
          'content'=>dirscan($newpath));
      }
    }
  }
  closedir($dirlist);
  return $mod_array;
}


function dir_size($dir, $size = 0) {
    $handle = opendir($dir);

    while ($file = readdir($handle)) {
        if ($file == '.' || $file == '..') continue;

        $full_path = $dir.$file;

        if (is_dir($full_path)) {
            $size = dir_size($full_path.'/', $size);
        } else {
            $size += filesize($full_path);
        }
    }

    closedir($handle);

    return $size;
}

$ordner = dirscan($popboxpfad);

for($i=0;$i<sizeof($ordner);$i++) {

   for($j=0;$j<sizeof($ordner[$i]['content']);$j++) {
   
   /* Debug Echo
   echo $ordner[$i]['content'][$j]['path']."<br>"; */

   $filename = $ordner[$i]['content'][$j]['path']."/.quota";
   $handle = fopen ($filename, "r");
   $contents = fread ($handle, filesize ($filename));
   fclose ($handle);
   /* Debug Echo
   echo "Quota: ".($contents/1000)."MByte<br>"; */
   
   $total=dir_size($ordner[$i]['content'][$j]['path']."/Maildir/");
   /* Debug Echo
   echo "Used: ".trim($total)."Byte<br>"; */

$prozent=($total*100)/($contents*1000);

/* Debug Echo
echo "Belegt: ".$prozent." %<br>"; */

if($prozent>=$schwelle) {

/* Verbindung zum Datenbank-Server */
	$db = @mysql_pconnect($dbhost,$dbuser,$dbpass);

/* Waehle Datenbank */
    mysql_select_db($dbname,$db);

/* Abfrage der Email Adresse des popusers  */
$login=trim($ordner[$i]['content'][$j]['name']);

$result = mysql_query("SELECT email from pop3 where login='$login'");
$erg = mysql_fetch_array($result);
$email = $erg["email"];

/* Betreff der Warnungsmail */
$betreff = "Der Speicherplatz ihres Postfaches ist zu ".round($prozent)." % belegt";

/* Mailtext der Warnungsmail */
$message = "Sehr geehrter Kunde,\n\nder verfuegbare Speicherplatz Ihres POP-Accounts -".$login."- (".$email.") ist zu mehr als ".round($prozent)." % belegt,\nbitte rufen Sie Ihre E-Mails ab. Bitte beachten Sie das bei 100 Prozent Fuellung keine E-Mails mehr angenommen werden.\n\n\nMit freundlichen Gruessen, Ihr Postmaster";

/* Mailempfänger für Testzwecke überschreiben - Debug Setting
 $email = "debug@yourhost.com"; */

/* Mailversand */
if(isset($email) AND $email!="") {
email_senden($abs_email,$abs_name,$betreff,$message,'',array($email),array(),array(),array(),array($bcc_email),array(),array(),array(),array($abs_email),array());
}

/* Debug Echo
echo "Email geht an: ".$email."<br>"; */
}}}

?>

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Lars: 17.05.2007 13:47.

13.10.2006 19:18 Lars ist offline Beiträge von Lars suchen Nehme Lars in Deine Freundesliste auf
Twilo
Moderator


images/avatars/avatar-5.png

Dabei seit: 12.09.2004
Beiträge: 2.830
Herkunft: Berlin

Antworten | Zitieren | Editieren | Melden       Zum Anfang der Seite springen

Hallo,

postbox_check.tar.gz: invalid compressed data--crc error

mfg
Twilo

__________________
Wunschzettel smile
Farbtabelle
13.10.2006 20:45 Twilo ist offline Homepage von Twilo Beiträge von Twilo suchen Nehme Twilo in Deine Freundesliste auf
Lars
Moderator


images/avatars/avatar-11.gif

Dabei seit: 20.12.2005
Beiträge: 996
Herkunft: Leipzig

Themenstarter Thema begonnen von Lars
Antworten | Zitieren | Editieren | Melden       Zum Anfang der Seite springen

Hmm..unter Linux und Mac kann ich es öffnen.
Naja, ich habe es mal Massenkompatibler als ZIP gepackt. Augenzwinkern
13.10.2006 23:50 Lars ist offline Beiträge von Lars suchen Nehme Lars in Deine Freundesliste auf
Twilo
Moderator


images/avatars/avatar-5.png

Dabei seit: 12.09.2004
Beiträge: 2.830
Herkunft: Berlin

Antworten | Zitieren | Editieren | Melden       Zum Anfang der Seite springen

Hallo,

Zitat:
Original von Lars
Hmm..unter Linux und Mac kann ich es öffnen.

das Problem hatte ich mit 7zip unter Win XP 64bit und unter Debian 3.1

mfg
Twilo

__________________
Wunschzettel smile
Farbtabelle
13.10.2006 23:51 Twilo ist offline Homepage von Twilo Beiträge von Twilo suchen Nehme Twilo in Deine Freundesliste auf
Lars
Moderator


images/avatars/avatar-11.gif

Dabei seit: 20.12.2005
Beiträge: 996
Herkunft: Leipzig

Themenstarter Thema begonnen von Lars
Antworten | Zitieren | Editieren | Melden       Zum Anfang der Seite springen

Hast Du es mal probiert Twilo? Oder jemand anderes? Augenzwinkern Mich würde mal interessieren wie das Script da läuft. Wie sind die Laufzeiten? Ich hatte bisher max 15 Sekunden.
17.10.2006 15:28 Lars ist offline Beiträge von Lars suchen Nehme Lars in Deine Freundesliste auf
Twilo
Moderator


images/avatars/avatar-5.png

Dabei seit: 12.09.2004
Beiträge: 2.830
Herkunft: Berlin

Antworten | Zitieren | Editieren | Melden       Zum Anfang der Seite springen

Hallo,

schau mal in dein PN Ordner nach

ich habe/hatte selber eine Klasse dafür geschrieben, deins konnte ich aus Zeitgründen leider noch nicht testen

mfg
Twilo

__________________
Wunschzettel smile
Farbtabelle
17.10.2006 17:09 Twilo ist offline Homepage von Twilo Beiträge von Twilo suchen Nehme Twilo in Deine Freundesliste auf
Lars
Moderator


images/avatars/avatar-11.gif

Dabei seit: 20.12.2005
Beiträge: 996
Herkunft: Leipzig

Themenstarter Thema begonnen von Lars
Antworten | Zitieren | Editieren | Melden       Zum Anfang der Seite springen

Ah.Habe ich nicht gesehen. Das nenne ich ja mal klassich doppelte Arbeit. :/ Kommt mir aus der OS Szene sehr bekannt vor. Augenzwinkern Ich schau es mir mal an und geb Dir dann Feedback per PM.
17.10.2006 17:15 Lars ist offline Beiträge von Lars suchen Nehme Lars in Deine Freundesliste auf
Twilo
Moderator


images/avatars/avatar-5.png

Dabei seit: 12.09.2004
Beiträge: 2.830
Herkunft: Berlin

Antworten | Zitieren | Editieren | Melden       Zum Anfang der Seite springen

Hallo,

ich werde daran noch einiges ändern, vielleicht hast du ja Verbesserungsvorschläge :-)

mfg
Twilo

__________________
Wunschzettel smile
Farbtabelle
17.10.2006 17:16 Twilo ist offline Homepage von Twilo Beiträge von Twilo suchen Nehme Twilo in Deine Freundesliste auf
Twilo
Moderator


images/avatars/avatar-5.png

Dabei seit: 12.09.2004
Beiträge: 2.830
Herkunft: Berlin

Daumen hoch! Antworten | Zitieren | Editieren | Melden       Zum Anfang der Seite springen

Hallo,

hier ist meine Version, die ich entwickelt habe

Dokumentation: QmailQuotaCheck
Download:QmailQuotaCheck v0.2
Readme

Feedback wäre nicht schlecht Freude

mfg
Twilo

__________________
Wunschzettel smile
Farbtabelle
22.10.2006 01:34 Twilo ist offline Homepage von Twilo Beiträge von Twilo suchen Nehme Twilo in Deine Freundesliste auf
miko93
Moderator


images/avatars/avatar-2.gif

Dabei seit: 08.09.2004
Beiträge: 1.012
Herkunft: Regensburg, Germany

Antworten | Zitieren | Editieren | Melden       Zum Anfang der Seite springen

Twilo, hab' ich da etwas übersehen?

Zitat:
[root@217-20-118-152 ~]# /usr/local/pd-admin2/bin/php5 -d html_errors=off -f ./QmailQuotaCheck/example.php;
Fehler beim Einlesen der Postmaster eMail-Adresse!


Lars, hat bei mir soweit funktioniert. Ich würde allerdings noch folgendes einbauen:

- per Schalter umschaltbar, ob Mail versendet wird, oder Reports ausgegeben werden (letzteres ist ja momentan die "Debug-Funktion")
- jedes <BR> mit einem '\n' erweitern; für die ollen Console-Tester ;-)

Dann könnten wir es doch auch in ein AddOn einbinden, oder?

Gruss
miko

__________________
Frage beantwortet? Problem gelöst? Dann markiert euren Beitrag bitte als [erledigt].
22.10.2006 17:13 miko93 ist offline E-Mail an miko93 senden Homepage von miko93 Beiträge von miko93 suchen Nehme miko93 in Deine Freundesliste auf
Seiten (2): [1] 2 nächste » Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
pdadmin-forum » Information » Add-Ons » [Fertiggestellt] Postboxen Quota Check und Benachrichtigung

Impressum | Team | Hilfe

Forensoftware: Burning Board, entwickelt von WoltLab GmbH    |    Design entwickelt von You-Online.de