exim 1.60 and majordomo

Top Page
Delete this message
Reply to this message
Author: morty
Date:  
To: exim-users@lists.cam.ac.uk
Subject: exim 1.60 and majordomo
folks,

i am trying to make it easier to manage several (>100) majordomo mailing lists. exim is running under freebsd
2.2.1-RELEASE. i want to use seperate aliases files for each list and i want to be able to create a new list
simply by copying test-l.aliases to new-list.aliases. this would allow me to easily move lists among different
machines. but this configuration is not working.

i have the following directors in my exim configure file:

majordomo2:
  prefix = owner-,
  prefix_optional,
  suffix = -owner:-approval:-outgoing:-request,
  suffix_optional,
  driver = smartuser,
  require_files = /usr/local/majordomo/lists/${local_part}.aliases;
  new_address ="\
    ${if and{{!def:local_part_prefix}{!def:local_part_suffix}}{-mail}\
    {${local_part_prefix}${local_part_suffix}}}\
    -md-${local_part}@${domain}


majordomo3:
suffix = -md-*,
driver = aliasfile;
file = /usr/local/majordomo/lists/${s_4_25:$local_part_suffix}.aliases,
optional,
search_type = lsearch,
expand,
skip_syntax_errors,
user = majordom


my alias file /usr/localmajordomo/lists/test-l.aliases:

owner-:Postmaster
owner--outgoing:owner-${s_4_25:$local_part_suffix}
-owner:owner-${s_4_25:$local_part_suffix}
-approval:owner-${s_4_25:$local_part_suffix} 
-mail: "|/usr/local/majordomo/wrapper resend -l ${s_4_25:$local_part_suffix} -h ${primary_hostname} 
    ${s_4_25:$local_part_suffix}-outgoing"
-outgoing::include:/usr/local/majordomo/lists/${s_4_25:$local_part_suffix},
    "|/usr/local/majordomo/wrapper archive -a -m -f 
    /usr/local/majordomo/lists/${s_4_25:$local_part_suffix}.archive/${s_4_25:$local_part_suffix}.archive"
    "|/usr/local/majordomo/wrapper digest -r -C -l ${s_4_25:$local_part_suffix}-digest 
    ${s_4_25:$local_part_suffix}-digest-outgoing",
    hypermail-${s_4_25:$local_part_suffix}
-request: "|/usr/local/majordomo/wrapper majordomo -l ${s_4_24:$local_part_suffix}"



if i change the suffix in majordomo2 to just 1 suffix as in "suffix = -request" then the -request address works as
expected. here is a snippet of the debug output with "suffix = -request":

address test-l-request@???
local_part=test-l-request domain=dortmunder.mortykai.com local=1
directing test-l-request@???
stripped suffix -request
majordomo2 director called for test-l-request@???
generated new address: -request-md-test-l@???
majordomo2 director succeeded for test-l
transport: <none>
address -request-md-test-l@???
local_part=-request-md-test-l domain=dortmunder.mortykai.com local=1
directing -request-md-test-l@???
majordomo2 director skipped: file existence failure
stripped suffix -md-test-l
majordomo3 director: file = /usr/local/majordomo/lists/test-l.aliases search type = 48
search_open (0) /usr/local/majordomo/lists/test-l.aliases
file lookup required for -request in /usr/local/majordomo/lists/test-l.aliases
parse_extract_addresses: "|/usr/local/majordomo/wrapper majordomo -l test-l"
extracted: |/usr/local/majordomo/wrapper majordomo -l test-l
majordomo3 director generated |/usr/local/majordomo/wrapper majordomo -l test-l (pipe, file, or autoreply)
uid=54 gid=54 home=null
majordomo3 director succeeded for -request
transport: <none>
-request-md-test-l@??? -> |/usr/local/majordomo/wrapper majordomo -l test-l


the owner- address also works the same way.

with "suffix = -approval" the -approval address works until it gets expanded to the owner- address and then
majordomo2 is skipped. here exim is functioning correctly but maybe exim should check the address before
the pre/suffix is stripped when determining if the address has been previously directed.

the -owner address also suffers from this.

address test-l-approval@???
local_part=test-l-approval domain=dortmunder.mortykai.com local=1
directing test-l-approval@???
stripped suffix -approval
majordomo2 director called for test-l-approval@???
generated new address: -approval-md-test-l@???
majordomo2 director succeeded for test-l
transport: <none>
address -approval-md-test-l@???
local_part=-approval-md-test-l domain=dortmunder.mortykai.com local=1
directing -approval-md-test-l@???
majordomo2 director skipped: file existence failure
stripped suffix -md-test-l
majordomo3 director: file = /usr/local/majordomo/lists/test-l.aliases search type = 48
search_open (0) /usr/local/majordomo/lists/test-l.aliases
file lookup required for -approval in /usr/local/majordomo/lists/test-l.aliases
parse_extract_addresses: owner-test-l
extracted: owner-test-l
majordomo3 director generated owner-test-l@???
uid=unset gid=unset home=null
majordomo3 director succeeded for -approval
transport: <none>
address owner-test-l@???
local_part=owner-test-l domain=dortmunder.mortykai.com local=1
directing owner-test-l@???
stripped prefix owner-
majordomo2 director skipped: previously directed test-l


the docs say that the prefix and sffix options are string lists but with multiple suffixes, none are matched. here
is the debug output with "suffix = -outgoing:-request" and "no_suffix_optional":

address test-l-request@???
local_part=test-l-request domain=dortmunder.mortykai.com local=1
directing test-l-request@???
majordomo2 director skipped: suffix mismatch


and finally, i get sementation fault on the -outgoing address. here is the debug output with "suffix = -outgoing":

