diff --git a/libmisc/chkname.c b/libmisc/chkname.c
index 64b5c5f..53b6a8f 100755
--- a/libmisc/chkname.c
+++ b/libmisc/chkname.c
@@ -51,8 +51,12 @@ static bool is_valid_name (const char *name)
 	/*
 	 * User/group names must match [a-z_][a-z0-9_-]*[$]
 	 */
-	if (('\0' == *name) ||
-	    !((('a' <= *name) && ('z' >= *name)) || ('_' == *name))) {
+	if (('\0' == *name) || !(
+			#ifdef CASESAFE
+			(('A' <= *name) && ('Z' >= *name)) ||
+			#endif
+			(('a' <= *name) && ('z' >= *name)) || ('_' == *name)
+	)) {
 		return false;
 	}
 
diff --git a/configure.ac b/configure.ac
index 41068a5..3fd22c6 100755
--- a/configure.ac
+++ b/configure.ac
@@ -203,6 +203,11 @@ if test "$ac_cv_func_ruserok" = "yes"; then
 	AC_DEFINE(RUSEROK, 0, [Define to the ruserok() "success" return value (0 or 1).])
 fi
 
+AC_ARG_ENABLE([casesafe],
+	[AC_HELP_STRING([--enable-casesafe], [enables case safe usernames])],
+	[AC_DEFINE(CASESAFE, 1)]
+)
+
 AC_ARG_ENABLE(shadowgrp,
 	[AC_HELP_STRING([--enable-shadowgrp], [enable shadow group support @<:@default=yes@:>@])],
 	[case "${enableval}" in
diff --git a/configure b/configure
index 9b0ee3f..8707472 100755
--- a/configure
+++ b/configure
@@ -809,6 +809,7 @@ ac_user_opts='
 enable_option_checking
 enable_silent_rules
 enable_dependency_tracking
+enable_casesafe
 enable_shared
 enable_static
 enable_maintainer_mode
@@ -1497,6 +1498,7 @@ Optional Features:
                           optimize for fast installation [default=yes]
   --disable-libtool-lock  avoid locking (might break parallel builds)
   --disable-largefile     omit support for large files
+  --enable-casesafe       enables case safe usernames
   --enable-shadowgrp      enable shadow group support [default=yes]
   --enable-man            regenerate roff man pages from Docbook [default=no]
   --enable-account-tools-setuid
@@ -15141,6 +15142,11 @@ $as_echo "#define RUSEROK 0" >>confdefs.h
 
 fi
 
+# Check whether --enable-casesafe was given.
+if test "${enable_casesafe+set}" = set; then :
+  enableval=$enable_casesafe; $as_echo "#define CASESAFE 1" >>confdefs.h
+fi
+
 # Check whether --enable-shadowgrp was given.
 if test "${enable_shadowgrp+set}" = set; then :
   enableval=$enable_shadowgrp; case "${enableval}" in
