$MAIL surprise
Steve VanDevender
stevev at darkwing.uoregon.edu
Sat Apr 7 06:14:48 EST 2001
David Terrell writes:
> Are you sure the real problem isn't that sshd is started with your
> environment at runtime? I recently had a similar problem with inetd.
> Try starting it like this:
>
> env -i PATH=/some:/reasonable:/subset /usr/local/sbin/sshd
That was my first thought too, and I restarted sshd with "env -i" on
that host and it didn't change anything. I looked and here's what's in
config.h:
/* Set this to your mail directory if you don't have maillock.h */
#define MAIL_DIRECTORY "/home/staff/stevev"
So then in defines.h this happens:
#ifndef MAIL_DIRECTORY
# define MAIL_DIRECTORY "/var/spool/mail"
#endif
#ifndef MAILDIR
# define MAILDIR MAIL_DIRECTORY
#endif
#if !defined(_PATH_MAILDIR) && defined(MAILDIR)
# define _PATH_MAILDIR MAILDIR
#endif /* !defined(_PATH_MAILDIR) && defined(MAILDIR) */
And finally in session.c this environment variable setting is created:
snprintf(buf, sizeof buf, "%.200s/%.50s",
_PATH_MAILDIR, pw->pw_name);
child_set_env(&env, &envsize, "MAIL", buf);
And this is what is in configure that gets it all started:
# Check for mail directory (last resort if we cannot get it from headers)
if test ! -z "$MAIL" ; then
maildir=`dirname $MAIL`
cat >> confdefs.h <<EOF
#define MAIL_DIRECTORY "$maildir"
EOF
The code in defines.h should use _PATH_MAILDIR if it's defined in the
system headers, but at least in the case of the Solaris and SunOS
systems where I'm seeing this happen, there is no setting for
_PATH_MAILDIR in the system include files.
Like I said before, though, I'm not really arguing that this code or
this approach to finding $MAIL is wrong, but it is surprising.
More information about the openssh-unix-dev
mailing list