Path: utzoo!attcan!uunet!lll-winken!sol.ctr.columbia.edu!caen!uakari.primate.wisc.edu!sdd.hp.com!hp-sdd!hpcndnm!jad From: jad@hpcndnm.cnd.hp.com (John Dilley) Newsgroups: comp.mail.sendmail Subject: Re: distribution list problems Message-ID: Date: 25 Oct 90 14:04:29 GMT References: <1990Oct17.201741.529@IRO.UMontreal.CA> Sender: news@sdd.hp.com (Usenet News) Distribution: comp.mail.sendmail Organization: Hewlett Packard, Colorado Networks Division Lines: 93 In-Reply-To: vachon@IRO.UMontreal.CA's message of 17 Oct 90 20:17:41 GMT Nntp-Posting-Host: hpcndnm.cnd.hp.com 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.