<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">I wrote a patch to enable rhsbl into rblsmtpd
There are 2 new options for rblsmtpd -A &amp;&amp; -R

That should work as expected (with domain based lists as
dsn.rfc-ignorant.org)

Maybe it can be usefull for others people ?

Bye 
Jean-Eudes ONFRAY
Mediation Telecom

--- rblsmtpd.c.orig	Tue Dec 30 15:06:02 2003
+++ rblsmtpd.c	Tue Dec 30 16:32:21 2003
@@ -22,11 +22,12 @@
 }
 void usage(void)
 {
-  strerr_die1x(100,"rblsmtpd: usage: rblsmtpd [ -b ] [ -R ] [ -t timeout ] [ -r base ] [ -a base ] smtpd [ arg ... ]");
+  strerr_die1x(100,"rblsmtpd: usage: rblsmtpd [ -b ] [ -c ] [ -t timeout ] [ -r base ] [ -a base ] [ -R base ] [ -A base ] smtpd [ arg ... ]");
 }
 
 char *ip_env;
 static stralloc ip_reverse;
+char *host_env;
 
 void ip_init(void)
 {
@@ -36,6 +37,9 @@
   ip_env = env_get("TCPREMOTEIP");
   if (!ip_env) ip_env = "";
 
+  host_env = env_get("TCPREMOTEHOST");
+  if (!host_env) host_env = "";
+
   if (!stralloc_copys(&amp;ip_reverse,"")) nomem();
 
   i = str_len(ip_env);
@@ -93,6 +97,43 @@
     decision = 1;
 }
 
+void rhsbl(char *base)
+{
+  if (decision) return;
+  if (!stralloc_copys(&amp;tmp,host_env)) nomem();
+  if (!stralloc_cats(&amp;tmp,".")) nomem();
+  if (!stralloc_cats(&amp;tmp,base)) nomem();
+  if (dns_txt(&amp;text,&amp;tmp) == -1) {
+    flagmustnotbounce = 1;
+    if (flagfailclosed) {
+      if (!stralloc_copys(&amp;text,"temporary RBL lookup error")) nomem();
+      decision = 2;
+    }
+    return;
+  }
+  if (text.len)
+    if (flagrblbounce)
+      decision = 3;
+    else
+      decision = 2;
+}
+
+void antirhsbl(char *base)
+{
+  if (decision) return;
+  if (!stralloc_copys(&amp;tmp,host_env)) nomem();
+  if (!stralloc_cats(&amp;tmp,".")) nomem();
+  if (!stralloc_cats(&amp;tmp,base)) nomem();
+  if (dns_ip4(&amp;text,&amp;tmp) == -1) {
+    flagmustnotbounce = 1;
+    if (!flagfailclosed)
+      decision = 1;
+    return;
+  }
+  if (text.len)
+    decision = 1;
+}
+
 char strnum[FMT_ULONG];
 static stralloc message;
 
@@ -175,7 +216,7 @@
     }
   }
 
-  while ((opt = getopt(argc,argv,"bBcCt:r:a:")) != opteof)
+  while ((opt = getopt(argc,argv,"bBcCt:r:a:R:A:")) != opteof)
     switch(opt) {
       case 'b': flagrblbounce = 1; break;
       case 'B': flagrblbounce = 0; break;
@@ -184,6 +225,8 @@
       case 't': scan_ulong(optarg,&amp;timeout); break;
       case 'r': rbl(optarg); flagwantdefaultrbl = 0; break;
       case 'a': antirbl(optarg); break;
+      case 'R': rhsbl(optarg); break;
+      case 'A': antirhsbl(optarg); break;
       default: usage();
     }
 
</pre></body></html>