debian: Add source-package rule.
[qmail] / qmail-valid-addresses
index b77be52..d43cf85 100644 (file)
@@ -2,6 +2,7 @@
 
 import os
 import cdb
+from errno import *
 
 def sort(l):
   l = [] + l
@@ -40,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:
@@ -49,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()):
@@ -62,20 +68,31 @@ 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 == '')
 
-for dom in open('control/locals'):
-  if len(dom) and dom[-1] == '\n':
-    dom = dom[:-1]
-  map['@' + dom] = ''
+me = open('control/me').readline()
 
-for v in open('control/virtualdomains'):
-  if len(v) and v[-1] == '\n':
-    v = v[:-1]
-  (addr, pre) = v.split(':', 2)
-  map['V' + addr] = pre
+try:
+  for dom in open('control/locals'):
+    if len(dom) and dom[-1] == '\n':
+      dom = dom[:-1]
+    map['@' + dom] = ''
+except IOError, exc:
+  if exc.errno != ENOENT:
+    raise
+  map['@' + me] = ''
+
+try:
+  for v in open('control/virtualdomains'):
+    if len(v) and v[-1] == '\n':
+      v = v[:-1]
+    (addr, pre) = v.split(':', 2)
+    map['V' + addr] = pre
+except IOError, exc:
+  if exc.errno != ENOENT:
+    raise
 
 for l in sort(map.keys()):
   print '%s:%s' % (l, map[l])