diff options
Diffstat (limited to 'scripts/post')
| -rwxr-xr-x | scripts/post | 69 |
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() + + + + |
