diff --git a/multi_smtp.admin.inc b/multi_smtp.admin.inc
index c16e7d6..9488cb1 100644
--- a/multi_smtp.admin.inc
+++ b/multi_smtp.admin.inc
@@ -23,6 +23,10 @@ function multi_smtp_server_list() {
   while ($row = db_fetch_object($result)) {
     $operations = l(t('edit'), 'admin/settings/multi_smtp/edit/'. $row->smtp_id);
     $operations .= '&nbsp;&nbsp;' . l(t('delete'), 'admin/settings/multi_smtp/delete/'. $row->smtp_id);
+    if ($row->wait_timestamp > 0) {
+      // Add link for re-activating a server.
+      $operations .= '&nbsp;&nbsp;' . l(t('re-activate'), 'admin/settings/multi_smtp/reactivate/' . $row->smtp_id);
+    }
 
     // If the server has a wait_timestamp value, it is currently inactive
     if ($row->wait_timestamp > 0) {
@@ -323,6 +327,52 @@ function multi_smtp_server_confirm_delete_submit($form, &$form_state) {
   $form_state['redirect'] = "admin/settings/multi_smtp";
 }
 
+/**
+ * Re-activates a given server ID.
+ *
+ * If the given server ID is valid, load the server details and return the
+ * confirmation form. Otherwise, display error message and return to list.
+ */
+function multi_smtp_server_reactivate($server_id = NULL) {
+  $server_details = db_fetch_object(db_query('SELECT smtp_id, smtp_nickname, smtp_host FROM {multi_smtp_servers} WHERE smtp_id = %d', $server_id));
+
+  if (is_object($server_details) && is_numeric($server_details->smtp_id)) {
+    return drupal_get_form('multi_smtp_server_confirm_reactivate', $server_details);
+  }
+  else {
+    drupal_set_message(t('That server does not exist.'), 'error');
+    drupal_goto('admin/settings/multi_smtp');
+  }
+}
+
+/**
+ * Builds the confirmation form for re-activating a given SMTP server.
+ */
+function multi_smtp_server_confirm_reactivate(&$form_state, $server_details) {
+  $form = array();
+  $form['#server'] = $server_details;
+  return confirm_form(
+    $form,
+    t('Are you sure you want to re-activate the server %smtp_nickname (%smtp_host)?', array('%smtp_nickname' => $server_details->smtp_nickname, '%smtp_host' => $server_details->smtp_host)),
+    'admin/settings/multi_smtp',
+    t('This action cannot be undone.'),
+    t('Re-activate'),
+    t('Cancel'),
+    'multi_smtp_server_confirm_reactivate');
+}
+
+/**
+ * Processes multi_smtp_server_confirm_reactivate form submissions.
+ */
+function multi_smtp_server_confirm_reactivate_submit($form, &$form_state) {
+  drupal_set_message(t('The server has been re-activated.'));
+
+  $server_details = $form['#server'];
+
+  db_query('UPDATE {multi_smtp_servers} SET wait_timestamp = 0 WHERE smtp_id = %d', $server_details->smtp_id);
+
+  $form_state['redirect'] = "admin/settings/multi_smtp";
+}
 
 /**
  * Form to send a test message on a server
diff --git a/multi_smtp.install b/multi_smtp.install
index 097ded7..52b3db5 100644
--- a/multi_smtp.install
+++ b/multi_smtp.install
@@ -147,6 +147,14 @@ function multi_smtp_update_6001() {
 
 
 /**
+ * Reset the menu router cache to add re-activate path.
+ */
+function multi_smtp_update_6002() {
+  return array();
+}
+
+
+/**
  * Implementation of hook_requirements().
  * Check for the required 3rd party libaries
  *
diff --git a/multi_smtp.module b/multi_smtp.module
index 0e3c430..43b8020 100644
--- a/multi_smtp.module
+++ b/multi_smtp.module
@@ -135,6 +135,14 @@ function multi_smtp_menu() {
     'access arguments' => array('administer multi_smtp'),
     'file' => 'multi_smtp.admin.inc',
   );
+  $items['admin/settings/multi_smtp/reactivate/%'] = array(
+    'title' => 'Re-activate SMTP Server',
+    'type' => MENU_CALLBACK,
+    'page callback' => 'multi_smtp_server_reactivate',
+    'page arguments' => array(4),
+    'access arguments' => array('administer site configuration'),
+    'file' => 'multi_smtp.admin.inc',
+  );
   $items['admin/settings/multi_smtp/list'] = array(
     'title' => 'Server List',
     'description' => 'List, add and edit servers.',
