PDA

Bekijk Volledige Versie : 2 kleine vragen (plesk 8)



davinci
28/05/06, 12:22
Misschien kijk ik er overheen, maar ik zit met het volgende:

* Domain-aliasses, gaan deze van je aantal domeinlicenties af. Als ik een Plesk100 licentie heb, en hier in 70 domeinen en 30 aliasses, heb ik dan nog 30 domeinlicenties over?

* Is er een mogelijkheid (evt. via scripting?) om mailbox-users een mailtje te sturen als hun mailbox 90% vol zit?

JROnline
28/05/06, 16:56
* Domain-aliasses, gaan deze van je aantal domeinlicenties af. Als ik een Plesk100 licentie heb, en hier in 70 domeinen en 30 aliasses, heb ik dan nog 30 domeinlicenties over?

Nee, aliasses tellen niet mee in je domeinaantal.


* Is er een mogelijkheid (evt. via scripting?) om mailbox-users een mailtje te sturen als hun mailbox 90% vol zit?

Die mogelijkheid zit niet standaard ingebouwd. Ik denk wel dat je de Plesk-API kunt gebruiken om zelf iets in elkaar te scripten.

davinci
11/07/06, 00:51
even snel iets in elkaar geflanst wat elke nacht als cron draait en bij >90% gebruik van mailbox een mailtje stuurt. Gezien het feit dat één klant hier speciaal om vroeg (veel webmail gebruikers) heb ik het script alleen maar voor zijn dom_id (9999) gemaakt:
Heb een mysql user aangemaakt met alleen SELECT permissies op dbase 'psa', table 'mail', rows 'mail_name', 'mbox_quota' en 'dom_id'.



<?
// Mailbox checkscript
// (c) 2006

$link = mysql_connect("localhost", "login", "pass");
mysql_select_db("psa", $link);
function du($dir)
{
$du = popen("/usr/bin/du -bs $dir", "r");
$res = fgets($du, 256);
pclose($du);
$res = explode(" ", $res);

return $res[0];
}
$sql = "SELECT mail_name, mbox_quota FROM mail WHERE dom_id = 9999";
$result = mysql_query($sql);
if (mysql_num_rows($result) > 0)
{
while ($row = mysql_fetch_assoc($result))
{
$mailsdir="/path/".$row['mail_name'];
$maildirsize=du($mailsdir);
$percentage=$maildirsize/$row["mbox_quota"];
if ($percentage>0.9)
{
$afrondperc=($percentage*100);
$afrondperc=round($afrondperc,2);
$tekst="Beste mail-gebruiker,\r\n\r\nOp dit moment is ".$afrondperc."% van je mailbox in gebruik.";
$tekst.="\r\nOm te voorkomen dat je binnenkort geen mail meer kunt ontvangen, verzoeken we je overbodige mail te verwijderen of haal deze binnen via bijvoorbeeld Outlook (Express)";
$tekst.="\r\n\r\nDit is een automatisch verzonden bericht.";
$mailto =$row['mail_name']."@domein.nl";
$mailSubject = "LET OP! Mailbox: \"".$row['mail_name']."\" zit bijna vol!";
$mailHeaders = "From: Mailserver <info@domein.nl>";
mail($mailto, $mailSubject, $tekst, $mailHeaders, "-finfo@domein.nl");
}
}
}
?>


Uiteraard is deze met een kleine aanpassing ook zo gemaakt voor heel je server. (overigens gaat het script er van uit dat je voor elke mailbox een limiet hebt aangegeven, indien 'unlimited' dan zal de check niet goed verlopen, dan staat in de dbase namelijk '-1')

henkowz
11/07/06, 11:40
Die kun je er ook uit filteren met bijv een subselect?

davinci
11/07/06, 12:54
$sql = "SELECT mail_name, mbox_quota FROM mail WHERE dom_id = 9999 && mbox_quota > 0";

davinci
09/08/06, 21:15
Heb het scriptje iets verder verbouwd, zodat het nu ook voor alle domeinen op mijn server werkt. Voor de liefhebbers, bij deze:



<?
//
//
// Mailbox checkscript
//
// Script gebruikt /usr/bin/du (locatie du) en /home/qmail/mailnames (locatie mailboxen)
//
//

//connecten naar MySQL
$link = mysql_connect("localhost", "login", "pass");
mysql_select_db("psa", $link);

//DU functie
function du($dir)
{
$du = popen("/usr/bin/du -bs $dir", "r");
$res = fgets($du, 256);
pclose($du);
$res = explode(" ", $res);

return $res[0];
}

// SQL
$sql="SELECT domains.name, mail.mail_name, mail.mbox_quota FROM mail JOIN domains ON mail.dom_id = domains.id WHERE mail.mbox_quota >0";

$result = mysql_query($sql);
if (mysql_num_rows($result) > 0)
{
while ($row = mysql_fetch_assoc($result))
{

//DU en berekenen van maildirs
$mailsdir="/home/qmail/mailnames/".$row['name']."/".$row['mail_name'];
$maildirsize=du($mailsdir);
$percentage=$maildirsize/$row['mbox_quota'];
if ($percentage>0.9) {
$afrondperc=($percentage*100);
$afrondperc=round($afrondperc,2);
// toegevoegd ivm afrondingen door DU (kan nog wel eens net boven de 100 uitkomen)
if ($afrondperc>100) { $afrondperc="99.98"; }
// mail tekst
$tekst="Beste mail-gebruiker,\r\n\r\nOp dit moment is ".$afrondperc."% van je mailbox in gebruik. Dit betekent dat je mailbox bijna vol zit.";
$tekst.="\r\nOm te voorkomen dat je binnenkort geen mail meer kunt ontvangen, verzoeken we je overbodige mail te verwijderen of haal deze binnen via bijvoorbeeld Outlook (Express)";
$tekst.="\r\n\r\nDit is een automatisch verzonden bericht.";
$mailto =$row['mail_name']."@".$row['name']; //mailgebruiker
$mailto2="admin@domein.nl"; //admin
$mailSubject = "LET OP! Mailbox: \"".$row['mail_name']."@".$row['name']."\" zit bijna vol!";
$mailHeaders = "From: Mailserver <mailserver@domein.nl>";
mail($mailto, $mailSubject, $tekst, $mailHeaders, "-fmailserver@domein.nl");
mail($mailto2, $mailSubject, $tekst, $mailHeaders, "-fmailserver@domein.nl");
}
}
}
?>

Uiteraard blijft hij mailen dat de mailbox 'bijna' vol zit, ondanks dat deze al aan zijn max. kan zitten.