changeset 57:d089cb42619d draft

ML's return-path changed from maintainer to group owners.
author HIROSE Yuuji <yuuji@gentei.org>
date Sat, 23 Jun 2012 12:40:35 +0900
parents ba64f43f07f7
children d5650f7361d9
files after5.rb
diffstat 1 files changed, 16 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/after5.rb	Fri Jun 22 22:30:39 2012 +0900
+++ b/after5.rb	Sat Jun 23 12:40:35 2012 +0900
@@ -4,7 +4,7 @@
 # Associative Scheduling Table - after5
 # (C)2003, 2004, 2006, 2008, 2012 by HIROSE Yuuji [yuuji<at>gentei.org]
 # $Id: after5.rb,v 1.19 2012/04/01 11:52:25 yuuji Exp yuuji $
-# Last modified Thu Jun 21 22:53:35 2012 on firestorm
+# Last modified Sat Jun 23 12:35:30 2012 on firestorm
 # See http://www.gentei.org/~yuuji/software/after5/
 # このスクリプトはEUCで保存してください。
 $hgid = <<_HGID_.split[1..-2].join(" ")
@@ -1087,6 +1087,7 @@
     @oldagent = (%r,Mozilla/4, =~ ENV['HTTP_USER_AGENT'])
     @lang = 0
     @mailmode = nil
+    @mailadmdelimiter = "/"
     @saveprefsregexp = /^(display(mode|days)$|nt|headline)/
     @opt = {
       'conf'		=> @mybase+".cf",
@@ -2719,7 +2720,8 @@
     #  LOCAL=1 DEFAULT=name ./after5.rb -list
     # $DEFAULT is ML name
     viamail = ENV['LOCAL'] && ENV['DEFAULT'] # called via mail
-    from = nil
+    from = toadmin = nil
+    adminsuffix = @mailadmdelimiter+"admin"
     unless @opt['mailprefix'] && @opt['maildomain']
       if viamail
         STDERR.print msg('sendall_err') % [@opt['conf']]
@@ -2732,6 +2734,15 @@
     if viamail then
       prohibitviahttp()
       name = ENV['DEFAULT']
+      if Regexp.new("(.*)("+Regexp.quote(adminsuffix)+")") =~ name
+        # To: GROUP/admin@domain
+        #   -> Forward to group administrator(s)
+        name, toadmin = $1, $2
+        sendMail("yuuji@es.gentei.org", 'dummy',
+                 STDIN.readlines.join, nil, @sc.admins(name),
+                 {"Return-path" => @opt['maintainer']}, :thru)
+        exit 0
+      end
       unless grepgroup(name)
         sendMail(@opt['maintainer'], "no group",
                  sprintf("Invalid group address: %s(%s@%s)\nSent by %s\n" +
@@ -2756,6 +2767,7 @@
     fromhack = @sc.getgroupattr(name, 'fromhack')
     mldir = "ml/"+name
     to = @sc.getgroupattr(name, 'mladdress') || defaultmladdress(name)
+    errorsto = to.sub("@", adminsuffix+"@")
     subj = @params['subject'] || "Message from "+@myname
     sjtag = bracket.gsub("%n", nickname(name)).
       gsub("%i", name).
@@ -2778,8 +2790,8 @@
       "X-ML-Driver-URI" => $myurl,
       "X-ML-Name" => name,
       "X-ML-URI" => sprintf("%s?-groupman+%s", @opt['url'], name),
-      "Errors-to" => @opt['maintainer'],
-      "Return-path" => @opt['maintainer']} # This should be ML-owner
+      "Errors-to" => errorsto,
+      "Return-path" => errorsto}
     Dir.chdir @mydir
     rcpts = if grepgroup(name)
               @sc.members(name)

yatex.org