From: Dan Harkless <dan@harkless.org>
Date: Tue, 17 Aug 1999 23:09:46 +0000 (+0000)
Subject: Automated #define of MAILGROUP and installation of inc as setgid mail when the
X-Git-Tag: nmh-1_0~157
X-Git-Url: http://git.marmaro.de/?a=commitdiff_plain;h=d3d0096ab170eec3ccfb35615a246a4d5d31b878;p=mmh

Automated #define of MAILGROUP and installation of inc as setgid mail when the
mail spool directory isn't world-writable.
---

diff --git a/acconfig.h b/acconfig.h
index 5d2429e4..5051962e 100644
--- a/acconfig.h
+++ b/acconfig.h
@@ -11,16 +11,6 @@
  * wish to change the features that are compiled into nmh.
  */
 
-/*
- * Define to 1 if you need to make `inc' set-group-id
- * because your mail spool is not world writable.  This
- * will add some extra security checks, although I can't
- * guarantee it is safe.  Also, you will need to change the
- * group and add the setgid bit to `inc' manually after
- * installation.
- */
-/* #define MAILGROUP  1 */
-
 /*
  * Turn on locale (setlocale) support
  */
@@ -231,6 +221,13 @@
  */
 #undef ATTVIBUG
 
+/*
+ * Define to 1 if you need to make `inc' set-group-id because your mail spool is
+ * not world writable.  There are no guarantees as to the safety of doing this,
+ * but this #define will add some extra security checks.
+ */
+#undef MAILGROUP
+
 /* Define ruserpass as _ruserpass if your libraries have a bug *
  * such that it can't find ruserpass, but can find _ruserpass. */
 #undef ruserpass
diff --git a/configure.in b/configure.in
index 63274ce3..6b3367f5 100644
--- a/configure.in
+++ b/configure.in
@@ -151,6 +151,10 @@ AC_PROG_RANLIB		dnl Check for `ranlib'
 AC_PROG_AWK             dnl Check for mawk,gawk,nawk, then awk
 AC_PROG_LEX             dnl Check for lex/flex
 
+dnl Look for `cut'
+pathtmp=/usr/bin:/bin:/usr/local/bin:/usr/xpg4/bin:/usr/ucb
+AC_PATH_PROG(cutpath, cut, no, [$pathtmp])
+
 dnl Check for lorder and tsort commands
 AC_CHECK_PROG(LORDER, lorder, lorder, no)dnl
 AC_CHECK_PROG(TSORT, tsort, tsort, no)dnl
@@ -163,9 +167,9 @@ if test x$ac_cv_prog_LORDER != xlorder -o x$ac_cv_prog_TSORT != xtsort; then
   AC_SUBST(TSORT)dnl
 fi
 
-dnl Look for `sendmail'
-pathtmp=/usr/lib:/usr/sbin:/usr/etc:/usr/ucblib:/usr/bin:/bin
-AC_PATH_PROG(sendmailpath, sendmail, no, [$pathtmp])
+dnl Look for `ls'
+pathtmp=/usr/bin:/bin:/usr/local/bin:/usr/xpg4/bin:/usr/ucb
+AC_PATH_PROG(lspath, ls, no, [$pathtmp])
 
 dnl Look for `more'
 pathtmp=/usr/bin:/bin:/usr/ucb:/usr/local/bin
@@ -178,6 +182,10 @@ if test -z "$pagerpath"; then
 fi
 AC_SUBST(pagerpath)dnl
 
+dnl Look for `sendmail'
+pathtmp=/usr/lib:/usr/sbin:/usr/etc:/usr/ucblib:/usr/bin:/bin
+AC_PATH_PROG(sendmailpath, sendmail, no, [$pathtmp])
+
 dnl Look for `vi'
 pathtmp=/usr/bin:/bin:/usr/ucb:/usr/local/bin
 AC_PATH_PROG(vipath, vi, no, [$pathtmp])
@@ -203,9 +211,9 @@ if test "$nmh_cv_attvibug" = yes; then
   AC_DEFINE(ATTVIBUG)
 fi
 
-dnl ---------------
-dnl FIND MAIL SPOOL
-dnl ---------------
+dnl ----------------------------------------------------------
+dnl FIND MAIL SPOOL AND SEE IF WE NEED TO MAKE inc SETGID MAIL
+dnl ----------------------------------------------------------
 AC_CACHE_CHECK(where mail spool is located, nmh_cv_mailspool,
 [for mailspool in /var/mail        dnl
                   /var/spool/mail  dnl
@@ -219,6 +227,24 @@ nmh_cv_mailspool=$mailspool
 mailspool=$nmh_cv_mailspool
 AC_SUBST(mailspool)dnl
 
+dnl See whether the mail spool directory is world-writable.
+if test "$lspath" != "no" -a "$cutpath" != "no"; then
+  AC_CACHE_CHECK(whether the mail spool is world-writable, 
+		 nmh_cv_mailspool_world_writable,
+  [if test "`$lspath -dl $mailspool | $cutpath -c9`" = "-"; then
+    nmh_cv_mailspool_world_writable=no
+  else
+    nmh_cv_mailspool_world_writable=yes
+  fi])
+fi
+
+dnl ...If it's not, we need to #define MAILGROUP to 1 and make inc setgid mail.
+if test "$nmh_cv_mailspool_world_writable" = "no"; then
+  AC_DEFINE(MAILGROUP)
+  SETGID_MAIL=1
+fi
+AC_SUBST(SETGID_MAIL)dnl
+
 dnl ------------------
 dnl CHECK HEADER FILES
 dnl ------------------