From a2215124bb8cc8744f1a81dc9dcb776184161195 Mon Sep 17 00:00:00 2001
From: Stuart Gathman <stuart@gathman.org>
Date: Sun, 15 Apr 2007 00:54:30 +0000
Subject: [PATCH] Ban ips with too many bad rcpts on a connection.

---
 bms.py | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/bms.py b/bms.py
index c75d3e9..f159b28 100644
--- a/bms.py
+++ b/bms.py
@@ -1,6 +1,9 @@
 #!/usr/bin/env python
 # A simple milter that has grown quite a bit.
 # $Log$
+# Revision 1.105  2007/04/13 17:20:09  customdesigned
+# Check access_file at startup.  Compress rcpt to log.
+#
 # Revision 1.104  2007/04/05 17:59:07  customdesigned
 # Stop querying gossip server twice.
 #
@@ -797,6 +800,15 @@ class bmsMilter(Milter.Milter):
             self.reputation = int(a[-2])
             self.confidence = int(a[-1])
             self.umis = umis
+            # We would like to reject on bad reputation here, but we
+            # need to give special consideration to postmaster.  So
+            # we have to wait until envrcpt().  Perhaps an especially
+            # bad reputation could be rejected here.
+            if self.reputation < -70 and self.confidence > 5:
+              self.log('REJECT: REPUTATION, rcpt to',to,str)
+              self.setreply('550','5.7.1',
+                'Your domain has been sending nothing but spam')
+              return Milter.REJECT
         except:
           gossip = None
           raise
-- 
GitLab