# Quotas module schema
# Copyright (C) 2009-2011, AllWorldIT
# Copyright (C) 2008, LinuxRulz
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
/* Main quotas table, this defines the period the quota is over and how to track it */
CREATE TABLE @PREFIX@quotas (
ID @SERIAL_TYPE@,
PolicyID @SERIAL_REF_TYPE@,
Name VARCHAR(255) NOT NULL,
/* Tracking Options */
Track VARCHAR(255) NOT NULL, /* Format: <type>:<spec>
SenderIP - This takes a bitmask to mask the IP with. A good default is /24
Sender & Recipient - Either "user@domain" (default), "user@" or "@domain" for the entire
email addy or email addy domain respectively.
*/
/* Period over which this policy is valid, this is in seconds */
Period @BIG_INTEGER_UNSIGNED@,
Verdict VARCHAR(255),
Data TEXT,
LastQuota SMALLINT NOT NULL DEFAULT '0',
Comment VARCHAR(1024),
Disabled SMALLINT NOT NULL DEFAULT '0',
FOREIGN KEY (PolicyID) REFERENCES @PREFIX@policies(ID)
) @CREATE_TABLE_SUFFIX@;
INSERT INTO @PREFIX@quotas (PolicyID,Name,Track,Period,Verdict) VALUES (5,'Recipient quotas','Recipient:user@domain',3600,'REJECT');
INSERT INTO @PREFIX@quotas (PolicyID,Name,Track,Period,Verdict) VALUES (5,'Quota on all /24s','SenderIP:/24',3600,'REJECT');
/* Limits for the quota */
CREATE TABLE @PREFIX@quotas_limits (
ID @SERIAL_TYPE@,
QuotasID @SERIAL_REF_TYPE@,
Type VARCHAR(255), /* "MessageCount" or "MessageCumulativeSize" */
CounterLimit @BIG_INTEGER_UNSIGNED@,
Comment VARCHAR(1024),
Disabled SMALLINT NOT NULL DEFAULT '0',
FOREIGN KEY (QuotasID) REFERENCES @PREFIX@quotas(ID)
) @CREATE_TABLE_SUFFIX@;
INSERT INTO @PREFIX@quotas_limits (QuotasID,Type,CounterLimit) VALUES (1,'MessageCount',10);
INSERT INTO @PREFIX@quotas_limits (QuotasID,Type,CounterLimit) VALUES (1,'MessageCumulativeSize',8000);
INSERT INTO @PREFIX@quotas_limits (QuotasID,Type,CounterLimit) VALUES (2,'MessageCount',12);
/* This table is used for tracking the quotas */
CREATE TABLE @PREFIX@quotas_tracking (
QuotasLimitsID @SERIAL_REF_TYPE@,
TrackKey VARCHAR(@TRACK_KEY_LEN@),
/* Last time this record was update */
LastUpdate @BIG_INTEGER_UNSIGNED@, /* NULL means not updated yet */
Counter NUMERIC(10,4),
UNIQUE (QuotasLimitsID,TrackKey),
FOREIGN KEY (QuotasLimitsID) REFERENCES @PREFIX@quotas_limits(ID)
) @CREATE_TABLE_SUFFIX@;
CREATE INDEX @PREFIX@quotas_tracking_idx1 ON @PREFIX@quotas_tracking (LastUpdate);
|