[comp.mail.sendmail] distribution list problems

vachon@IRO.UMontreal.CA (Mario Vachon) (10/18/90)

Hello,

I maintain a mail list which contains approximately 100 people. Each
address on the list is a valid address and is able to receive mail,
yet when I send mail to the entire list only the first few members of
the list are sent the mail before sendmail core dumps. I have broken
the list up into smaller pieces and have been able to send to each
of the pieces without any problems.

Has anyone seen this sort of problem before? Any hints on what I
might look into? I am using the sendmail distributed with

> Ultrix Worksystem V2.1 (Rev. 14) System #2: Tue Jul 10 21:33:21 EDT 1990.

and am sort of forced to keep the DEC sendmail since we must keep our
Ultrix host talking mail11v3 to VMS machines.

Please mail any suggestion to me and I will summarize... (really).


Darren Kinley             | Centre de recherche informatique de Montreal (CRIM)
Analyste/Prog. en Telecom | 3744 rue Jean-Brillant, bureau 500
kinley@crim.ca            | Montreal (Quebec) Canada H3T 1P1
uunet!clouso!kinley       | tel: +1 514 340 5700 / fax: +1 514 340 5777

piet@cwi.nl (Piet Beertema) (10/18/90)

	>I maintain a mail list which contains approximately 100 people. Each
	>address on the list is a valid address and is able to receive mail,
	>yet when I send mail to the entire list only the first few members of
	>the list are sent the mail before sendmail core dumps. I have broken
	>the list up into smaller pieces and have been able to send to each
	>of the pieces without any problems.
I have the same problem and it has persisted from old sendmail
releases upto 5.64. More precisely the symptoms when a mailing
list gets too long are:
- If you're lucky, i.e. when a list is just a little bit too
  long, you'll get e.g. a message that dbm can't store an entry
  from that list and/or a complaint about a missing colon.
- If you're unlucky, i.e. when a list is really too long, sendmail
  (newaliases) will dump core somewhere further on in the aliases
  file (on a correct address!).

I haven't got a fix for this problem yet.

-- 
	Piet Beertema, CWI, Amsterdam	(piet@cwi.nl)

jad@hpcndnm.cnd.hp.com (John Dilley) (10/25/90)

	Sorry for re-posting this note, if you've seen it already.
Jerry posted it locally via notes and it does not seem to have gone out.

                          --      jad      --

From: jmc@hpcndm.CND.HP.COM (Jerry McCollom)
Date: Fri, 19 Oct 1990 19:00:06 GMT
Subject: Re: distribution list problems
Newsgroups: comp.mail.sendmail

vachon@IRO.UMontreal.CA (Mario Vachon) writes:
> I maintain a mail list which contains approximately 100 people. Each
> address on the list is a valid address and is able to receive mail,
> yet when I send mail to the entire list only the first few members of
> the list are sent the mail before sendmail core dumps. I have broken
> the list up into smaller pieces and have been able to send to each
> of the pieces without any problems.
> 
> Has anyone seen this sort of problem before? Any hints on what I
> might look into?

The way readaliases() is coded, the total length of the LHS and RHS of
an alias cannot exceed BUFSIZ, which is 1024 on most systems.  If you
do exceed that value, the behavior can range from a slient truncation
of the list (your case) or perhaps even an infinite loop (the case
where I ran into this problem).

Since you are not at liberty to change the code, I'd suggest using a
:include: for the RHS of your mail list alias as a workaround, e.g.

	maillist : :include:/usr/lib/mail/maillist

where /usr/lib/mail/maillist is the list of addresses that was
formerly the RHS of your alias.

Below is my fix to readaliases in alias.c (diffs from BSD 5.65
sendmail).  You could also bump up the size of the variable line if
you want to allow longer aliases.


*** alias.c,orig        Fri Oct 19 12:04:34 1990
--- alias.c     Fri Oct 19 12:05:20 1990
***************
*** 460,463
                        }

                        /* see if there should be a continuation line */
                        c = fgetc(af);

--- 460,472 -----
                        }

+                       /* rhs overflow */
+                       if (p >= line + sizeof line - 1) {
+                               errno = 0;
+                               syserr("Alias too long (%d chars max)",
+                                     sizeof(line)-1);
+                               skipping = TRUE;
+                               break;
+                       }
+
                        /* see if there should be a continuation line */
                        c = fgetc(af);
***************
*** 472,475
                        LineNumber++;
                }
                if (al.q_mailer != LocalMailer)
                {

--- 481,489 -----
                        LineNumber++;
                }
+
+               /* continue on rhs overflow */
+               if (skipping)
+                   continue;
+
                if (al.q_mailer != LocalMailer)
                {




Jerry McCollom
jmc@cnd.hp.com
Hewlett Packard, Colorado Networks Division

This response does not represent the official position of, or statement
by, the Hewlett Packard Company.  The above is provided for
informational purposes only.  It is supplied without warranty of any
kind.

piet@cwi.nl (Piet Beertema) (10/26/90)

	>I'd suggest using a :include: for the RHS of your mail list
	>alias as a workaround, e.g.
	>
	>	maillist : :include:/usr/lib/mail/maillist

Right, that works just fine. Besides, it gives you the
opportunity to have people manage their own mailing lists.

There's a pitfall though: the "address" :include:filename
MUST resolve to the local mailer, since only LocalMailer
recognizes and processes the :include: construct.


-- 
	Piet Beertema, CWI, Amsterdam	(piet@cwi.nl)