X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;ds=sidebyside;f=src%2Forg%2Fibex%2Fmail%2FWhitelist.java;h=9842320d23bdaa8f05e21f1bb67d2a11f01b290f;hb=7e5f113841114ac4b0ef469ef286bd31fd9da6cb;hp=81e4b647278b3360602bd08cfb1e9d97d6799274;hpb=36e19d8a6c5c04fc1d48c166ca7d951b763093a1;p=org.ibex.mail.git diff --git a/src/org/ibex/mail/Whitelist.java b/src/org/ibex/mail/Whitelist.java index 81e4b64..9842320 100644 --- a/src/org/ibex/mail/Whitelist.java +++ b/src/org/ibex/mail/Whitelist.java @@ -17,8 +17,11 @@ public class Whitelist extends SqliteDB { public Whitelist(String filename) throws SQLException { super(filename); SqliteTable whitelist = getTable("whitelist", "(email)"); + whitelist.createIndex("email"); SqliteTable pending = getTable("pending", "(spamid,email,message,date)"); pending.reap("date"); + pending.createIndex("spamid"); + pending.createIndex("email"); } public boolean handleRequest(org.ibex.net.Connection c) { @@ -96,6 +99,9 @@ public class Whitelist extends SqliteDB { a = m.envelopeFrom; if (a!=null) addWhitelist(a); hsm.add(m); + if (m.cc != null) for(Address aa : m.cc) { + if (aa!= null) addWhitelist(aa); + } } while (rs.next()); } for(Message m : hsm) @@ -135,6 +141,10 @@ public class Whitelist extends SqliteDB { "with Auto-Submitted=\""+m.headers.get("Auto-Submitted")+"\""); return; } + if (m.headers.get("List-Id") != null || m.headers.get("List-Post") != null) { + Log.warn(this, "refusing to send a challenge to a message with a List-Id or List-Post header"); + return; + } Address from = Address.parse("adam@megacz.com"); @@ -213,18 +223,12 @@ public class Whitelist extends SqliteDB { PreparedStatement add = conn.prepareStatement("insert into pending values(?,?,?,?)"); add.setString(1, messageid); add.setString(2, to.toString(false)); - add.setString(3, streamToString(m.getStream())); + add.setString(3, SqliteDB.streamToString(m.getStream())); add.setTimestamp(4, new Timestamp(System.currentTimeMillis())); add.executeUpdate(); } } catch (Exception e) { throw new RuntimeException(e); } } - private static String streamToString(Stream stream) throws Exception { - StringBuffer b = new StringBuffer(); - for(String s = stream.readln(); s!=null; s=stream.readln()) - b.append(s+"\n"); - return b.toString(); - } }