Xref: utzoo comp.sys.ibm.pc.rt:1732 comp.mail.sendmail:1749 Path: utzoo!attcan!uunet!samsung!umich!sharkey!msuinfo!news From: gurney@frith.egr.msu.edu (Eddy J. Gurney) Newsgroups: comp.sys.ibm.pc.rt,comp.mail.sendmail Subject: Problems with Sendmail 5.64 (w/IDA enhancements) on PC/RT (Long) Keywords: GNU-dbm, gdbm, ndbm, flock, lockf, it_doesn't_work, I_hate_RT's Message-ID: <1990Jun27.173453.25710@msuinfo.cl.msu.edu> Date: 27 Jun 90 17:34:53 GMT Sender: news@msuinfo.cl.msu.edu Organization: Department of Computer Engineering, Michigan State University Lines: 62 Well, I've been anxious to get Sendmail 5.64+ installed on my PC RT, and, unsurprisingly, I've run into a bunch of problems. First and foremost, the RT does NOT have an 'flock' function call. It does have a 'lockf' function call, which locks certain 'regions' of a file. Per a previous request for info on 'lockf', Ed Clarke (clarke@acheron.uucp), posted a sample change he made in "alias.c" to use 'lockf' instead of 'flock'. I made similar changes to the rest of the 'flock' calls, and those APPEAR to have worked. The reason I say "appear" is because the man page for 'lockf' says it does not work with standard, buffered I/O, which is what Sendmail uses. :-) So I'm not sure if this is actually the correct way to handle the situation. I'm wondering if a call to 'fcntl' might not be more appropriate. I don't have a man page for it, though, so I'm looking for info on it. (Hint, hint...) OK. Below are the rest of the changes (as far as I can remember) that I made to the distribution version of Sendmail 5.64 with the IDA/BIU enhancements, which I got from uxc.cso.uiuc.edu: . Set the compiler flag '-DBSD_INCLUDES', so would include , which has the necessary definition of 'DIR' used in "queue.c" . Added "getenv.c" and "setenv.c" to the /src directory, copied from the /support directory of the distribution, edited Makefile accordingly . Changed the 'getla()' routine in "conf.c" to also return 0, since I don't think the RT has anyway of determining the load average (I don't use this feature anyway); removed 'getloadavg.c/.o' from the Makefile . Changed all the calls to 'flock' to 'lockf' in "alias.c", "daemon.c", and "queue.c" as demonstrated by Ed Clarke in his post to comp.sys.ibm.pc.rt . Set the compiler flag '-DVMUNIX', which works on the RT except for one #ifdef in "deliver.c", which tries to assign FORK to 'vfork'. . Changed "sendmail.h" to #include , since two or three other files needed definitions from this include file. . Added EPROCLIM = 98 to the list of returned error flags (thanks again to Ed Clarke for that info) . It is currently compiled with only DBM defined, not NDBM or SDBM; all the other default options were left the same (I think), including having NAMED_BIND on, etc. (named is running :-) Now all this compiles fine with only a few warnings here and there. But for some reason, Sendmail doesn't appear to function properly. For one thing, if you try to run sendmail/newaliases/mailq with the '-d' flag, the only debug output you get is "Sendmail 5.64+", then a nice "Bus error (core dumped)" message. HOWEVER, if you also run with the '-C' flag (to NOT use the frozen configuration file or something), the debug option works as expected. Even worse, though, is that mail sent to the new sendmail daemon from a remote host fails with a "couldn't execute /usr/lib/sendmail" error, although local mail works fine. Finally... On the topic of the last item, I also (successfully?) compiled gdbm 1.3, which is the GNU version of DBM/NDBM. I installed the gdbm.a library in /usr/lib, and tried to link Sendmail 5.64 with it, but I get errors from syslog telling me that the database /etc/sendmail/aliases could not be opened when I tried to run newaliases and sendmail. Has anyone compiled/used GNU's dbm? Does it work correctly in Sendmail? (I also installed the 'ndmb.h' include file from the GNU dbm in /usr/include.) Any help/suggestions with any of this would be GREATLY appreciated. -- Eddy J. Gurney, N8FPW -- gurney@frith.egr.msu.edu