diff options
| -rwxr-xr-x | mail/contact_transport | 8 | ||||
| -rwxr-xr-x | mail/deliver | 32 | ||||
| -rw-r--r-- | mail/dumb_deliver | 14 |
3 files changed, 24 insertions, 30 deletions
diff --git a/mail/contact_transport b/mail/contact_transport index 651820f52..04a846f9c 100755 --- a/mail/contact_transport +++ b/mail/contact_transport @@ -24,15 +24,11 @@ import smtplib,mm_cfg #sys.stdout = sys.stderr from_addr = sys.argv[1] -tmp_file = sys.argv[2] -to_addrs = sys.argv[3:] +to_addrs = sys.argv[2:] -file = open(tmp_file, "r") -text = file.read() -file.close() +text = sys.stdin.read() con = smtplib.SmtpConnection(mm_cfg.SMTPHOST) con.helo(mm_cfg.DEFAULT_HOST_NAME) con.send(to=to_addrs, frm=from_addr, text=text) con.quit() -os.unlink(tmp_file) diff --git a/mail/deliver b/mail/deliver index 19df41a45..250022e25 100755 --- a/mail/deliver +++ b/mail/deliver @@ -16,7 +16,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -import sys, tempfile +import sys #sys.stderr = open("/home/mailman/mailman/logs/debug","a+") #sys.stdout = sys.stderr """Partition a mass delivery into a suitable set of subdeliveries.""" @@ -30,10 +30,11 @@ if not os.fork(): import string, sys, regsub import paths import mm_cfg - def ContactTransport(sender, recip, filename): + def ContactTransport(sender, recip, text): cmd = os.path.join(mm_cfg.SCRIPTS_DIR, "contact_transport") - os.execv(cmd, [cmd,sender,filename]+recip) - + file = os.popen(string.join([cmd,sender]+recip," "), 'w') + file.write(text) + file.close() domain_info = {} def GroupByDomain(addr): "Collect addrs by major subdomain - e.g. the 'python' in python.org." @@ -71,28 +72,20 @@ if not os.fork(): groups.append(lastgroup) return groups - def ContactTransportForEachGroup(sender, groups, file_name): + def ContactTransportForEachGroup(sender, groups, text): if len(groups) == 1: - ContactTransport(sender,group,file_name) + ContactTransport(sender,group,text) return - f = open(file_name, "r") - text = f.read() - f.close() - tempfile.tempdir = "/tmp" - tempfile.template = "mm.delivery" for group in groups: - tmpname = tempfile.mktemp() - file = open(tmpname, "w") - file.write(text) - file.close() if not os.fork(): - ContactTransport(sender,group,tmpname) + ContactTransport(sender,group,text) os._exit(0) - os.unlink(file_name) sender = sys.argv[2] spawns = eval(sys.argv[3]) - file_name = sys.argv[1] + file = open(sys.argv[1], "r") + text = file.read() + file.close() if spawns > mm_cfg.MAX_SPAWNS: spawns = mm_cfg.MAX_SPAWNS if spawns < 1: @@ -101,4 +94,5 @@ if not os.fork(): map(GroupByDomain, to_list) final_groups = BuildGroups(domain_info.values(), len(to_list)) - ContactTransportForEachGroup(sender, final_groups, file_name) + ContactTransportForEachGroup(sender, final_groups, text) + os.unlink(sys.argv[1]) diff --git a/mail/dumb_deliver b/mail/dumb_deliver index 72d3717c3..15124e379 100644 --- a/mail/dumb_deliver +++ b/mail/dumb_deliver @@ -20,12 +20,16 @@ import os if not os.fork(): import string, sys - def ContactTransport(sender, recip, filename): + def ContactTransport(sender, recip, text): cmd = os.path.join(mm_cfg.SCRIPTS_DIR, "contact_transport") - os.execv(cmd, [cmd,sender,filename]+recip) - + file = os.popen(string.join([cmd,sender]+recip," "), 'w') + file.write(text) + file.close() sender = sys.argv[2] to_list = sys.argv[3:] - file _name sys.argv[1] - ContactTransport(sender, to_list, file_name) + file = open(sys.argv[1], 'r') + text = file.read() + file.close() + ContactTransport(sender, to_list, text) + os.unlink(sys.argv[1]) |
