---
name: "Mail::SpamAssassin::Plugin::MIMEEval"
section: "3pm"
platform: "linux"
package: "spamassassin"
version: "4.0.2-3"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/Mail::SpamAssassin::Plugin::MIMEEval"
---

# Mail::SpamAssassin::Plugin::MIMEEval(3pm)

perform various tests against MIME structure and body

## NAME

MIMEEval - perform various tests against MIME structure and body

## SYNOPSIS

```
  loadplugin    Mail::SpamAssassin::Plugin::MIMEEval
  body NAME_OF_RULE  eval:check_for_mime
  body NAME_OF_RULE  eval:check_for_mime_html
  body NAME_OF_RULE  eval:check_for_mime_html_only
  body NAME_OF_RULE  eval:check_mime_multipart_ratio
  body NAME_OF_RULE  eval:check_msg_parse_flags
  body NAME_OF_RULE  eval:check_for_ascii_text_illegal
  body NAME_OF_RULE  eval:check_abundant_unicode_ratio
  body NAME_OF_RULE  eval:check_for_faraway_charset
  body NAME_OF_RULE  eval:check_for_uppercase
  body NAME_OF_RULE  eval:check_ma_non_text
  body NAME_OF_RULE  eval:check_base64_length
  body NAME_OF_RULE  eval:check_qp_ratio
```

## DESCRIPTION

Perform various tests against MIME structure and body.

- has\_check\_for\_ascii\_text\_illegal

  Adds capability check for "if **can()**" for check\_for\_ascii\_text\_illegal

- check\_for\_ascii\_text\_illegal

  If a MIME part claims to be text/plain or text/plain;charset=us-ascii and the Content-Transfer-Encoding is 7bit (either explicitly or by default), then we should enforce the actual text being only TAB, NL, SPACE through TILDE, i.e. all 7bit characters excluding NO-WS-CTL (per RFC-2822).

  All mainstream MTA's get this right.

- has\_check\_abundant\_unicode\_ratio

  Adds capability check for "if **can()**" for check\_abundant\_unicode\_ratio

- check\_abundant\_unicode\_ratio

  A MIME part claiming to be text/plain and containing Unicode characters must be encoded as quoted-printable or base64, or use UTF data coding (typically with 8bit encoding).  Any message in 7bit or 8bit encoding containing (HTML) Unicode entities will not render them as Unicode, but literally.

  Thus a few such sequences might occur on a mailing list of developers discussing such characters, but a message with a high density of such characters is likely spam.

- has\_check\_qp\_ratio

  Adds capability check for "if **can()**" for check\_qp\_ratio

- check\_qp\_ratio

  Takes a min ratio to use in eval to see if there is an spamminess to the ratio of  quoted printable to total bytes in an email.
