ud-mailgate: use subprocess.Popen instead of os.popen.
[mirror/userdir-ldap.git] / ud-mailgate
index 30af583..073ee4f 100755 (executable)
@@ -331,10 +331,11 @@ def DoSSH(Str, Attrs, badkeys, uid):
             Subst["__ERROR__"] = "SSH key with fingerprint %s known as bad key" % (g[1])
             ErrReply = TemplateSubst(Subst, open(TemplatesDir + "admin-info", "r").read())
 
-            Child = os.popen("/usr/sbin/sendmail -t", "w")
-            Child.write(ErrReplyHead)
-            Child.write(ErrReply)
-            if Child.close() is not None:
+            Child = subprocess.Popen(['/usr/sbin/sendmail', '-t'], stdin=subprocess.PIPE)
+            Child.stdin.write(ErrReplyHead)
+            Child.stdin.write(ErrReply)
+            Child.stdin.close()
+            if Child.wait() != 0:
                 raise UDExecuteError("Sendmail gave a non-zero return code")
         except Exception:
             sys.exit(EX_TEMPFAIL)