Plesk Grey List

Posted by alex almazan Tue, 18 Dec 2007 00:09:00 GMT

Greylisting is an alternative to the psa-spamassassin method for dealing with spam/UCE. These instructions work with Plesk 7.54 and 8.x, however there is no guarantee that this setup will keep active post updates to Plesk.

Obtain the sources
wget http://carbonblock.net/files/qmail-...greylist.tar.gz
The source contains patches by SW Soft, please do not distribute.
tar xvfz qmail-1.03-psa-greylist.tar.gz
cd qmail-1.03

Edit local_scan.c and change values as appropriate.

#define MYSQLHOST "localhost" 
#define MYSQLUSER "greylist" 
#define MYSQLPASS "rdePmee7" 
#define MYSQLDB "qmail" 
#define BLOCK_EXPIRE 2 /* minutes until email is accepted */
#define RECORD_EXPIRE 1480 /* minutes until record expires */
#define RECORD_EXPIRE_GOOD 36 /* days until record expires after accepting email */
Setup MySQL
mysql -u admin -p`cat /etc/psa/.psa.shadow`

mysql>CREATE DATABASE qmail;
mysql>GRANT ALL ON qmail.* TO 'greylist'@'localhost' IDENTIFIED BY 'rdePmee7';
mysql>FLUSH PRIVILEGES;
Table structure for table `relaytofrom`
CREATE TABLE relaytofrom (
id bigint(20) NOT NULL auto_increment,
relay_ip varchar(16) default NULL,
mail_from varchar(255) default NULL,
rcpt_to varchar(255) default NULL,
block_expires datetime NOT NULL default '0000-00-00 00:00:00',
record_expires datetime NOT NULL default '0000-00-00 00:00:00',
blocked_count bigint(20) NOT NULL default '0',
passed_count bigint(20) NOT NULL default '0',
aborted_count bigint(20) NOT NULL default '0',
origin_type enum('MANUAL','AUTO') NOT NULL default 'MANUAL',
create_time datetime NOT NULL default '0000-00-00 00:00:00',
last_update timestamp(14) NOT NULL,
PRIMARY KEY (id),
KEY relay_ip (relay_ip),
KEY mail_from (mail_from(20)),
KEY rcpt_to (rcpt_to(20))
) TYPE=MyISAM;
Edit conf-ld and change it to:
cc -s -lssl
Next
make
/etc/init.d/qmail stop
/etc/init.d/xinetd stop
mkdir /home/user/ticket-#/BACKUP
cp /var/qmail/bin/qmail-smtpd /home/user/ticket-#/BACKUP
(this backups the base qmail binary, only do this on first install)
cp qmail-envelope-scanner /var/qmail/bin/.
cp -f qmail-smtpd /var/qmail/bin/.
chown root.qmail /var/qmail/bin/qmail-envelope-scanner
chown root.qmail /var/qmail/bin/qmail-smtpd
Next
/etc/init.d/qmail start
/etc/init.d/xinetd start

Create a quick perl script to clean up the database and place in /etc/cron.daily named greylist.clean:

#!/usr/bin/perl
use strict;
use warnings;

use constant DBD => 'DBI:mysql:qmail:localhost:3306';
use constant DBUSER => 'greylist';
use constant DBPASS => 'rdePmee7';

use DBI;

system ("cat /dev/null > /tmp/greylist_dbg.txt");

my $dbh = DBI->connect(DBD,DBUSER,DBPASS) or die "can't connect to db ", $DBI::errstr, ":$!";

$dbh->do("DELETE FROM relaytofrom WHERE record_expires < NOW() - INTERVAL 1 HOUR AND origin_type = 'AUTO'");
$dbh->do("OPTIMIZE TABLE relaytofrom");

$dbh->disconnect;

exit;

Rebuild Qmail Queue

Posted by alex almazan Mon, 17 Dec 2007 23:44:00 GMT

Two methods for rebuilding the qmail queue.

First stop Qmail
# /etc/init.d/qmail stop
or
service qmail stop
# cd /var/qmail/queue
# rm -rf info intd local mess remote todo
Create the necessary directories
# mkdir mess
# for i in `seq 0 22`; do
# mkdir mess/$i
# done
# cp -r mess info
# cp -r mess intd
# cp -r mess local
# cp -r mess remote
# cp -r mess todo
assign nexessary attributes
# chmod -R 750 mess todo
# chown -R qmailq:qmail mess todo
# chmod -R 700 info intd local remote
# chown -R qmailq:qmail intd
# chown -R qmails:qmail info local remote
Finally start Qmail
# /etc/init.d/qmail start
or
service qmail start

Here is the alternate method

http://kb.swsoft.com/en/252