X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;ds=sidebyside;f=src%2Forg%2Fibex%2Fmail%2FGraylist.java;h=1f65dd40a6b2fe50bb30fbff25a381e4cfbfc623;hb=3450e48824396ee8cda39aaf0caeb81bb5f09c8d;hp=a23581eb5f412fb8bac273affa4f65d91f27e02b;hpb=36e19d8a6c5c04fc1d48c166ca7d951b763093a1;p=org.ibex.mail.git diff --git a/src/org/ibex/mail/Graylist.java b/src/org/ibex/mail/Graylist.java index a23581e..1f65dd4 100644 --- a/src/org/ibex/mail/Graylist.java +++ b/src/org/ibex/mail/Graylist.java @@ -37,7 +37,7 @@ public class Graylist extends SqliteDB { try { PreparedStatement check = conn.prepareStatement("select date from graylist where ip=? and fromaddr=? and toaddr=?"); - check.setString(1, ip.getHostAddress()); + check.setString(1, graylistAddress(ip)); check.setString(2, from); check.setString(3, to); ResultSet rs = check.executeQuery(); @@ -50,7 +50,7 @@ public class Graylist extends SqliteDB { try { PreparedStatement check = conn.prepareStatement("insert or replace into graylist (ip,fromaddr,toaddr,date) values(?,?,?,?)"); - check.setString(1, ip.getHostAddress()); + check.setString(1, graylistAddress(ip)); check.setString(2, from); check.setString(3, to); check.setTimestamp(4, new Timestamp(date)); @@ -58,5 +58,19 @@ public class Graylist extends SqliteDB { } catch (SQLException e) { throw new RuntimeException(e); } } + // + // this is mostly to deal with comcast's pathetic retry policy and + // rotating pool of outbound servers + // see: http://lists.puremagic.com/pipermail/greylist-users/2006-November/001255.html + // + private static String graylistAddress(InetAddress ipa) { + byte[] ip = ipa.getAddress(); + return + (ip[0] & 0xff)+"."+ + (ip[1] & 0xff)+"."+ + (ip[2] & 0xff)+"."+ + ".0"; + } + }