diff --git a/modules/user/user.install b/modules/user/user.install
index c93cf0e9eb3d1423d208828482b1fd584a633c8f..1f57dac91524696b6d1e0aabae07d1f81a99a693 100644
--- a/modules/user/user.install
+++ b/modules/user/user.install
@@ -124,7 +124,7 @@ function user_schema() {
       ),
       'mail' => array(
         'type' => 'varchar',
-        'length' => 64,
+        'length' => 254,
         'not null' => FALSE,
         'default' => '',
         'description' => "User's email address.",
@@ -478,6 +478,14 @@ function user_update_7004(&$sandbox) {
   }
 }
 
+/**
+ * Change the users table to allow longer email addresses - 254 characters instead of 64.
+ */
+function user_update_7005(&$sandbox) {
+  $schema = user_schema();
+  db_change_field('users', 'mail', 'mail', $schema['users']['fields']['mail']);
+}
+
 /**
  * @} End of "defgroup user-updates-6.x-to-7.x"
  * The next series of updates should start at 8000.
diff --git a/modules/user/user.module b/modules/user/user.module
index 66bdf17fece318207ccb2ee2f1f538305c796813..f56bbe29beebdcca31f976359b7bfb4dc8711b2d 100644
--- a/modules/user/user.module
+++ b/modules/user/user.module
@@ -14,7 +14,7 @@
 /**
  * Maximum length of user e-mail text field.
  */
-define('EMAIL_MAX_LENGTH', 64);
+define('EMAIL_MAX_LENGTH', 254);
 
 /**
  * Implement hook_help().