diff --git wp-admin/includes/schema.php wp-admin/includes/schema.php
index 90ab600..97a9330 100644
--- wp-admin/includes/schema.php
+++ wp-admin/includes/schema.php
@@ -377,10 +377,6 @@ function populate_options() {
 	'comments_notify' => 1,
 	'posts_per_rss' => 10,
 	'rss_use_excerpt' => 0,
-	'mailserver_url' => 'mail.example.com',
-	'mailserver_login' => 'login@example.com',
-	'mailserver_pass' => 'password',
-	'mailserver_port' => 110,
 	'default_category' => 1,
 	'default_comment_status' => 'open',
 	'default_ping_status' => 'open',
@@ -484,6 +480,9 @@ function populate_options() {
 
 	// 3.5
 	'link_manager_enabled' => 0,
+
+	// 3.8
+	'post_by_email_enabled' => 0,
 	);
 
 	// 3.3
diff --git wp-admin/includes/upgrade.php wp-admin/includes/upgrade.php
index bd250ae..623bb5a 100644
--- wp-admin/includes/upgrade.php
+++ wp-admin/includes/upgrade.php
@@ -408,10 +408,15 @@ function upgrade_all() {
 	if ( $wp_current_db_version < 26148 )
 		upgrade_372();
 
+	if ( $wp_current_db_version < 26148 )
+		upgrade_380();
+
 	maybe_disable_link_manager();
 
 	maybe_disable_automattic_widgets();
 
+	maybe_disable_post_by_email();
+
 	update_option( 'db_version', $wp_db_version );
 	update_option( 'db_upgraded', true );
 }
@@ -1238,6 +1243,18 @@ function upgrade_372() {
 }
 
 /**
+ * Execute changes made in WordPress 3.8.
+ *
+ * @since 3.8.0
+ */
+function upgrade_380() {
+	global $wp_current_db_version;
+
+	if ( $wp_current_db_version < 26148 && 'mail.example.com' != get_option( 'mailserver_url' ) )
+		update_option( 'post_by_email_enabled', 1 ); // Previously set to 0 by populate_options()
+}
+
+/**
  * Execute network level changes
  *
  * @since 3.0.0
@@ -2002,6 +2019,18 @@ function maybe_disable_link_manager() {
 }
 
 /**
+ * Disables Post by Email options if, at the time of upgrade, the settings have not been changed from original defaults.
+ *
+ * @since 3.8.0
+ */
+function maybe_disable_post_by_email() {
+	global $wp_current_db_version;
+
+	if ( $wp_current_db_version >= 26148 && get_option( 'post_by_email_enabled' ) && 'mail.example.com' == get_option( 'mailserver_url' ) )
+		update_option( 'post_by_email_enabled', 0 );
+}
+
+/**
  * Runs before the schema is upgraded.
  *
  * @since 2.9.0
diff --git wp-admin/options-writing.php wp-admin/options-writing.php
index b3f9f68..a04edb2 100644
--- wp-admin/options-writing.php
+++ wp-admin/options-writing.php
@@ -28,15 +28,6 @@ get_current_screen()->add_help_tab( array(
 	'content' => '<p>' . __('Press This is a bookmarklet that makes it easy to blog about something you come across on the web. You can use it to just grab a link, or to post an excerpt. Press This will even allow you to choose from images included on the page and use them in your post. Just drag the Press This link on this screen to your bookmarks bar in your browser, and you&#8217;ll be on your way to easier content creation. Clicking on it while on another website opens a popup window with all these options.') . '</p>',
 ) );
 
-/** This filter is documented in wp-admin/options.php */
-if ( apply_filters( 'enable_post_by_email_configuration', true ) ) {
-	get_current_screen()->add_help_tab( array(
-		'id'      => 'options-postemail',
-		'title'   => __( 'Post Via Email' ),
-		'content' => '<p>' . __( 'Post via email settings allow you to send your WordPress install an email with the content of your post. You must set up a secret e-mail account with POP3 access to use this, and any mail received at this address will be posted, so it&#8217;s a good idea to keep this address very secret.' ) . '</p>',
-	) );
-}
-
 /**
  * Toggle site update services configuration functionality.
  *
@@ -132,39 +123,9 @@ do_settings_fields('writing', 'remote_publishing'); // A deprecated section.
 
 <?php
 /** This filter is documented in wp-admin/options.php */
-if ( apply_filters( 'enable_post_by_email_configuration', true ) ) {
-?>
-<h3 class="title"><?php _e('Post via e-mail') ?></h3>
-<p><?php printf(__('To post to WordPress by e-mail you must set up a secret e-mail account with POP3 access. Any mail received at this address will be posted, so it&#8217;s a good idea to keep this address very secret. Here are three random strings you could use: <kbd>%s</kbd>, <kbd>%s</kbd>, <kbd>%s</kbd>.'), wp_generate_password(8, false), wp_generate_password(8, false), wp_generate_password(8, false)) ?></p>
-
-<table class="form-table">
-<tr valign="top">
-<th scope="row"><label for="mailserver_url"><?php _e('Mail Server') ?></label></th>
-<td><input name="mailserver_url" type="text" id="mailserver_url" value="<?php form_option('mailserver_url'); ?>" class="regular-text code" />
-<label for="mailserver_port"><?php _e('Port') ?></label>
-<input name="mailserver_port" type="text" id="mailserver_port" value="<?php form_option('mailserver_port'); ?>" class="small-text" />
-</td>
-</tr>
-<tr valign="top">
-<th scope="row"><label for="mailserver_login"><?php _e('Login Name') ?></label></th>
-<td><input name="mailserver_login" type="text" id="mailserver_login" value="<?php form_option('mailserver_login'); ?>" class="regular-text ltr" /></td>
-</tr>
-<tr valign="top">
-<th scope="row"><label for="mailserver_pass"><?php _e('Password') ?></label></th>
-<td>
-<input name="mailserver_pass" type="text" id="mailserver_pass" value="<?php form_option('mailserver_pass'); ?>" class="regular-text ltr" />
-</td>
-</tr>
-<tr valign="top">
-<th scope="row"><label for="default_email_category"><?php _e('Default Mail Category') ?></label></th>
-<td>
-<?php
-wp_dropdown_categories(array('hide_empty' => 0, 'name' => 'default_email_category', 'orderby' => 'name', 'selected' => get_option('default_email_category'), 'hierarchical' => true));
-?>
-</td>
-</tr>
-<?php do_settings_fields('writing', 'post_via_email'); ?>
-</table>
+if ( get_option( 'post_by_email_enabled' ) && apply_filters( 'enable_post_by_email_configuration', true ) ) { ?>
+<h3 class="title"><?php _e( 'Post via e-mail' ) ?></h3>
+<p><?php _e( 'This functionality is no longer packaged with WordPress.  To continue using it, please install the <a href="http://wordpress.org/plugins/post-by-email">Post By Email plugin</a>.' ); ?></p>
 <?php } ?>
 
 <?php
diff --git wp-includes/default-filters.php wp-includes/default-filters.php
index b6c7527..f70458c 100644
--- wp-includes/default-filters.php
+++ wp-includes/default-filters.php
@@ -301,4 +301,7 @@ add_filter( 'heartbeat_nopriv_received', 'wp_auth_check', 10, 2 );
 add_filter( 'authenticate', 'wp_authenticate_username_password',  20, 3 );
 add_filter( 'authenticate', 'wp_authenticate_spam_check',         99    );
 
+// If the upgrade hasn't run yet, assume the post by mail options are set.
+add_filter( 'default_option_post_by_email_enabled', '__return_true' );
+
 unset($filter, $action);
diff --git wp-includes/formatting.php wp-includes/formatting.php
index 56aac4c..116703d 100644
--- wp-includes/formatting.php
+++ wp-includes/formatting.php
@@ -2849,7 +2849,6 @@ function sanitize_option($option, $value) {
 		case 'medium_size_h':
 		case 'large_size_w':
 		case 'large_size_h':
-		case 'mailserver_port':
 		case 'comment_max_links':
 		case 'page_on_front':
 		case 'page_for_posts':
@@ -2901,9 +2900,6 @@ function sanitize_option($option, $value) {
 
 		case 'date_format':
 		case 'time_format':
-		case 'mailserver_url':
-		case 'mailserver_login':
-		case 'mailserver_pass':
 		case 'upload_path':
 			$value = strip_tags( $value );
 			$value = wp_kses_data( $value );
diff --git wp-mail.php wp-mail.php
index 550c28c..15d37be 100644
--- wp-mail.php
+++ wp-mail.php
@@ -1,8 +1,13 @@
 <?php
 /**
- * Gets the email message from the user's mailbox to add as
- * a WordPress post. Mailbox connection information must be
- * configured under Settings > Writing
+ * This file is deprecated and has been replaced by the
+ * plugin Post By Email.  Instead of loading wp-mail.php to
+ * trigger the "wp-mail.php" action, you should trigger it
+ * yourself, either in a plugin/theme hook or via wp_cron.
+ *
+ * For more information:
+ * http://wordpress.org/plugins/post-by-email/
+ * http://codex.wordpress.org/Category:WP-Cron_Functions
  *
  * @package WordPress
  */
@@ -10,248 +15,12 @@
 /** Make sure that the WordPress bootstrap has run before continuing. */
 require(dirname(__FILE__) . '/wp-load.php');
 
-/** This filter is documented in wp-admin/options.php */
-if ( ! apply_filters( 'enable_post_by_email_configuration', true ) )
-	wp_die( __( 'This action has been disabled by the administrator.' ) );
-
-/**
+/** Show an error in debug mode if this file is loaded directly.  **/
+_doing_it_wrong( 'wp-mail.php', __( "This file is deprecated and should not be called directly.  Schedule the action 'wp-mail.php' instead." ), '3.8' );
+ 
+ /**
  * Fires to allow a plugin to do a complete takeover of Post by Email.
  *
  * @since 2.9.0
  */
-do_action( 'wp-mail.php' );
-
-/** Get the POP3 class with which to access the mailbox. */
-require_once( ABSPATH . WPINC . '/class-pop3.php' );
-
-/** Only check at this interval for new messages. */
-if ( !defined('WP_MAIL_INTERVAL') )
-	define('WP_MAIL_INTERVAL', 300); // 5 minutes
-
-$last_checked = get_transient('mailserver_last_checked');
-
-if ( $last_checked )
-	wp_die(__('Slow down cowboy, no need to check for new mails so often!'));
-
-set_transient('mailserver_last_checked', true, WP_MAIL_INTERVAL);
-
-$time_difference = get_option('gmt_offset') * HOUR_IN_SECONDS;
-
-$phone_delim = '::';
-
-$pop3 = new POP3();
-
-if ( !$pop3->connect( get_option('mailserver_url'), get_option('mailserver_port') ) || !$pop3->user( get_option('mailserver_login') ) )
-	wp_die( esc_html( $pop3->ERROR ) );
-
-$count = $pop3->pass( get_option('mailserver_pass') );
-
-if( false === $count )
-	wp_die( esc_html( $pop3->ERROR ) );
-
-if( 0 === $count ) {
-	$pop3->quit();
-	wp_die( __('There doesn&#8217;t seem to be any new mail.') );
-}
-
-for ( $i = 1; $i <= $count; $i++ ) {
-
-	$message = $pop3->get($i);
-
-	$bodysignal = false;
-	$boundary = '';
-	$charset = '';
-	$content = '';
-	$content_type = '';
-	$content_transfer_encoding = '';
-	$post_author = 1;
-	$author_found = false;
-	$dmonths = array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
-	foreach ($message as $line) {
-		// body signal
-		if ( strlen($line) < 3 )
-			$bodysignal = true;
-		if ( $bodysignal ) {
-			$content .= $line;
-		} else {
-			if ( preg_match('/Content-Type: /i', $line) ) {
-				$content_type = trim($line);
-				$content_type = substr($content_type, 14, strlen($content_type) - 14);
-				$content_type = explode(';', $content_type);
-				if ( ! empty( $content_type[1] ) ) {
-					$charset = explode('=', $content_type[1]);
-					$charset = ( ! empty( $charset[1] ) ) ? trim($charset[1]) : '';
-				}
-				$content_type = $content_type[0];
-			}
-			if ( preg_match('/Content-Transfer-Encoding: /i', $line) ) {
-				$content_transfer_encoding = trim($line);
-				$content_transfer_encoding = substr($content_transfer_encoding, 27, strlen($content_transfer_encoding) - 27);
-				$content_transfer_encoding = explode(';', $content_transfer_encoding);
-				$content_transfer_encoding = $content_transfer_encoding[0];
-			}
-			if ( ( $content_type == 'multipart/alternative' ) && ( false !== strpos($line, 'boundary="') ) && ( '' == $boundary ) ) {
-				$boundary = trim($line);
-				$boundary = explode('"', $boundary);
-				$boundary = $boundary[1];
-			}
-			if (preg_match('/Subject: /i', $line)) {
-				$subject = trim($line);
-				$subject = substr($subject, 9, strlen($subject) - 9);
-				// Captures any text in the subject before $phone_delim as the subject
-				if ( function_exists('iconv_mime_decode') ) {
-					$subject = iconv_mime_decode($subject, 2, get_option('blog_charset'));
-				} else {
-					$subject = wp_iso_descrambler($subject);
-				}
-				$subject = explode($phone_delim, $subject);
-				$subject = $subject[0];
-			}
-
-			// Set the author using the email address (From or Reply-To, the last used)
-			// otherwise use the site admin
-			if ( ! $author_found && preg_match( '/^(From|Reply-To): /', $line ) ) {
-				if ( preg_match('|[a-z0-9_.-]+@[a-z0-9_.-]+(?!.*<)|i', $line, $matches) )
-					$author = $matches[0];
-				else
-					$author = trim($line);
-				$author = sanitize_email($author);
-				if ( is_email($author) ) {
-					echo '<p>' . sprintf(__('Author is %s'), $author) . '</p>';
-					$userdata = get_user_by('email', $author);
-					if ( ! empty( $userdata ) ) {
-						$post_author = $userdata->ID;
-						$author_found = true;
-					}
-				}
-			}
-
-			if (preg_match('/Date: /i', $line)) { // of the form '20 Mar 2002 20:32:37'
-				$ddate = trim($line);
-				$ddate = str_replace('Date: ', '', $ddate);
-				if (strpos($ddate, ',')) {
-					$ddate = trim(substr($ddate, strpos($ddate, ',') + 1, strlen($ddate)));
-				}
-				$date_arr = explode(' ', $ddate);
-				$date_time = explode(':', $date_arr[3]);
-
-				$ddate_H = $date_time[0];
-				$ddate_i = $date_time[1];
-				$ddate_s = $date_time[2];
-
-				$ddate_m = $date_arr[1];
-				$ddate_d = $date_arr[0];
-				$ddate_Y = $date_arr[2];
-				for ( $j = 0; $j < 12; $j++ ) {
-					if ( $ddate_m == $dmonths[$j] ) {
-						$ddate_m = $j+1;
-					}
-				}
-
-				$time_zn = intval($date_arr[4]) * 36;
-				$ddate_U = gmmktime($ddate_H, $ddate_i, $ddate_s, $ddate_m, $ddate_d, $ddate_Y);
-				$ddate_U = $ddate_U - $time_zn;
-				$post_date = gmdate('Y-m-d H:i:s', $ddate_U + $time_difference);
-				$post_date_gmt = gmdate('Y-m-d H:i:s', $ddate_U);
-			}
-		}
-	}
-
-	// Set $post_status based on $author_found and on author's publish_posts capability
-	if ( $author_found ) {
-		$user = new WP_User($post_author);
-		$post_status = ( $user->has_cap('publish_posts') ) ? 'publish' : 'pending';
-	} else {
-		// Author not found in DB, set status to pending. Author already set to admin.
-		$post_status = 'pending';
-	}
-
-	$subject = trim($subject);
-
-	if ( $content_type == 'multipart/alternative' ) {
-		$content = explode('--'.$boundary, $content);
-		$content = $content[2];
-		// match case-insensitive content-transfer-encoding
-		if ( preg_match( '/Content-Transfer-Encoding: quoted-printable/i', $content, $delim) ) {
-			$content = explode($delim[0], $content);
-			$content = $content[1];
-		}
-		$content = strip_tags($content, '<img><p><br><i><b><u><em><strong><strike><font><span><div>');
-	}
-	$content = trim($content);
-
-	/**
-	 * Filter the original content of the email.
-	 *
-	 * Give Post-By-Email extending plugins full access to the content, either
-	 * the raw content, or the content of the last quoted-printable section.
-	 *
-	 * @since 2.8.0
-	 *
-	 * @param string $content The original email content.
-	 */
-	$content = apply_filters( 'wp_mail_original_content', $content );
-
-	if ( false !== stripos($content_transfer_encoding, "quoted-printable") ) {
-		$content = quoted_printable_decode($content);
-	}
-
-	if ( function_exists('iconv') && ! empty( $charset ) ) {
-		$content = iconv($charset, get_option('blog_charset'), $content);
-	}
-
-	// Captures any text in the body after $phone_delim as the body
-	$content = explode($phone_delim, $content);
-	$content = empty( $content[1] ) ? $content[0] : $content[1];
-
-	$content = trim($content);
-
-	/**
-	 * Filter the content of the post submitted by email before saving.
-	 *
-	 * @since 1.2.0
-	 *
-	 * @param string $content The email content.
-	 */
-	$post_content = apply_filters( 'phone_content', $content );
-
-	$post_title = xmlrpc_getposttitle($content);
-
-	if ($post_title == '') $post_title = $subject;
-
-	$post_category = array(get_option('default_email_category'));
-
-	$post_data = compact('post_content','post_title','post_date','post_date_gmt','post_author','post_category', 'post_status');
-	$post_data = wp_slash($post_data);
-
-	$post_ID = wp_insert_post($post_data);
-	if ( is_wp_error( $post_ID ) )
-		echo "\n" . $post_ID->get_error_message();
-
-	// We couldn't post, for whatever reason. Better move forward to the next email.
-	if ( empty( $post_ID ) )
-		continue;
-
-	/**
-	 * Fires after a post submitted by email is published.
-	 *
-	 * @since 1.2.0
-	 *
-	 * @param int $post_ID The post ID.
-	 */
-	do_action( 'publish_phone', $post_ID );
-
-	echo "\n<p>" . sprintf(__('<strong>Author:</strong> %s'), esc_html($post_author)) . '</p>';
-	echo "\n<p>" . sprintf(__('<strong>Posted title:</strong> %s'), esc_html($post_title)) . '</p>';
-
-	if(!$pop3->delete($i)) {
-		echo '<p>' . sprintf(__('Oops: %s'), esc_html($pop3->ERROR)) . '</p>';
-		$pop3->reset();
-		exit;
-	} else {
-		echo '<p>' . sprintf(__('Mission complete. Message <strong>%s</strong> deleted.'), $i) . '</p>';
-	}
-
-}
-
-$pop3->quit();
+do_action( 'wp-mail.php' );
\ No newline at end of file
