Index: wp-admin/about.php
===================================================================
--- wp-admin/about.php	(revision 25878)
+++ wp-admin/about.php	(working copy)
@@ -52,23 +52,36 @@
 			<p><?php _e( 'You&#8217;ll still need to click &#8220;Update Now&#8221; once WordPress 3.8 is released, but we&#8217;ve never had more confidence in that beautiful blue button.' ); ?></p>
 		</div>
 		<?php
-			$can_auto_update = wp_http_supports( 'ssl' );
+		if ( current_user_can( 'update_core' ) ) {
+			$future_minor_update = (object) array(
+				'current'       => $wp_version . '.1.next.minor',
+				'version'       => $wp_version . '.1.next.minor',
+				'php_version'   => $required_php_version,
+				'mysql_version' => $required_mysql_version,
+			);
+			require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
+			$updater = new WP_Automatic_Updater;
+			$can_auto_update = wp_http_supports( 'ssl' ) && $updater->should_update( 'core', $future_minor_update, ABSPATH );
+
 			if ( $can_auto_update ) {
-				require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
-				$upgrader = new WP_Automatic_Updater;
-				$future_minor_update = (object) array(
-					'current'       => $wp_version . '.1.next.minor',
-					'version'       => $wp_version . '.1.next.minor',
-					'php_version'   => $required_php_version,
-					'mysql_version' => $required_mysql_version,
-				);
-				$can_auto_update = $upgrader->should_update( 'core', $future_minor_update, ABSPATH );
+				echo '<p class="about-auto-update cool">' . __( 'This site <strong>is</strong> able to apply these updates automatically. Cool!' ). '</p>';
+
+			// If the updater is disabled entirely, don't show them anything.
+			} elseif ( ! $updater->is_disabled() ) {
+				echo '<p class="about-auto-update">';
+				// If this is is filtered to false, they won't get emails, so don't claim we will.
+				// Assumption: If the user can update core, they can see what the admin email is.
+
+				/** This filter is documented in wp-admin/includes/class-wp-upgrader.php */
+				if ( apply_filters( 'send_core_update_notification_email', true, $future_minor_update ) ) {
+					printf( __( 'This site <strong>is not</strong> able to apply these updates automatically. But we&#8217;ll email %s when there is a new security release.' ), esc_html( get_site_option( 'admin_email' ) ) );
+				} else {
+					_e( 'This site <strong>is not</strong> able to apply these updates automatically.' );
+				}
+				echo '</p>';
 			}
-			if ( $can_auto_update ) : ?>
-				<p class="about-auto-update cool"><?php _e( 'This site <strong>is</strong> able to apply these updates automatically. Cool!' ); ?></p>
-			<?php else : ?>
-				<p class="about-auto-update"><?php printf( __( 'This site <strong>is not</strong> able to apply these updates automatically. But we&#8217;ll email %s when there is a new security release.' ), esc_html( get_site_option( 'admin_email' ) ) ); ?></p>
-		<?php endif; ?>
+		}
+		?>
 	</div>
 </div>
 
Index: wp-admin/includes/class-wp-upgrader.php
===================================================================
--- wp-admin/includes/class-wp-upgrader.php	(revision 25878)
+++ wp-admin/includes/class-wp-upgrader.php	(working copy)
@@ -1739,7 +1739,7 @@
 		// If we can't do an auto core update, we may still be able to email the user.
 		if ( ! $skin->request_filesystem_credentials( false, $context ) || $this->is_vcs_checkout( $context ) ) {
 			if ( 'core' == $type )
-				$this->notify_core_update( $item );
+				$this->send_core_update_notification_email( $item );
 			return false;
 		}
 
@@ -1770,7 +1770,7 @@
 
 		if ( ! $update ) {
 			if ( 'core' == $type )
-				$this->notify_core_update( $item );
+				$this->send_core_update_notification_email( $item );
 			return false;
 		}
 
@@ -1798,11 +1798,7 @@
 	 *
 	 * @param object $item The update offer.
 	 */
-	protected function notify_core_update( $item ) {
-		// See if we need to notify users of a core update.
-		if ( empty( $item->notify_email ) )
-			return false;
-
+	protected function send_core_update_notification_email( $item ) {
 		$notify   = true;
 		$notified = get_site_option( 'auto_core_update_notified' );
 
@@ -1810,6 +1806,28 @@
 		if ( $notified && $notified['email'] == get_site_option( 'admin_email' ) && $notified['version'] == $item->current )
 			return false;
 
+		// See if we need to notify users of a core update.
+		$notify = ! empty( $item->notify_email );
+
+		/**
+		 * Whether to notify the site administrator of a new core update.
+		 *
+		 * By default, administrators are notified when the update offer received from WordPress.org
+		 * sets a particular flag. This allows for discretion in if and when to notify.
+		 *
+		 * This filter only fires once per release -- if the same email address was already
+		 * notified of the same new version, we won't repeatedly email the administrator.
+		 *
+		 * This filter is also used on about.php to check if a plugin has disabled these notifications.
+		 *
+		 * @since 3.7.0
+		 *
+		 * @param bool $notify Whether the site administrator is notified.
+		 * @param object $item The update offer.
+		 */
+		if ( ! apply_filters( 'send_core_update_notification_email', $notify, $item ) )
+			return false;
+
 		$this->send_email( 'manual', $item );
 		return true;
 	}
@@ -2127,11 +2145,11 @@
 		 * @since 3.7.0
 		 *
 		 * @param bool   $send        Whether to send the email. Default true.
-		 * @param string $type        The type of email to send. Can be one of 'success', 'fail', 'manual', 'critical'.
+		 * @param string $type        The type of email to send. Can be one of 'success', 'fail', 'critical'.
 		 * @param object $core_update The update offer that was attempted.
 		 * @param mixed  $result      The result for the core update. Can be WP_Error.
 		 */
-		if ( ! apply_filters( 'auto_core_update_send_email', true, $type, $core_update, $result ) )
+		if ( 'manual' !== $type && ! apply_filters( 'auto_core_update_send_email', true, $type, $core_update, $result ) )
 			return;
 
 		switch ( $type ) {
