Index: spamassassin-3.4.1/lib/Mail/SpamAssassin/Conf.pm
===================================================================
--- spamassassin-3.4.1.orig/lib/Mail/SpamAssassin/Conf.pm
+++ spamassassin-3.4.1/lib/Mail/SpamAssassin/Conf.pm
@@ -3931,7 +3931,7 @@ This option gives the password used by t
 
 Whether to call the services_authorized_for_username plugin hook in BayesSQL.
 If the hook does not determine that the user is allowed to use bayes or is
-invalid then then database will not be initialized.
+invalid then the database will not be initialized.
 
 NOTE: By default the user is considered invalid until a plugin returns
 a true value.  If you enable this, but do not have a proper plugin
Index: spamassassin-3.4.1/lib/Mail/SpamAssassin/Plugin/DCC.pm
===================================================================
--- spamassassin-3.4.1.orig/lib/Mail/SpamAssassin/Plugin/DCC.pm
+++ spamassassin-3.4.1/lib/Mail/SpamAssassin/Plugin/DCC.pm
@@ -1088,3 +1088,4 @@ sub plugin_report {
 }
 
 1;
+
Index: spamassassin-3.4.1/lib/Mail/SpamAssassin/Plugin/DNSEval.pm
===================================================================
--- spamassassin-3.4.1.orig/lib/Mail/SpamAssassin/Plugin/DNSEval.pm
+++ spamassassin-3.4.1/lib/Mail/SpamAssassin/Plugin/DNSEval.pm
@@ -328,6 +328,7 @@ This checks all the from addrs domain na
 =back
 
 =cut
+
 sub check_rbl_from_domain {
   my ($self, $pms, $rule, $set, $rbl_server, $subtest) = @_;
   _check_rbl_addresses($self, $pms, $rule, $set, $rbl_server, $subtest, $_[1]->all_from_addrs_domains());
Index: spamassassin-3.4.1/lib/Mail/SpamAssassin/Plugin/MIMEEval.pm
===================================================================
--- spamassassin-3.4.1.orig/lib/Mail/SpamAssassin/Plugin/MIMEEval.pm
+++ spamassassin-3.4.1/lib/Mail/SpamAssassin/Plugin/MIMEEval.pm
@@ -15,6 +15,25 @@
 # limitations under the License.
 # </@LICENSE>
 
+=head1 NAME
+
+Mail::SpamAssassin::Plugin::MIMEEval - perform MIME sanity tests of messages
+
+=head1 SYNOPSIS
+
+  loadplugin Mail::SpamAssassin::Plugin::MIMEEval
+
+  body MULTIPART_ALT_NON_TEXT     eval:check_ma_non_text()
+
+  body MIME_HTML_ONLY             eval:check_for_mime_html_only()
+  describe MIME_HTML_ONLY         Message only has text/html MIME parts
+
+=head1 DESCRIPTION
+
+Utility functions for examining various MIME encoded message components.
+
+=cut
+
 package Mail::SpamAssassin::Plugin::MIMEEval;
 
 use strict;
@@ -69,6 +88,7 @@ sub are_more_high_bits_set {
 
   ($numlos <= $numhis && $numhis > 3);
 }
+
 =over 4
 
 =item has_check_for_ascii_text_illegal
@@ -148,6 +168,31 @@ sub check_for_faraway_charset {
   0;
 }
 
+=item check_for_mime
+
+Check for various MIME properties.
+
+Use in rules such as:
+
+  rawbody MIME_BASE64_BLANKS      eval:check_for_mime('mime_base64_blanks')
+  describe MIME_BASE64_BLANKS     Extra blank lines in base64 encoding
+
+  mime_base64_count
+  mime_base64_encoded_text
+  mime_body_html_count
+  mime_body_text_count
+  mime_faraway_charset
+  mime_missing_boundary
+  mime_multipart_alternative
+  mime_multipart_ratio
+  mime_qp_count
+  mime_qp_long_line
+  mime_qp_ratio
+  mime_ascii_text_illegal
+  mime_text_unicode_ratio
+
+=cut
+
 sub check_for_mime {
   my ($self, $pms, undef, $test) = @_;
 
@@ -166,7 +211,12 @@ sub check_for_mime_html {
   return ($pms->{mime_body_html_count} > 0);
 }
 
-# HTML without some other type of MIME text part
+=item check_for_mime_html_only
+
+Check for messages containing only text/html body parts
+
+=cut
+
 sub check_for_mime_html_only {
   my ($self, $pms) = @_;
 
@@ -474,6 +524,7 @@ sub _check_attachments {
 Adds capability check for "if can()" for check_qp_ratio
 
 =cut
+
 sub has_check_qp_ratio { 1 }
 
 =item check_qp_ratio
@@ -484,6 +535,7 @@ quoted printable to total bytes in an em
 =back
 
 =cut
+
 sub check_qp_ratio {
   my ($self, $pms, undef, $min) = @_;
 
