pdadmin-forum

pdadmin-forum » PD-Admin » Anwendung » Maildir .quota » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Seiten (3): « vorherige 1 [2] 3 nächste » Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Maildir .quota
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
kempfsolutions
Mitglied


images/avatars/avatar-27.jpg

Dabei seit: 21.08.2009
Beiträge: 41

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

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:
#!/bin/bash
#30.12.2013 - by kempf-solutions.de
outputformat() {
        LENGTH=${#1}
        NUMBER=$1
        if [ $LENGTH -gt 0 ]; then
                if [ $LENGTH -gt 3 ]; then
                        if [ $LENGTH -gt 6 ]; then
                                if [ $LENGTH -gt 9 ]; then
                                        TYPE="GByte"
                                        SIZE=`bc <<< "scale=3;$NUMBER / 1000 / 1000 / 1000"`
                                else
                                        TYPE="MByte"
                                        SIZE=`bc <<< "scale=3;$NUMBER / 1000 / 1000"`
                                fi
                        else
                                TYPE="KByte"
                                SIZE=`bc <<< "scale=3;$NUMBER / 1000"`
                        fi
                else
                        TYPE="Byte"
                        SIZE=`bc <<< "scale=3;$NUMBER"`
                fi
        fi
        echo $SIZE $TYPE;
        return 1;
}


MYSQLPW=`cat /opt/pdadmin/etc/mysql_rootpw.conf`
MYSQL=/usr/local/pd-admin2/bin/mysql
cd /home
for ACCOUNT in *; do
        WEBSPACE=`du --max-depth=0 -b /home/$ACCOUNT | awk '{print $1}'`
        QUOTA=`$MYSQL -u root -p$MYSQLPW vadmin -N -B -e "select sum(discspace*1000*1000) from users u left join accounts a on u.account = a.id where login like '$ACCOUNT'";`
        if [ $QUOTA != "NULL" ]; then
                echo ""
                echo ----------------
                echo --- $ACCOUNT ---
                echo ----------------
                echo Discspace: `outputformat $WEBSPACE`
                MAILSPACE=0
                POPBOXES=()
                for DIR in /home/$ACCOUNT/www.*; do
                        DOMAIN=`echo $DIR | awk -F www\. '{ print $2 }'`
                        if [ -d "/home/popuser/popboxen/$DOMAIN" ]; then
                                cd /home/popuser/popboxen/$DOMAIN
                                echo ""
                                echo Popboxes : $DOMAIN;
                                for POP in *; do
                                        if [ $POP != "*" ]; then
                                                POPSPACE=`du --max-depth=0 -b $POP | awk '{print $1}'`
                                                MAILSPACE=$(($MAILSPACE + $POPSPACE))
                                                POPBOXES=("${POPBOXES[@]}" "/home/popuser/popboxen/$DOMAIN/$POP")
                                                echo $POP@$ACCOUNT - `outputformat $POPSPACE`
                                        fi
                                done
                                echo ""
                        fi
                done
                echo Mailspace: `outputformat $MAILSPACE`
                echo ""
                echo : TOTAL: `outputformat $(($MAILSPACE + $WEBSPACE))`
                FREE=$(($QUOTA - $MAILSPACE - $WEBSPACE))
                echo : FREE : `outputformat $FREE`
                echo ""
                echo Setup Quota for Mailboxes
                for BOX in ${POPBOXES[@]}; do
                        echo "echo $(($FREE/1000)) > $BOX/.quota"
                        #echo $(($FREE/1000)) > $BOX/.quota
                        echo /usr/local/pd-admin2/bin/maildirmake -q $FREE\S $BOX/Maildir
                        #/usr/local/pd-admin2/bin/maildirmake -q $FREE\S $BOX/Maildir
                        echo ""
                done
        fi
done

So viel spass... :-)

__________________
Kempf Solutions GmbH
Kempf Solutions
31.12.2013 15:30 kempfsolutions ist offline E-Mail an kempfsolutions senden Beiträge von kempfsolutions suchen Nehme kempfsolutions in Deine Freundesliste auf
Eisenherz
Moderator


Dabei seit: 29.04.2009
Beiträge: 1.384

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

Danke :-)

Klappt bei mir jetzt auch ohne Probleme.
01.01.2014 08:17 Eisenherz ist offline E-Mail an Eisenherz senden Beiträge von Eisenherz suchen Nehme Eisenherz in Deine Freundesliste auf
WebTeufel
Mitglied


Dabei seit: 19.01.2012
Beiträge: 423

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

