#include "policyd.h"
/*
*
*
* Policy Daemon
*
* policy daemon is used in conjuction with postfix to combat spam.
*
* Copyright (C) 2004 Cami Sardinha (cami@mweb.co.za)
*
*
* 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.,
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*
*
*/
int
main(int argc, char **argv)
{
int c;
if(argc < 2)
usage(argv[0]);
while ((c = getopt(argc,argv,":c:")) != EOF)
{
switch(c)
{
case 'c':
configpath=optarg;
read_conf(1);
break;
default:
usage(argv[0]);
}
}
logmessage("clean up process starting: %s %s\n", PROJECT, VERSION);
/* connect to mysql */
#if defined(MYSQL_VERSION_ID) && MYSQL_VERSION_ID >= 40000
mysql_server_init(0, NULL, NULL);
#endif
mysql = db_connect(MYSQLDBASE);
/* store current time */
timenow=gettime();
mysql_timeout=600;
/* clean up greylisting */
if(GREYLISTING==1)
{
/* expunge validated triplets */
logmessage("expiring validated records older than %d days (%d)\n",
(TRIPLET_AUTH_TIMEOUT / 86400), timenow - TRIPLET_AUTH_TIMEOUT);
/* build up & execute query */
snprintf(mysqlquery_array[0], 512,
"DELETE QUICK FROM triplet WHERE _datelast < %d LIMIT 100000",
timenow - TRIPLET_AUTH_TIMEOUT);
if(db_deletequery(0) == -1) exit(-1);
/* expunge unvalidated triplets */
logmessage("expiring unvalidated records older than %d days (%d)\n",
(TRIPLET_UNAUTH_TIMEOUT / 86400), timenow - TRIPLET_UNAUTH_TIMEOUT);
/* build up & execute query */
snprintf(mysqlquery_array[0], 512,
"DELETE QUICK FROM triplet WHERE _datenew < %d AND _count = 0 LIMIT 100000",
timenow - TRIPLET_UNAUTH_TIMEOUT);
if(db_deletequery(0) == -1) exit(-1);
}
/* clean up autoblacklisted hosts */
if(BLACKLISTING == 1)
{
/* expunge blacklist entries that have expired */
logmessage("expiring blacklisted records (%d)\n", timenow);
/* build up & execute query */
snprintf(mysqlquery_array[0], 512,
"DELETE QUICK FROM blacklist WHERE _expire <= %d \
AND _expire != 0 LIMIT 100000",
timenow);
if(db_deletequery(0) == -1) exit(-1);
}
/* clean up auto whitelisted hosts */
if(AUTO_WHITE_LISTING == 1)
{
/* expunge whitelist entries that have expired */
logmessage("expiring autowhitelisted records older than %d days (%d)\n",
(AUTO_WHITELIST_EXPIRE / 86400), timenow);
/* build up & execute query */
snprintf(mysqlquery_array[0], 512,
"DELETE QUICK FROM whitelist WHERE _expire <= %d AND \
_expire != 0 LIMIT 100000",
timenow);
if(db_deletequery(0) == -1) exit(-1);
}
/* clean up helo information */
if(HELO_CHECK == 1)
{
/* expunge helo entries that have expired */
logmessage("expiring helo records older than %d days (%d)\n",
(HELO_AUTO_EXPIRE / 86400), timenow);
/* build up & execute query */
snprintf(mysqlquery_array[0], 512,
"DELETE QUICK FROM helo WHERE _expire <= %d AND _expire != 0 LIMIT 100000",
timenow);
if(db_deletequery(0) == -1) exit(-1);
}
/* clean up expired throttlesender information */
if((SENDERTHROTTLE == 1) && (SENDER_INACTIVE_EXPIRE))
{
logmessage("expiring throttlesender records older than %d days (%d)\n",
(SENDER_INACTIVE_EXPIRE / 86400), timenow - SENDER_INACTIVE_EXPIRE);
/* build up & execute query */
snprintf(mysqlquery_array[0], 512,
"DELETE QUICK FROM throttle WHERE _date < %d",
timenow - SENDER_INACTIVE_EXPIRE);
if(db_deletequery(0) == -1) exit(-1);
logmessage("expiring throttlesender instances older than 1 hour (%d)\n",
timenow - 3600);
/* build up & execute query */
snprintf(mysqlquery_array[0], 512,
"DELETE QUICK FROM throttle_from_instance WHERE _expire < %d",
timenow - 3600);
if(db_deletequery(0) == -1) exit(-1);
}
/* clean up expired throttlerecipients information */
if((RECIPIENTTHROTTLE == 1) && (RECIPIENT_INACTIVE_EXPIRE))
{
logmessage("expiring throttlerecipient records older than %d days (%d)\n",
(RECIPIENT_INACTIVE_EXPIRE / 86400), timenow - RECIPIENT_INACTIVE_EXPIRE);
/* build up & execute query */
snprintf(mysqlquery_array[0], 512,
"DELETE QUICK FROM throttle_rcpt WHERE _date < %d",
timenow - RECIPIENT_INACTIVE_EXPIRE);
if(db_deletequery(0) == -1) exit(-1);
}
/* clean up expired optin / optout policies */
if(TRAINING_POLICY_TIMEOUT != 0)
{
/* clean up expired training policies */
logmessage("expiring training policies records older than %d days (%d)\n",
(TRAINING_POLICY_TIMEOUT / 86400), timenow - TRAINING_POLICY_TIMEOUT);
/* build up & execute query */
snprintf(mysqlquery_array[0], 512,
"DELETE QUICK FROM policy_training WHERE _expire < %d and _expire != 0",
timenow - TRAINING_POLICY_TIMEOUT);
if(db_deletequery(0) == -1) exit(-1);
}
mysql_close(mysql);
return (0);
}
/* EOF */
syntax highlighted by Code2HTML, v. 0.9.1