Die Installation ist abgesehen von den Paketen eigentlich analog zu
Plesk & Qmail: Spamprotection mit Greylisting - huschi.net
Notwendige Pakete installieren:
apt-get install libmysqlclient12-dev libssl-dev gcc
Datenbank erstellen
# Datenbank 'qmail':
CREATE DATABASE qmail;
# User 'greylist' (ändert evtl. das Passwort):
GRANT ALL ON qmail.* TO 'greylist'@'localhost' IDENTIFIED BY 'passwort';
FLUSH PRIVILEGES;
# Tabelle 'relaytofrom':
USE qmail;
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;
cd /usr/local/src/
wget http://www.huschi.net/download/qmail-103-greylist-psa8.tar.gz
#auspacken
tar xfz qmail-1*
cd qmail-1.03
#bei Plesk 8 fehlt leider eine Datei:
echo "-lssl -lcrypto" >ssl.lib
vi local_scan.c
Datenbankeinstellungen anpassen:
#define MYSQLHOST "localhost"
#define MYSQLUSER "greylist"
#define MYSQLPASS "passwort"
#define MYSQLDB "qmail"
#define BLOCK_EXPIRE 4 /* minutes until email is accepted */
#define RECORD_EXPIRE 1500 /* minutes until record expires */
#define RECORD_EXPIRE_GOOD 36 /* days until record expires after accepting email */
Ersetzte alle Vorkommen von "/usr/lib/mysql/libmysqlclient.a" durch "/usr/lib/libmysqlclient.a"
Folgende Zeile auskommentieren (mit // oder in /* ... */)
const char *strerror(int);
Installieren
make
# Email-Empfang stoppen:
/etc/init.d/inetd stop
#(Qmail selbst muß nicht beendet werden.)
# installieren:
cp -p /var/qmail/bin/qmail-smtpd /var/qmail/bin/qmail-smtpd.old
cp qmail-envelope-scanner /var/qmail/bin/.
chown root.qmail /var/qmail/bin/qmail-envelope-scanner
cp -pf qmail-smtpd /var/qmail/bin/.
chown root.qmail /var/qmail/bin/qmail-smtpd
# qmail wieder starten:
/etc/init.d/inetd start
Aufräum Skrip
vi /etc/cron.daily/qmail-greylist-cleanup.pl
Folgendes einfügen (und anpassen):
#!/usr/bin/perl -w
use strict;
use constant DBD => 'DBI:mysql:qmail:localhost:3306';
use constant DBUSER => 'greylist';
use constant DBPASS => 'passwort';
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;
Ausführbar machen
chmod +x /etc/cron.daily/qmail-greylist-cleanup.pl