was ganau ändert das script jetzt?
und was passiert da alles wenn quota gesetzt wird?
01.01.2014 15:15 WebTeufel ist offline E-Mail an WebTeufel senden Homepage von WebTeufel Beiträge von WebTeufel suchen Nehme WebTeufel in Deine Freundesliste auf Füge WebTeufel in Deine Kontaktliste ein
kempfsolutions
Mitglied


images/avatars/avatar-27.jpg

Dabei seit: 21.08.2009
Beiträge: 41

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

Folgende dinge werden ausgelesen
1) Webspace jedes einzelnen Kunden
2) Verfügbarer Webspace lt. angelegtem Webpaket
3) Alle Domains des Kunden
4) Anhand der Domains die E-Mail Adressen
5) Der bereits benötigte Speicherplatz jedes Postfachs des Kunden

Danach wird der noch verfügbare Speicherplatz ausgerechnet und die .quota der Postfächer auf den Wert gesetzt.

Jedenfalls wenn du das # in Zeile 70 und 72 entfernst.

Ich denke es reicht wenn man das Script 1x pro Tag in einem Cronjob laufen lässt.

__________________
Kempf Solutions GmbH
Kempf Solutions
02.01.2014 12:17 kempfsolutions ist offline E-Mail an kempfsolutions senden Beiträge von kempfsolutions suchen Nehme kempfsolutions in Deine Freundesliste auf
kempfsolutions
Mitglied


images/avatars/avatar-27.jpg

