addrcheck: Optionally invoke userv service to decide address validity.
[qmail] / qmail-valid-addresses
index 9821394..d43cf85 100644 (file)
@@ -41,7 +41,7 @@ for k in udb.keys():
 del udb
 
 map = {}
-def addlocal(p, l, forcep = False):
+def addlocal(u, p, l, forcep = False):
   l = 'L' + l
   if not os.path.exists(p):
     if forcep:
@@ -50,8 +50,13 @@ def addlocal(p, l, forcep = False):
   f = open(p)
   top = f.readline()
   f.close()
-  if len(top) > 0 and top[0] == '!':
+  if len(top) > 1 and top[0:2] == '#!':
     map[l] = '-'
+  elif len(top) > 1 and top[0:2] == '#?':
+    name = u.name
+    if name[-1] == '-':
+      name = name[:-1]
+    map[l] = '?' + name
   else:
     map[l] = '+'
 for k in sort(umap.keys()):
@@ -63,9 +68,9 @@ for k in sort(umap.keys()):
       if not p.startswith(qm):
         continue
       ext = p[qmlen:]
-      addlocal(os.path.join(u.home, p), u.name + ext)
+      addlocal(u, os.path.join(u.home, p), u.name + ext)
   else:
-    addlocal(os.path.join(u.home, qm), u.name, u.dash == '')
+    addlocal(u, os.path.join(u.home, qm), u.name, u.dash == '')
 
 me = open('control/me').readline()