# Greylisting 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. /* Greylisting */ /* NULL means to inherit */ CREATE TABLE @PREFIX@greylisting ( ID @SERIAL_TYPE@, PolicyID @SERIAL_REF_TYPE@, Name VARCHAR(255) NOT NULL, /* General greylisting settings */ UseGreylisting SMALLINT, /* Actually use greylisting */ GreylistPeriod @BIG_INTEGER_UNSIGNED@, /* Period in seconds to greylist for */ /* Record tracking */ Track VARCHAR(255) NOT NULL, /* Format: : SenderIP - This takes a bitmask to mask the IP with, A good default is /24 */ /* Bypass greylisting: sender+recipient level */ GreylistAuthValidity @BIG_INTEGER_UNSIGNED@, /* Period for which last authenticated greylist entry is valid for. This effectively bypasses greylisting for the second email a sender sends a recipient. */ GreylistUnAuthValidity @BIG_INTEGER_UNSIGNED@, /* Same as above but for unauthenticated entries */ /* Auto-whitelisting: sending server level */ UseAutoWhitelist SMALLINT, /* Use auto-whitelisting */ AutoWhitelistPeriod @BIG_INTEGER_UNSIGNED@, /* Period to look back to find authenticated triplets */ AutoWhitelistCount @BIG_INTEGER_UNSIGNED@, /* Count of authenticated triplets after which we auto-whitelist */ AutoWhitelistPercentage @BIG_INTEGER_UNSIGNED@, /* Percentage of at least Count triplets that must be authenticated before auto-whitelisting. This changes the behaviour or Count */ /* Auto-blacklisting: sending server level */ UseAutoBlacklist SMALLINT, /* Use auto-blacklisting */ AutoBlacklistPeriod @BIG_INTEGER_UNSIGNED@, /* Period to look back to find unauthenticated triplets */ AutoBlacklistCount @BIG_INTEGER_UNSIGNED@, /* Count of authenticated triplets after which we auto-whitelist */ AutoBlacklistPercentage @BIG_INTEGER_UNSIGNED@, /* Percentage of at least Count triplets that must be authenticated before auto-whitelisting. This changes the behaviour or Count */ Comment VARCHAR(1024), Disabled SMALLINT NOT NULL DEFAULT '0', FOREIGN KEY (PolicyID) REFERENCES @PREFIX@policies(ID) ) @CREATE_TABLE_SUFFIX@; /* Whitelisted */ CREATE TABLE @PREFIX@greylisting_whitelist ( ID @SERIAL_TYPE@, Source VARCHAR(255) NOT NULL, /* Either CIDR a.b.c.d, a.b.c.d/x, or reversed host*-*.whatever.com */ Comment VARCHAR(1024), Disabled SMALLINT NOT NULL DEFAULT '0', UNIQUE (Source) ) @CREATE_TABLE_SUFFIX@; /* Auto-whitelistings */ CREATE TABLE @PREFIX@greylisting_autowhitelist ( ID @SERIAL_TYPE@, TrackKey VARCHAR(@TRACK_KEY_LEN@) NOT NULL, Added @BIG_INTEGER_UNSIGNED@ NOT NULL, LastSeen @BIG_INTEGER_UNSIGNED@ NOT NULL, Comment VARCHAR(1024), UNIQUE (TrackKey) ) @CREATE_TABLE_SUFFIX@; /* Auto-blacklistings */ CREATE TABLE @PREFIX@greylisting_autoblacklist ( ID @SERIAL_TYPE@, TrackKey VARCHAR(@TRACK_KEY_LEN@) NOT NULL, Added @BIG_INTEGER_UNSIGNED@ NOT NULL, Comment VARCHAR(1024), UNIQUE (TrackKey) ) @CREATE_TABLE_SUFFIX@; /* Greylist triplet tracking table */ CREATE TABLE @PREFIX@greylisting_tracking ( TrackKey VARCHAR(@TRACK_KEY_LEN@) NOT NULL, /* The address really, masked with whatever */ Sender VARCHAR(255) NOT NULL, Recipient VARCHAR(255) NOT NULL, FirstSeen @BIG_INTEGER_UNSIGNED@ NOT NULL, LastUpdate @BIG_INTEGER_UNSIGNED@ NOT NULL, Tries @BIG_INTEGER_UNSIGNED@ NOT NULL, /* Authentication tries */ Count @BIG_INTEGER_UNSIGNED@ NOT NULL, /* Authenticated count */ UNIQUE(TrackKey,Sender,Recipient) ) @CREATE_TABLE_SUFFIX@; CREATE INDEX @PREFIX@greylisting_tracking_idx1 ON @PREFIX@greylisting_tracking (LastUpdate,Count);