address test-l-outgoing@???
  local_part=test-l-outgoing domain=dortmunder.mortykai.com local=1
directing test-l-outgoing@???
stripped suffix -outgoing
majordomo2 director called for test-l-outgoing@???
  generated new address: -outgoing-md-test-l@???
majordomo2 director succeeded for test-l
  transport: <none>
address -outgoing-md-test-l@???
  local_part=-outgoing-md-test-l domain=dortmunder.mortykai.com local=1
directing -outgoing-md-test-l@???
majordomo2 director skipped: file existence failure
stripped suffix -md-test-l
majordomo3 director: file = /usr/local/majordomo/lists/test-l.aliases search type = 48
search_open (0) /usr/local/majordomo/lists/test-l.aliases
file lookup required for -outgoing in /usr/local/majordomo/lists/test-l.aliases
parse_extract_addresses: :include:/usr/local/majordomo/lists/test-l,    "|/usr/local/majordomo/wrapper archive -a 
-m -f /usr/local/majordomo/lists/test-l.archive/test-l.archive",    "|/usr/local/majordomo/wrapper digest -r -C -l 
test-l-digest test-l-digest-outgoing",        hypermail-test-l
extracted: :include:/usr/local/majordomo/lists/test-l
parse_extract_addresses: morty@???


extracted: morty@???
extracted: |/usr/local/majordomo/wrapper archive -a -m -f /usr/local/majordomo/lists/test-l.archive/test-l.archive
extracted: |/usr/local/majordomo/wrapper digest -r -C -l test-l-digest test-l-digest-outgoing
extracted: hypermail-test-l
majordomo3 director generated hypermail-test-l@???
uid=unset gid=unset home=null
majordomo3 director generated |/usr/local/majordomo/wrapper digest -r -C -l test-l-digest test-l-digest-outgoing
(pipe, file, or autoreply)
uid=54 gid=54 home=null
majordomo3 director generated |/usr/local/majordomo/wrapper archive -a -m -f
/usr/local/majordomo/lists/test-l.archive/test-l.archive (pipe, file, or autoreply)
uid=54 gid=54 home=null
majordomo3 director generated morty@???
uid=unset gid=unset home=null
majordomo3 director succeeded for -outgoing
transport: <none>
address morty@???
local_part=morty domain=mortykai.com local=1
directing morty@???
Segmentation fault



here is my entire configuration:

######################################################################
#                    MAIN CONFIGURATION SETTINGS                     #
######################################################################
# primary_hostname =
# qualify_domain =
# qualify_recipient =
local_domains = mortykai.com:*.mortykai.com
never_users = root
# percent_hack_domains=*
# trusted_users = exim
freeze_tell_mailmaster
strip_excess_angle_brackets
strip_trailing_dot
end



######################################################################
#                      TRANPORTS CONFIGURATION                       #
######################################################################
local_delivery:
  driver = appendfile;
  file = /var/mail/${local_part},


address_pipe:
driver = pipe;
pipe_as_creator,
return_fail_output

address_file:
driver = appendfile

address_reply:
driver = autoreply

remote_smtp:
driver = smtp;

hypermail_pipe:
  driver = pipe;
  return_fail_output,
  pipe_as_creator,
  command = "/usr/local/bin/hypermail -i \
    -c \"/usr/local/www/data/mail_archives/${local_part}/hm.conf\" \  
    -d \"/usr/local/www/data/mail_archives/${local_part}\" \
    -l \"${local_part}\" -a \"..\" -b \"about.html\" -u"
end



######################################################################
#                      DIRECTORS CONFIGURATION                       #
######################################################################
#majordomo1:                          
#  driver = aliasfile;               
#  file = /etc/aliases.majordomo,    
#  search_type = lsearch,            
#  skip_syntax_errors,               
#  user = majordom,                  


majordomo2:
  prefix = owner-,
  prefix_optional,
  suffix = -owner:-approval:-outgoing:-request,
  suffix_optional,
  driver = smartuser,
  require_files = /usr/local/majordomo/lists/${local_part}.aliases;
  new_address ="\
    ${if and{{!def:local_part_prefix}{!def:local_part_suffix}}{-mail}\
    {${local_part_prefix}${local_part_suffix}}}\
    -md-${local_part}@${domain}


majordomo3:
suffix = -md-*,
driver = aliasfile;
file = /usr/local/majordomo/lists/${s_4_25:$local_part_suffix}.aliases,
optional,
search_type = lsearch,
expand,
skip_syntax_errors,
user = majordom

hypermail:
prefix = hypermail-,
driver = smartuser;
transport = hypermail_pipe,

system_aliases:
driver = aliasfile;
file = /etc/aliases,
search_type = lsearch

userforward:
no_verify,
driver = forwardfile;
file = .forward,
# filter

localuser:
driver = localuser,
transport = local_delivery;

# try the next machine
unknownuser:
driver = smartuser;
new_address = ${local_part}@???
end


######################################################################
#                      ROUTERS CONFIGURATION                         #
######################################################################
lookuphost:
  driver = lookuphost,
  transport = remote_smtp;


literal:
driver = ipliteral,
transport = remote_smtp;
end


######################################################################
#                      RETRY CONFIGURATION                           #
######################################################################
# Domain               Error       Retries
# ------               -----       -------
*                      *           F,2h,15m; G,16h,2h,1.5; F,4d,8h
end



######################################################################
#                      REWRITE CONFIGURATION                         #
######################################################################
# End of Exim configuration file






-morty-

heard any good ones lately?
send them to mailto:jokes@mortykai.com



-morty-

heard any good ones lately?
send them to mailto:jokes@mortykai.com