diff --git a/Makefile b/Makefile
index 4ab5ad84e23877b46539394640264d6abb62dd35..f5f0205e5a854345234afff0856bbe95663961df 100644
--- a/Makefile
+++ b/Makefile
@@ -142,13 +142,6 @@ ifeq ($(OSARCH),linux-gnu)
   endif
 endif
 
-ID=id
-
-ifeq ($(OSARCH),SunOS)
-  M4=/usr/local/bin/m4
-  ID=/usr/xpg4/bin/id
-endif
-
 ASTCFLAGS+=-pipe -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations $(DEBUG)
 
 ifeq ($(AST_DEVMODE),yes)
diff --git a/configure b/configure
index 9a42f379bcdc3f5b841961efcba09e45fb2b26de..cf5665c06d1dd7f022b0411e0cfd8a169b0c8b5d 100755
--- a/configure
+++ b/configure
@@ -682,6 +682,7 @@ GREP
 FIND
 COMPRESS
 BASENAME
+ID
 DIRNAME
 LN
 DOT
@@ -5094,6 +5095,47 @@ echo "${ECHO_T}no" >&6; }
 fi
 
 
+# Extract the first word of "id", so it can be a program name with args.
+set dummy id; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_path_ID+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $ID in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ID="$ID" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_ID="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_path_ID" && ac_cv_path_ID=":"
+  ;;
+esac
+fi
+ID=$ac_cv_path_ID
+if test -n "$ID"; then
+  { echo "$as_me:$LINENO: result: $ID" >&5
+echo "${ECHO_T}$ID" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
 # Extract the first word of "dirname", so it can be a program name with args.
 set dummy dirname; ac_word=$2
 { echo "$as_me:$LINENO: checking for $ac_word" >&5
@@ -30341,6 +30383,7 @@ GREP!$GREP$ac_delim
 FIND!$FIND$ac_delim
 COMPRESS!$COMPRESS$ac_delim
 BASENAME!$BASENAME$ac_delim
+ID!$ID$ac_delim
 DIRNAME!$DIRNAME$ac_delim
 LN!$LN$ac_delim
 DOT!$DOT$ac_delim
@@ -30357,7 +30400,6 @@ PBX_GNUTLS!$PBX_GNUTLS$ac_delim
 GSM_LIB!$GSM_LIB$ac_delim
 GSM_INCLUDE!$GSM_INCLUDE$ac_delim
 PBX_GSM!$PBX_GSM$ac_delim
-IKSEMEL_LIB!$IKSEMEL_LIB$ac_delim
 _ACEOF
 
   if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
@@ -30399,6 +30441,7 @@ _ACEOF
 ac_delim='%!_!# '
 for ac_last_try in false false false false false :; do
   cat >conf$$subs.sed <<_ACEOF
+IKSEMEL_LIB!$IKSEMEL_LIB$ac_delim
 IKSEMEL_INCLUDE!$IKSEMEL_INCLUDE$ac_delim
 PBX_IKSEMEL!$PBX_IKSEMEL$ac_delim
 IMAP_TK_LIB!$IMAP_TK_LIB$ac_delim
@@ -30495,7 +30538,6 @@ ALLOCA!$ALLOCA$ac_delim
 EGREP!$EGREP$ac_delim
 LIBOBJS!$LIBOBJS$ac_delim
 POW_LIB!$POW_LIB$ac_delim
-GC_CFLAGS!$GC_CFLAGS$ac_delim
 _ACEOF
 
   if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
@@ -30537,6 +30579,7 @@ _ACEOF
 ac_delim='%!_!# '
 for ac_last_try in false false false false false :; do
   cat >conf$$subs.sed <<_ACEOF
+GC_CFLAGS!$GC_CFLAGS$ac_delim
 GC_LDFLAGS!$GC_LDFLAGS$ac_delim
 GSM_INTERNAL!$GSM_INTERNAL$ac_delim
 KDEINIT!$KDEINIT$ac_delim
@@ -30558,7 +30601,7 @@ CURL_LIB!$CURL_LIB$ac_delim
 LTLIBOBJS!$LTLIBOBJS$ac_delim
 _ACEOF
 
-  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 19; then
+  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 20; then
     break
   elif $ac_last_try; then
     { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
diff --git a/configure.ac b/configure.ac
index dfc75e93153e5a6f4ad50103064d9f5bc6cd3268..f6c066802afd96a2de3e347ded217a059f39b720 100644
--- a/configure.ac
+++ b/configure.ac
@@ -134,6 +134,7 @@ AC_PATH_PROG([AR], [ar], :)
 AC_PATH_PROG([FIND], [find], :)
 AC_PATH_PROG([COMPRESS], [compress], :)
 AC_PATH_PROG([BASENAME], [basename], :)
+AC_PATH_PROG([ID], [id], :)
 AC_PATH_PROG([DIRNAME], [dirname], :)
 AC_PATH_PROG([SHELL], [sh], :)
 AC_PATH_PROG([LN], [ln], :)
diff --git a/makeopts.in b/makeopts.in
index b3d07a0e42b4abd714706c9af382b2e4eb62dac9..2167696b1365d97a4b0a1fb0ed29e4ad30731fba 100644
--- a/makeopts.in
+++ b/makeopts.in
@@ -13,6 +13,7 @@ RANLIB=@RANLIB@
 FIND=@FIND@
 COMPRESS=@COMPRESS@
 BASENAME=@BASENAME@
+ID=@ID@
 SHELL=@SHELL@
 LN=@LN@
 QTMOC=@QTMOC@