Re: Getting greylisting going on a new Debian
thing <[email protected]> Fri, 27 Jun 2008 09:59:38 +1200
| Newsgroups | gmane.mail.spam.greylist.user |
|---|---|
| Message-ID | <[email protected]> |
Hi, Thanks but I am in the process of ripping it out and will look for something else. regards Steven Paul Venezia wrote: > You can always use my PHP front-end: > > http://www.pvenezia.com/rd-tools.tgz > > -Paul > > > On Jun 26, 2008, at 5:41 PM, Steven Jones wrote: > >> Hi, >> >> I have dropped the database and re-done it, used the xlist.pl >> all to no avail. >> >> regards >> >> Steven >> >> -----Original Message----- >> From: [email protected] on behalf of Dennis >> Wynne >> Sent: Fri 27/06/2008 04:44 >> To: Greylisting Users and Developers Discuss >> Subject: Re: [Greylist-users] Getting greylisting going on a new Debian >> >> It used to be part of the CVS on the puremagic web page, but the link >> is now >> broken. I THINK this copy is unchanged, just fix the user name and >> password >> to access the database and it should be good to go. >> >> >> >> >> #!/usr/bin/perl >> >> ############################################################################ >> >> # >> # >> # File: xlist.pl >> # >> # Version: 0.01 >> # >> # Programmer: Evan J. Harris <[email protected]> >> # >> # Description: >> # Will create manual white or blacklist entries in the greylist >> database, >> # with some basic checking to ensure this isn't a duplicate, and to >> # expire existing rows that would match. >> # >> # References: >> # For Greylisting info, see http://projects.puremagic.com/greylisting/ >> # >> # Notes: >> # This is a quick and dirty implementation, and no doubt can be made >> # much nicer, but it works pretty good as-is. >> # >> # Bugs: >> # None known. >> # >> # >> # *** Copyright 2003 by Evan J. Harris --- All Rights Reserved *** >> # *** No warranties expressed or implied, use at your own risk *** >> # >> ############################################################################ >> >> # >> >> use Errno qw(ENOENT); >> use DBI; >> >> use strict; >> >> ############################################### >> # Our global settings file >> ############################################### >> my $config_file = "/etc/mail/relaydelay.conf"; >> >> >> ################################################################# >> # Our global settings that may be overridden from the config file >> ################################################################# >> >> # If you do/don't want to see debugging messages printed to stdout, >> # then set this appropriately. >> my $verbose = 1; >> >> # Database connection params >> my $database_type = 'mysql'; >> my $database_name = 'relaydelay'; >> my $database_host = 'localhost'; >> my $database_port = 3306; >> my $database_user = 'user_name_here'; >> my $database_pass = 'password_here'; >> >> >> ############################################################# >> # End of options for use in external config file >> ############################################################# >> >> # Set this to nonzero if you wish to optimize the active table >> # after deleting the rows moved to the reporting table. >> my $optimize_active_table = 1; >> >> # Global vars that should probably not be in the external config file >> my $global_dbh; >> my $config_loaded; >> >> >> ####################################################################### >> # Database functions >> ####################################################################### >> >> sub db_connect($) { >> my $verbose = shift; >> >> return $global_dbh if (defined $global_dbh); >> >> my $dsn = >> "DBI:$database_type:database=$database_name:host=$database_host:port=$databa >> >> se_port"; >> print "DBI Connecting to $dsn\n" if $verbose; >> >> # Note: We do all manual error checking for db errors >> my $dbh = DBI->connect($dsn, $database_user, $database_pass, >> { PrintError => 0, RaiseError => 1 }); >> >> $global_dbh = $dbh; >> return $global_dbh; >> } >> >> sub db_disconnect { >> $global_dbh->disconnect() if (defined $global_dbh); >> $global_dbh = undef; >> return 0; >> } >> >> >> sub load_config() { >> >> # make sure the config is only loaded once per instance >> return if ($config_loaded); >> >> print "Loading Config File: $config_file\n" if ($verbose); >> >> # Read and setup our configuration parameters from the config file >> my($msg); >> my($errn) = stat($config_file) ? 0 : 0+$!; >> if ($errn == ENOENT) { $msg = "does not exist" } >> elsif ($errn) { $msg = "inaccessible: $!" } >> elsif (! -f _) { $msg = "not a regular file" } >> elsif (! -r _) { $msg = "not readable" } >> if (defined $msg) { die "Config file $config_file $msg" } >> >> open INFILE, "<$config_file"; >> while (<INFILE>) { >> my $tstr = $_; >> if ($tstr =~ /\A\s*(\$database_\w+)\s*=/) { >> eval $tstr; >> if ($@ ne '') { die "Error in config file $config_file: $@" } >> } >> } >> >> $config_loaded = 1; >> } >> >> sub usage { >> my $error = shift; >> if (defined $error) { >> print "$error\n\n"; >> } >> print "Usage:\n" >> . " $0 <black|white> <ip|from|to> <fromaddr|ip|network>\n\n" >> . "Note: networks must be specified in incomplete form, i.e. 10.2 = >> 10.2.0.0/16\n" >> . " NEVER whitelist on the 'from' address, since it is easily >> forged.\n\n" >> . "Examples:\n\n" >> . "$0 white ip 10\n" >> . " -- Whitelist all mail from systems on the private 10.x.x.x >> network\n" >> . "$0 white to sales\@somedomain.com\n" >> . " -- Whitelist mail sent to the sales address to avoid possible >> delays\n" >> . "$0 black from aspamdomain.com\n" >> . " -- Blacklist all mail with a from address at >> aspamdomain.com\n"; >> exit; >> } >> >> >> BEGIN: >> { >> my $never = "'0000-00-00 00:00:00'"; >> my $always = "'9999-12-31 23:59:59'"; >> >> >> # load config file before we start >> load_config(); >> >> # parse command line params >> my $direction = lc(shift); >> usage("Error: First parameter must be either black or white.") if >> ($direction !~ /\A(black|white)\Z/); >> my $rectype = lc(shift); >> usage("Error: Second parameter must be a valid field type.") if >> ($rectype >> !~ /\A(ip|from|to|relay_ip|mail_from|rcpt_to)\Z/); >> $rectype = "relay_ip" if ($rectype eq "ip"); >> $rectype = "mail_from" if ($rectype eq "from"); >> $rectype = "rcpt_to" if ($rectype eq "to"); >> my $fieldval = lc(shift); >> >> if (length($fieldval) < 2) { >> print "Error! Field parameter too short!\n"; >> exit; >> } >> >> if ($rectype eq "mail_from" and $direction eq "white") { >> print "Whitelisting of from addresses is not allowed!\n"; >> exit; >> } >> if ($rectype eq "relay_ip" and $fieldval !~ >> /\A(\d+)(|\.(\d+)(|\.(\d+)(|\.(\d+))))\Z/) { >> if ($1 < 1 or $1 > 255 or $2 > 255 or $3 > 255 or $4 > 255) { >> print "IP is invalid format!\n"; >> exit; >> } >> } >> my $block_expires = ($direction eq "white" ? $never : $always); >> >> # connect to the database >> my $dbh = db_connect(0); >> die "$DBI::errstr\n" unless($dbh); >> >> # Make sure there isn't a similar manual entry already. >> my $rows = $dbh->selectrow_array("SELECT id FROM relaytofrom WHERE >> record_expires > NOW() AND $rectype = ? " >> . " AND origin_type = 'MANUAL' ", undef, $fieldval); >> if ($rows > 0) { >> print "Similar Record already exists! Aborting.\n"; >> exit; >> } >> >> # Insert the wildcard row (blacklist or whitelist) >> my $rows = $dbh->do("INSERT INTO relaytofrom (create_time, >> record_expires, >> block_expires, $rectype) " >> . " VALUES (NOW(), $always, $block_expires, " . >> $dbh->quote($fieldval) >> . ")") or die; >> >> # Make sure it inserted ok >> if ($rows != 1) { >> print "Error inserting record.\n"; >> die; >> } >> else { >> my $rowid = $dbh->selectrow_array("SELECT LAST_INSERT_ID()"); >> print "Inserted row $rowid\n"; >> >> # expire any old records that match >> # - find records that may be similar (do real similarity testing >> later, >> this is wide pass) >> my $sth = $dbh->prepare("SELECT id, $rectype FROM relaytofrom WHERE >> record_expires > NOW() " >> . " AND $rectype LIKE " . $dbh->quote('%' . $fieldval . '%')); >> $sth->execute(); >> my $rows = 0; >> while (my @cols = $sth->fetchrow_array()) { >> next if ($cols[0] == $rowid); # Don't expire the row we just >> inserted >> $cols[1] = lc($cols[1]); # Make sure the comparisons are >> lowercase >> my $doexpire = 0; >> >> if ($rectype eq "relay_ip" and substr($cols[1], 0, >> length($fieldval)) >> eq $fieldval) { >> $doexpire = 1; >> } >> else { >> # expire if is an exact match, with or without surrounding angle >> brackets >> $doexpire = 1 if ($fieldval =~ /\A.+@.+\Z/ and ($cols[1] eq >> "<$fieldval>" or $cols[1] eq "$fieldval")); >> # expire if is a username@ match >> $doexpire = 1 if ($fieldval =~ /@\Z/ and substr($cols[1], 0, >> length($fieldval) + 1) eq "<$fieldval"); >> # expire if is a partial domain match >> $doexpire = 1 if ($fieldval !~ /@/ and >> ( substr($cols[1], - (length($fieldval) + 2)) eq >> ".$fieldval>" >> or substr($cols[1], - (length($fieldval) + 2)) eq >> "\@$fieldval>" >> or substr($cols[1], - (length($fieldval) + 1)) eq ".$fieldval" >> or substr($cols[1], - (length($fieldval) + 1)) eq >> "\@$fieldval")); >> } >> if ($doexpire) { >> $rows += $dbh->do("UPDATE relaytofrom SET record_expires = NOW() >> WHERE id = $cols[0]"); >> } >> } >> $sth->finish(); >> print "Expired $rows rows\n"; >> } >> >> } >> >> >> >> >> >> ===== Original Message from [email protected] >> (Greylisting >> Users and Developers Discuss) at 6/26/08 11:41 am >>> Hi, >>> >>> Where do I find this xlist.pl script ? >>> >>> Regards, >>> >>> Denio >>> >>>> I use the provided xlist.pl script to do all my white and black >>>> listing >>>> >>>> xlist.pl white ip 192.168.1 >>>> >>>> should make the proper table entry for you. >>>> >>>> >>>> >>>> ===== Original Message from [email protected] >>>> (Greylisting >>>> Users and Developers Discuss) at 6/26/08 2:51 am >>>>> Hi, >>>>> >>>>> This does appear to be based on a unique receipiants address...so >>>>> sending >>>>> to a remote user works after a while and continues to work, but >>>>> sending >>>>> to >>>>> a new user at the same doamin cause a tempfail... >>>>> >>>>> So how do I fix this please? >>>>> >>>>> regards >>>>> >>>>> Steven >>>>> >>>>> -----Original Message----- >>>>> From: [email protected] on behalf of Steven >>>>> Jones >>>>> Sent: Thu 26/06/2008 19:21 >>>>> To: [email protected] >>>>> Subject: [Greylist-users] Getting greylisting going on a new >>>>> Debian box >>>>> >>>>> >>>>> Hi, >>>>> >>>>> Just setting up relaydelay and I am finding that relaydelay is >>>>> failing >>>>> clients on the local LAN. >>>>> >>>>> I have attempted to put 192.168.1 into the database but to no avail. >>>>> >>>>> What should the mysql syntax be for 192.168.1.0/24 not to be >>>>> blocked ever >>>>> please? >>>>> >>>>> Does not seem to be, >>>>> >>>>> INSERT INTO relaytofrom (relay_ip, record_expires, create_time) >>>>> VALUES >>>>> ('192.168.1', '9999-12-31 23:59:59', NOW()); >>>>> >>>>> ?? >>>>> >>>>> 8><-------- >>>>> Jun 26 18:50:49 hermes sm-mta[20134]: m5Q6omwx020134: Milter: >>>>> to=<[email protected]>, reject=451 4.7.1 Please try >>>>> again >>>>> later (TEMPFAIL) >>>>> Jun 26 18:50:51 hermes sm-mta[20134]: m5Q6omwx020134: >>>>> from=<[email protected]>, size=1007, class=0, nrcpts=0, >>>>> proto=ESMTP, >>>>> daemon=MTA-v4, relay=[192.168.1.108] >>>>> Jun 26 18:51:23 hermes sm-mta[25218]: m5Q6pMPP025218: Milter: >>>>> to=<[email protected]>, reject=451 4.7.1 Please try >>>>> again >>>>> later (TEMPFAIL) >>>>> Jun 26 18:51:26 hermes sm-mta[25218]: m5Q6pMPP025218: >>>>> from=<[email protected]>, size=1007, class=0, nrcpts=0, >>>>> proto=ESMTP, >>>>> daemon=MTA-v4, relay=[192.168.1.108] >>>>> 8><--------- >>>>> >>>>> regards >>>>> >>>>> Steven >>>>> _______________________________________________ >>>>> Greylist-users mailing list >>>>> [email protected] >>>>> http://lists.puremagic.com/cgi-bin/mailman/listinfo/greylist-users >>>>> >>>>> _______________________________________________ >>>>> Greylist-users mailing list >>>>> [email protected] >>>>> http://lists.puremagic.com/cgi-bin/mailman/listinfo/greylist-users >>>> >>>> >>>> _______________________________________________ >>>> Greylist-users mailing list >>>> [email protected] >>>> http://lists.puremagic.com/cgi-bin/mailman/listinfo/greylist-users >>>> >>> >>> _______________________________________________ >>> Greylist-users mailing list >>> [email protected] >>> http://lists.puremagic.com/cgi-bin/mailman/listinfo/greylist-users >> >> >> _______________________________________________ >> Greylist-users mailing list >> [email protected] >> http://lists.puremagic.com/cgi-bin/mailman/listinfo/greylist-users >> >> _______________________________________________ >> Greylist-users mailing list >> [email protected] >> http://lists.puremagic.com/cgi-bin/mailman/listinfo/greylist-users >> > > _______________________________________________ > Greylist-users mailing list > [email protected] > http://lists.puremagic.com/cgi-bin/mailman/listinfo/greylist-users