sendmail 5.64 or higher under Ultrix 4.0?
Steve D. Miller
steve at fnord.umiacs.umd.edu
Sat Sep 8 07:08:22 AEST 1990
I have sendmail 5.64 up and running on a 5000 running Ultrix 4.0. I don't
think I did anything particularly special, though we have enough local hacks
in that I could have changed something by accident...
I did fix two or three little nits; I've enclosed diffs. There's a problem
with leftover timeouts when the read timeout blows its cookies (which may be
a localism, I don't remember); also, there's a problem that shows up in
debug mode only with passing in an in_addr where a long is expected (or vice
versa), and a problem with sending to multiple recipients where a SMTP
connection loses midway through the conversation. I also compiled with -g
(for no particular reason, it's not like I tried -O and gave up).
You might take a peek at the getla() code to see if there isn't some funky
load-average-related stuff going on. I have a getla() that works on
DECstations, Suns, Encores, and a few other machines; it's not clean, but it
functions. If someone wants a copy, holler.
-Steve
: Run this shell script with "sh" not "csh"
PATH=/bin:/usr/bin:/usr/ucb:/etc:$PATH
export PATH
all=false
if [ x$1 = x-a ]; then
all=true
fi
echo Extracting daemon.c.diff
sed 's/^X//' <<'//go.sysin dd *' >daemon.c.diff
X*** /tmp/daemon.c Fri Sep 7 15:59:23 1990
X--- daemon.c Fri Aug 3 15:30:08 1990
X***************
X*** 380,386 ****
X again:
X if (tTd(16, 1))
X printf("makeconnection (%s [%s])\n", host,
X! inet_ntoa(SendmailAddress.sin_addr.s_addr));
X
X s = socket(AF_INET, SOCK_STREAM, 0);
X if (s < 0)
X--- 380,386 ----
X again:
X if (tTd(16, 1))
X printf("makeconnection (%s [%s])\n", host,
X! inet_ntoa(SendmailAddress.sin_addr));
X
X s = socket(AF_INET, SOCK_STREAM, 0);
X if (s < 0)
//go.sysin dd *
if [ `wc -c < daemon.c.diff` != 494 ]; then
made=false
echo error transmitting daemon.c.diff --
echo length should be 494, not `wc -c < daemon.c.diff`
else
made=true
fi
if $made; then
chmod 644 daemon.c.diff
echo -n ' '; ls -ld daemon.c.diff
fi
echo Extracting usersmtp.c.diff
sed 's/^X//' <<'//go.sysin dd *' >usersmtp.c.diff
X*** /tmp/usersmtp.c Fri Sep 7 16:00:22 1990
X--- usersmtp.c Mon Jul 30 15:45:32 1990
X***************
X*** 74,81 ****
X ** creates connection and sends initial protocol.
X */
X
X- jmp_buf CtxGreeting;
X-
X smtpinit(m, pvp)
X struct mailer *m;
X char **pvp;
X--- 74,79 ----
X***************
X*** 83,89 ****
X register int r;
X EVENT *gte;
X char buf[MAXNAME];
X! extern greettimeout();
X
X /*
X ** Open the connection to the mailer.
X--- 81,87 ----
X register int r;
X EVENT *gte;
X char buf[MAXNAME];
X! int oldtimeout;
X
X /*
X ** Open the connection to the mailer.
X***************
X*** 135,147 ****
X ** happen.
X */
X
X! if (setjmp(CtxGreeting) != 0)
X! goto tempfail;
X! gte = setevent((time_t) 300, greettimeout, 0);
X SmtpPhase = "greeting wait";
X setproctitle("%s %s: %s", CurEnv->e_id, CurHostName, SmtpPhase);
X r = reply(m);
X! clrevent(gte);
X if (r < 0 || REPLYTYPE(r) != 2)
X goto tempfail;
X
X--- 133,144 ----
X ** happen.
X */
X
X! oldtimeout = ReadTimeout;
X! ReadTimeout = 5 * 60;
X SmtpPhase = "greeting wait";
X setproctitle("%s %s: %s", CurEnv->e_id, CurHostName, SmtpPhase);
X r = reply(m);
X! ReadTimeout = oldtimeout;
X if (r < 0 || REPLYTYPE(r) != 2)
X goto tempfail;
X
X***************
X*** 223,234 ****
X }
X
X
X- static
X- greettimeout()
X- {
X- /* timeout reading the greeting message */
X- longjmp(CtxGreeting, 1);
X- }
X /*
X ** SMTPRCPT -- designate recipient.
X **
X--- 220,225 ----
X***************
X*** 250,255 ****
X--- 241,251 ----
X register int r;
X extern char *remotename();
X
X+ /* if the connection is closed, don't bother */
X+ if (SmtpOut == NULL || SmtpIn == NULL) {
X+ errno = EBADF; /* guess */
X+ return(EX_TEMPFAIL);
X+ }
X smtpmessage("RCPT To:<%s>", m, remotename(to->q_user, m, FALSE, TRUE));
X
X SmtpPhase = "RCPT wait";
//go.sysin dd *
if [ `wc -c < usersmtp.c.diff` != 1808 ]; then
made=false
echo error transmitting usersmtp.c.diff --
echo length should be 1808, not `wc -c < usersmtp.c.diff`
else
made=true
fi
if $made; then
chmod 644 usersmtp.c.diff
echo -n ' '; ls -ld usersmtp.c.diff
fi
--
Spoken: Steve Miller Domain: steve at umiacs.umd.edu UUCP: uunet!mimsy!steve
Phone: +1-301-405-6736 USPS: UMIACS, Univ. of Maryland, College Park, MD 20742
More information about the Comp.unix.ultrix
mailing list