diff --git a/modules/user/user.admin.inc b/modules/user/user.admin.inc
index 6ca330b..2409486 100644
--- a/modules/user/user.admin.inc
+++ b/modules/user/user.admin.inc
@@ -436,7 +436,15 @@ function user_admin_settings() {
     '#default_value' => variable_get('user_picture_guidelines', ''),
     '#description' => t("This text is displayed at the picture upload form in addition to the default guidelines. It's useful for helping or instructing your users."),
   );
-
+  // Default notifications address.
+  $form['mail_notification_address'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Notification e-mail address'),
+    '#default_value' => variable_get('mail_notification_address'),
+    '#description' => t("The e-mail address to be used as the 'from' address for all notifications. If <em>'Visitors, but administrator approval is required'</em> is selected above, a notification email will also be sent to this address for any new registrations. Leave empty to use the default system e-mail address <em>(%site-email).</em>", array('%site-email' => variable_get('site_mail'))),
+    '#size' => 30,
+    '#maxlength' => 255,
+  );
   $form['email_title'] = array(
     '#type' => 'item',
     '#title' => t('E-mails'),
diff --git a/modules/user/user.module b/modules/user/user.module
index 0ba9654..fbe3240 100644
--- a/modules/user/user.module
+++ b/modules/user/user.module
@@ -3626,14 +3626,25 @@ function _user_mail_notify($op, $account, $language = NULL) {
   // By default, we always notify except for canceled and blocked.
   $default_notify = ($op != 'status_canceled' && $op != 'status_blocked');
   $notify = variable_get('user_mail_' . $op . '_notify', $default_notify);
+  // Get the custom site notification email to use as the from email address
+  // if it has been set.
+  $site_mail = variable_get('mail_notification_address');
+  // If the custom site notification email has not been set, we use the site
+  // default for this.
+  if (empty($site_mail)) {
+    $site_mail = variable_get('site_mail');
+  }
+  if (empty($site_mail)) {
+    $site_mail = ini_get('sendmail_from');
+  }
   if ($notify) {
     $params['account'] = $account;
     $language = $language ? $language : user_preferred_language($account);
-    $mail = drupal_mail('user', $op, $account->mail, $language, $params);
+    $mail = drupal_mail('user', $op, $account->mail, $language, $params, $site_mail);
     if ($op == 'register_pending_approval') {
       // If a user registered requiring admin approval, notify the admin, too.
       // We use the site default language for this.
-      drupal_mail('user', 'register_pending_approval_admin', variable_get('site_mail', ini_get('sendmail_from')), language_default(), $params);
+      drupal_mail('user', 'register_pending_approval_admin', $site_mail, language_default(), $params);
     }
   }
   return empty($mail) ? NULL : $mail['result'];
diff --git a/modules/user/user.test b/modules/user/user.test
index 63143c3..adfa21b 100644
--- a/modules/user/user.test
+++ b/modules/user/user.test
@@ -49,6 +49,53 @@ class UserRegistrationTestCase extends DrupalWebTestCase {
     $this->assertFalse($new_user->status, 'New account is blocked until approved by an administrator.');
   }
 
+  /**
+   * Test user registration approval email is sent to an custom email
+   * address, if it is set.
+   */
+  function testNotificationEmailAddress() {
+    // Test that the Notification E-mail address field is on the config page.
+    $admin_user = $this->drupalCreateUser(array('administer users'));
+    $this->drupalLogin($admin_user);
+    $this->drupalGet('admin/config/people/accounts');
+    $this->assertRaw('id="edit-mail-notification-address"', 'Notification E-mail address field exists');
+    $this->drupalLogout();
+
+    // Test custom user registration approval email address(es).
+    // Allow users to register with admin approval.
+    variable_set('user_email_verification', TRUE);
+    variable_set('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL);
+    // Set the site and notification email addresses.
+    $server_address = $this->randomName() . '@example.com';
+    $notify_address = $this->randomName() . '@example.com';
+    variable_set('site_mail', $server_address);
+    variable_set('mail_notification_address', $notify_address);
+    // Register a new user account.
+    $edit = array();
+    $edit['name'] = $name = $this->randomName();
+    $edit['mail'] = $mail = $edit['name'] . '@example.com';
+    $this->drupalPost('user/register', $edit, t('Create new account'));
+    $subject = 'Account details for ' . $edit['name'] . ' at ' . variable_get('site_name', 'Drupal') . ' (pending admin approval)';
+    // Ensure that admin notification mail is sent to the configured
+    // Notification E-mail address.
+    $admin_mail = $this->drupalGetMails(array(
+      'id' => 'user_register_pending_approval_admin',
+      'to' => $notify_address,
+      'from' => $server_address,
+      'subject' => $subject,
+    ));
+    $this->assertTrue(count($admin_mail), 'New user mail to admin is sent to configured Notification E-mail address');
+    // Ensure that user notification mail is sent from the configured
+    // Notification E-mail address.
+    $user_mail = $this->drupalGetMails(array(
+      'id' => 'user_register_pending_approval',
+      'to' => $edit['mail'],
+      'from' => $notify_address,
+      'subject' => $subject,
+    ));
+    $this->assertTrue(count($user_mail), 'New user mail to user is sent from configured Notification E-mail address');
+  }
+
   function testRegistrationWithoutEmailVerification() {
     // Don't require e-mail verification.
     variable_set('user_email_verification', FALSE);