Dabei seit: 21.08.2009
Beiträge: 41

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

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:
#!/bin/bash
#30.12.2013 - by kempf-solutions.de
outputformat() {
        LENGTH=${#1}
        NUMBER=$1
        if [ $LENGTH -gt 0 ]; then
                if [ $LENGTH -gt 3 ]; then
                        if [ $LENGTH -gt 6 ]; then
                                if [ $LENGTH -gt 9 ]; then
                                        TYPE="GByte"
                                        SIZE=`bc <<< "scale=3;$NUMBER / 1000 / 1000 / 1000"`
                                else
                                        TYPE="MByte"
                                        SIZE=`bc <<< "scale=3;$NUMBER / 1000 / 1000"`
                                fi
                        else
                                TYPE="KByte"
                                SIZE=`bc <<< "scale=3;$NUMBER / 1000"`
                        fi
                else
                        TYPE="Byte"
                        SIZE=`bc <<< "scale=3;$NUMBER"`
                fi
        fi
        echo $SIZE $TYPE;
        return 1;
}

MYSQLPW=`cat /opt/pdadmin/etc/mysql_rootpw.conf`
MYSQL=/usr/local/pd-admin2/bin/mysql
cd /home
for ACCOUNT in *; do
        WEBSPACE=`du --max-depth=0 -b /home/$ACCOUNT | awk '{print $1}'`
        QUOTA=`$MYSQL -u root -p$MYSQLPW vadmin -N -B -e "select sum(discspace*1000*1000) from users u left join accounts a on u.account = a.id where login like '$ACCOUNT'";`
        if [ $QUOTA != "NULL" ]; then
                echo ""
                echo ----------------
                echo --- $ACCOUNT ---
                echo ----------------
                echo Discspace: `outputformat $WEBSPACE`
                MAILSPACE=0
                POPBOXES=()
                for DIR in /home/$ACCOUNT/www.*; do
                        DOMAIN=`echo $DIR | awk -F www\. '{ print $2 }'`
                        if [ -d "/home/popuser/popboxen/$DOMAIN" ]; then
                                cd /home/popuser/popboxen/$DOMAIN
                                echo ""
                                echo Popboxes : $DOMAIN;
                                for POP in *; do
                                        if [ $POP != "*" ]; then
                                                POPSPACE=`du --max-depth=0 -b $POP | awk '{print $1}'`
                                                MAILSPACE=$(($MAILSPACE + $POPSPACE))
                                                POPBOXES=("${POPBOXES[@]}" "/home/popuser/popboxen/$DOMAIN/$POP")
                                                echo $POP@$ACCOUNT - `outputformat $POPSPACE`
                                        fi
                                done
                                echo ""
                        fi
                done
                echo Mailspace: `outputformat $MAILSPACE`
                echo ""
                echo : TOTAL: `outputformat $(($MAILSPACE + $WEBSPACE))`
                FREE=$(($QUOTA - $MAILSPACE - $WEBSPACE))
                echo : FREE : `outputformat $FREE`
                echo ""
                echo Setup Quota for Mailboxes
                for BOX in ${POPBOXES[@]}; do
                        echo "echo $(($FREE/1000)) > $BOX/.quota && chown popuser:popuser $BOX/.quota"
                        echo $(($FREE/1000)) > $BOX/.quota && chown popuser:popuser $BOX/.quota
                        echo "/usr/local/pd-admin2/bin/maildirmake -q $FREE\S $BOX/Maildir && chown popuser:popuser $BOX/Maildir/maildirsize"
                        /usr/local/pd-admin2/bin/maildirmake -q $FREE\S $BOX/Maildir && chown popuser:popuser $BOX/Maildir/maildirsize
                        echo ""
                done
        fi
done

Hier noch einmal ein kleines update. Der Owner der maildirsize und der .quota musste noch angepasst werden. Ich habe das Script jetzt in produktivem Einsatz.

__________________
Kempf Solutions GmbH
Kempf Solutions
07.01.2014 13:01 kempfsolutions ist offline E-Mail an kempfsolutions senden Beiträge von kempfsolutions suchen Nehme kempfsolutions in Deine Freundesliste auf
somnium
Mitglied


Dabei seit: 15.06.2006
Beiträge: 227
Herkunft: Wickede

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

Das Skript schaut, wieviel Platz ein Kunde noch hat und setzt dann den insgesamt noch verfügbaren Platz als Quota? Wenn ich also insgesamt nur noch 1GB freien Platz habe, wird die .quota auf 1GB gesetzt, obwohl ich ein Postfach der Größe 10GB habe? Ist mein Postfach dann nicht zu 900% befüllt und "over quota"?? Oder hab ich das Quota-Prinzip nicht verstanden??

Ich kann im Moment das Skript nicht ausprobieren, da mein Testsystem mit Dovecot vergewaltigt wurde Augenzwinkern

__________________
-----------------------------

Marc Risse IT-Services
http://www.risse-it.services

-----------------------------
07.01.2014 20:41 somnium ist offline E-Mail an somnium senden Homepage von somnium Beiträge von somnium suchen Nehme somnium in Deine Freundesliste auf
kempfsolutions
Mitglied


images/avatars/avatar-27.jpg

Dabei seit: 21.08.2009
Beiträge: 41

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

Richtig... so soll es sein...
Dann soll man das Postfach oder den Webspace aufräumen.

__________________
Kempf Solutions GmbH
Kempf Solutions
08.01.2014 11:12 kempfsolutions ist offline E-Mail an kempfsolutions senden Beiträge von kempfsolutions suchen Nehme kempfsolutions in Deine Freundesliste auf
somnium
Mitglied


Dabei seit: 15.06.2006
Beiträge: 227
Herkunft: Wickede

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

Zitat:
Original von therealmatrix
Richtig... so soll es sein...
Dann soll man das Postfach oder den Webspace aufräumen.


Ich hatte mit einer anderen Antwort gerechnet... nämlich dass ich es falsch verstanden hätte.

Mal mit einfachen Zahlen:
12GB Webspace insgesamt
1GB Verbrauch für Webseiten/Daten
10 GB Postfach mit 9GB Daten (90% belegt)
...dann hab ich noch 2GB frei

Nach deinem Skript wird mein Quota auf 2GB gesetzt, also wird aus 90% plötzlich eine Belegung von 450%?!?!?!

Mein Kunde hat ja bei Bestellung ein Account mit Mailspace XY verlangt. Dann kann ich doch nicht Plötzlich den Mailspace verkleinern und bekomme dann noch Support-Anfragen, weil plötzlich die Mail-Clients eine andere Belegung anzeigen etc...

Ich habs wirklich nicht verstanden :-(

Ich würde den Sinn des Skripts verstehen, wenn man das alte Quota plus den freien Platz setzen würde, um den verfügbaren Webspace besser auszunutzen...

__________________
-----------------------------

Marc Risse IT-Services
http://www.risse-it.services

-----------------------------

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von somnium: 08.01.2014 14:03.

08.01.2014 14:02 somnium ist offline E-Mail an somnium senden Homepage von somnium Beiträge von somnium suchen Nehme somnium in Deine Freundesliste auf
kempfsolutions
Mitglied


images/avatars/avatar-27.jpg

Dabei seit: 21.08.2009
Beiträge: 41

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

Jetzt hab ich's verstanden.
Werde noch einmal eine kleine Anpassung am Script machen.

Natürlich darf die Größe des eigenen Postfachs nicht in die Berechnung der .quota mit einfließen.

12gb Webspace Gesamt
1gb Webseite
10gb Postfach
=> 1gb übrig

neue quota 10gb + 1gb

__________________
Kempf Solutions GmbH
Kempf Solutions
08.01.2014 16:42 kempfsolutions ist offline E-Mail an kempfsolutions senden Beiträge von kempfsolutions suchen Nehme kempfsolutions in Deine Freundesliste auf
kempfsolutions
Mitglied


images/avatars/avatar-27.jpg

Dabei seit: 21.08.2009
Beiträge: 41

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

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:
#!/bin/bash
#30.12.2013 - by kempf-solutions.de
outputformat() {
        LENGTH=${#1}
        NUMBER=$1
        if [ $LENGTH -gt 0 ]; then
                if [ $LENGTH -gt 3 ]; then
                        if [ $LENGTH -gt 6 ]; then
                                if [ $LENGTH -gt 9 ]; then
                                        TYPE="GByte"
                                        SIZE=`bc <<< "scale=3;$NUMBER / 1000 / 1000 / 1000"`
                                else
                                        TYPE="MByte"
                                        SIZE=`bc <<< "scale=3;$NUMBER / 1000 / 1000"`
                                fi
                        else
                                TYPE="KByte"
                                SIZE=`bc <<< "scale=3;$NUMBER / 1000"`
                        fi
                else
                        TYPE="Byte"
                        SIZE=`bc <<< "scale=3;$NUMBER"`
                fi
        fi
        echo $SIZE $TYPE;
        return 1;
}


MYSQLPW=`cat /opt/pdadmin/etc/mysql_rootpw.conf`
MYSQL=/usr/local/pd-admin2/bin/mysql
cd /home
for ACCOUNT in *; do
        WEBSPACE=`du --max-depth=0 -b /home/$ACCOUNT | awk '{print $1}'`
        QUOTA=`$MYSQL -u root -p$MYSQLPW vadmin -N -B -e "select sum(discspace*1000*1000) from users u left join accounts a on u.account = a.id where login like '$ACCOUNT'";`
        if [ $QUOTA != "NULL" ]; then
                echo ""
                echo ----------------
                echo --- $ACCOUNT ---
                echo ----------------
                echo Discspace: `outputformat $WEBSPACE`
                MAILSPACE=0
                POPBOXES=()
                for DIR in /home/$ACCOUNT/www.*; do
                        DOMAIN=`echo $DIR | awk -F www\. '{ print $2 }'`
                        if [ -d "/home/popuser/popboxen/$DOMAIN" ]; then
                                cd /home/popuser/popboxen/$DOMAIN
                                echo ""
                                echo Popboxes : $DOMAIN;
                                for POP in *; do
                                        if [ $POP != "*" ]; then
                                                POPSPACE=`du --max-depth=0 -b $POP | awk '{print $1}' | tr -d '\n'`
                                                MAILSPACE=$(($MAILSPACE + $POPSPACE))
                                                POPSPACES=("${POPSPACES[@]}" "$POPSPACE")
                                                POPBOXES=("${POPBOXES[@]}" "/home/popuser/popboxen/$DOMAIN/$POP")
                                                echo $POP@$ACCOUNT - `outputformat $POPSPACE`
                                        fi
                                done
                                echo ""
                        fi
                done
                echo Mailspace: `outputformat $MAILSPACE`
                echo ""
                echo : TOTAL: `outputformat $(($MAILSPACE + $WEBSPACE))`
                FREE=$(($QUOTA - $MAILSPACE - $WEBSPACE))
                echo : FREE : `outputformat $FREE`
                echo ""
                echo Setup Quota for Mailboxes
                BOXES=${#POPBOXES[@]}
                echo $BOXES
                for (( i=0; i<${BOXES}; i++)); do
                        POPBOX=${POPBOXES[$i]}
                        POPSPACE=${POPSPACES[$i]}
                        echo "echo $((($FREE+$POPSPACE)/1000)) > $POPBOX/.quota && chown popuser:popuser $POPBOX/.quota"
                              echo $((($FREE+$POPSPACE)/1000)) > $POPBOX/.quota && chown popuser:popuser $POPBOX/.quota
                        echo "/usr/local/pd-admin2/bin/maildirmake -q $(($FREE+$POPSPACE))S $POPBOX/Maildir && chown popuser:popuser $POPBOX/Maildir/maildirsize"
                              /usr/local/pd-admin2/bin/maildirmake -q $(($FREE+$POPSPACE))S $POPBOX/Maildir && chown popuser:popuser $POPBOX/Maildir/maildirsize
                        echo ""
                done
        fi
done


__________________
Kempf Solutions GmbH
Kempf Solutions

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von kempfsolutions: 10.01.2014 09:30.

08.01.2014 18:23 kempfsolutions ist offline E-Mail an kempfsolutions senden Beiträge von kempfsolutions suchen Nehme kempfsolutions in Deine Freundesliste auf
Seiten (3): « vorherige 1 [2] 3 nächste » Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
pdadmin-forum » PD-Admin » Anwendung » Maildir .quota

Impressum | Team | Hilfe

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