diff --git a/mollom.admin.inc b/mollom.admin.inc
index b5f4995..99cc202 100644
--- a/mollom.admin.inc
+++ b/mollom.admin.inc
@@ -231,7 +231,7 @@ function mollom_admin_configure_form($form, &$form_state, $mollom_form = NULL) {
         // Textual analysis filters.
         $form['mollom']['checks'] = array(
           '#type' => 'checkboxes',
-          '#title' => t('Analyze text for'),
+          '#title' => t('Text analysis checks'),
           '#options' => array(
             'spam' => t('Spam'),
             'profanity' => t('Profanity'),
@@ -275,6 +275,24 @@ function mollom_admin_configure_form($form, &$form_state, $mollom_form = NULL) {
           ),
         );
 
+        $form['mollom']['strictness'] = array(
+          '#type' => 'radios',
+          '#title' => t('Text analysis accuracy'),
+          '#options' => array(
+            'high' => t('Strict'),
+            'medium' => t('Normal'),
+            'low' => t('Relaxed'),
+          ),
+          '#default_value' => $mollom_form['strictness'],
+          '#access' => $modes[MOLLOM_MODE_ANALYSIS],
+          // Only possible for forms protected via text analysis.
+          '#states' => array(
+            'visible' => array(
+              ':input[name="mollom[mode]"]' => array('value' => (string) MOLLOM_MODE_ANALYSIS),
+            ),
+          ),
+        );
+
         $form['mollom']['discard'] = array(
           '#type' => 'radios',
           '#title' => t('When text analysis identifies spam'),
@@ -295,6 +313,16 @@ function mollom_admin_configure_form($form, &$form_state, $mollom_form = NULL) {
         );
       }
 
+      $form['mollom']['rate_limit'] = array(
+        '#type' => 'select',
+        '#title' => t('Minimum period between posts'),
+        '#options' => drupal_map_assoc(array(0, 5, 10, 15, 20, 30, 40, 50, 60, 90, 120, 180, 300, 600, 900, 1200, 1800, 2700, 3600, 7200), 'format_interval'),
+        '#empty_value' => '',
+        '#empty_option' => t('- None -'),
+        '#default_value' => $mollom_form['rate_limit'],
+        '#description' => t('The minimum time interval between posts of the same author across all sites in the Mollom network.'),
+      );
+
       $form['actions']['submit'] = array(
         '#type' => 'submit',
         '#value' => t('Save'),
@@ -360,6 +388,10 @@ function mollom_admin_configure_form_submit($form, &$form_state) {
   }
   $mollom_form['enabled_fields'] = $enabled_fields;
 
+  if ($mollom_form['rate_limit'] === '') {
+    $mollom_form['rate_limit'] = NULL;
+  }
+
   $status = mollom_form_save($mollom_form);
   if ($status === SAVED_NEW) {
     drupal_set_message(t('The form protection has been added.'));
diff --git a/mollom.install b/mollom.install
index 3611bd1..0993a29 100644
--- a/mollom.install
+++ b/mollom.install
@@ -193,6 +193,18 @@ function mollom_schema() {
         'not null' => FALSE,
         'serialize' => TRUE,
       ),
+      'rate_limit' => array(
+        'description' => 'Rate limit for form submissions.',
+        'type' => 'int',
+        'not null' => FALSE,
+      ),
+      'strictness' => array(
+        'description' => 'Strictness of text analysis checks.',
+        'type' => 'varchar',
+        'length' => 8,
+        'not null' => TRUE,
+        'default' => 'medium',
+      ),
       'module' => array(
         'description' => 'Module name owning the form.',
         'type' => 'varchar',
@@ -790,3 +802,25 @@ function mollom_update_7009() {
     ));
   }
 }
+
+/**
+ * Add {mollom_form}.rate_limit and {mollom_form}.strictness columns.
+ */
+function mollom_update_7010() {
+  if (!db_field_exists('mollom_form', 'rate_limit')) {
+    db_add_field('mollom_form', 'rate_limit', array(
+      'description' => 'Rate limit for form submissions.',
+      'type' => 'int',
+      'not null' => FALSE,
+    ));
+  }
+  if (!db_field_exists('mollom_form', 'strictness')) {
+    db_add_field('mollom_form', 'strictness', array(
+      'description' => 'Strictness of text analysis checks.',
+      'type' => 'varchar',
+      'length' => 8,
+      'not null' => TRUE,
+      'default' => 'medium',
+    ));
+  }
+}
diff --git a/mollom.module b/mollom.module
index 8bc968e..3c272b4 100644
--- a/mollom.module
+++ b/mollom.module
@@ -850,6 +850,8 @@ function mollom_form_new($form_id = NULL) {
     'mode' => NULL,
     'checks' => array(),
     'enabled_fields' => array(),
+    'rate_limit' => NULL,
+    'strictness' => 'medium',
   );
   // Enable all fields for textual analysis by default.
   if (!empty($mollom_form['elements'])) {
@@ -1437,7 +1439,12 @@ function mollom_validate_analysis(&$form, &$form_state) {
   }
   $data['session_id'] = $form_state['mollom']['response']['session_id'];
   $data['checks'] = implode(',', $form_state['mollom']['checks']);
+  if (isset($form_state['mollom']['rate_limit'])) {
+    $data['rate_limit'] = $form_state['mollom']['rate_limit'];
+  }
+  $data['strictness'] = $form_state['mollom']['strictness'];
   $result = mollom('mollom.checkContent', $data);
+
   // Use all available data properties for log messages below.
   $data += $all_data;
 
@@ -1590,6 +1597,9 @@ function mollom_validate_captcha(&$form, &$form_state) {
   if (isset($all_data['honeypot'])) {
     $data['honeypot'] = $all_data['honeypot'];
   }
+  if (isset($form_state['mollom']['rate_limit'])) {
+    $data['rate_limit'] = $form_state['mollom']['rate_limit'];
+  }
   $result = mollom('mollom.checkCaptcha', $data);
   // Use all available data properties for log messages below.
   $data += $all_data;
