summaryrefslogtreecommitdiff
path: root/scripts/post
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/post')
-rwxr-xr-xscripts/post69
1 files changed, 69 insertions, 0 deletions
diff --git a/scripts/post b/scripts/post
new file mode 100755
index 000000000..4eac017c6
--- /dev/null
+++ b/scripts/post
@@ -0,0 +1,69 @@
+#! /usr/local/bin/python
+#
+# This script gets called by the wrapper.
+# Stdin is the mail message, and argv[1] is the name of the mailing list
+# being posted to.
+# Todo: check size of To: list < 100
+# Send back why the post was rejected.
+
+import sys
+f = open('/tmp/hmm2', 'a+')
+sys.stderr = f
+
+sys.path.append('/home/mailman/mailman/modules')
+
+import maillist, mm_message, mm_err, mm_cfg
+
+# Only let one program run at once per list.
+
+# TODO: This can fail, and should send back an error message when it does.
+current_list = maillist.MailList(sys.argv[1])
+
+try:
+ prog = current_list.filter_prog
+ if prog:
+ import os, __main__
+ file = os.path.join('/home/mailman/mailman/filters', prog)
+ try:
+ execfile(file)
+ text = __main__.mailman_text
+ except:
+ text = sys.stdin.read()
+ else:
+ text = sys.stdin.read()
+ msg = mm_message.IncomingMessage(text)
+
+ try:
+ current_list.Post(msg)
+ except mm_err.MMNeedApproval, err_msg:
+ if current_list.dont_respond_to_post_requests:
+ sys.exit(0)
+ the_sender = msg.GetSender()
+ subj = msg.getheader('subject')
+ if not subj:
+ subj = '[no subject]'
+ body = '''
+Your mail to '%s' with the subject:
+
+%s
+
+Is being held until the list moderator can review it for approval.
+The reason why it is being held is:
+
+ %s
+
+Either the message will get posted to the list, or you will receive
+notification of the moderator's decison.
+''' % (current_list.real_name, subj, err_msg)
+
+ current_list.SendTextToUser( subject = 'Mail sent to %s' %
+ current_list.real_name,
+ recipient = the_sender,
+ text = body)
+# Let another process run.
+finally:
+ current_list.Unlock()
+
+
+
+