- Support
yara-python
4.3.0
- CLI: Output an error message if no files are found at the
scan_path
- CLI: Do not output an empty dictionary when no emails could be parsed
- Pin
yara-python
version at4.2.3
- Require
mailsuite>=1.9.13
- Normalize the case of a header name when testing header values
- Require
mailsuite>=1.9.12
- Ignore all
dmarc
Authentication-Results
if multipledmarc
results are found
- Ignore all
- Add even more quote punctuation as password delimiters
- More quotation mark password delimiter variations
- Add possible password delimiters
- Start and end HTML tags
- Other forms of quotation marks used in various languages
- Fix issue where the
from_domain
rule meta key value was not split into a list as expected
- Add
|
and< >
as possible password delimiters
- Update minium
mailsuite
version to>=1.9.12
- Fix parsing of
Authentication-Results
andDKIM-Signature
headers when Windows line breaks (\r\n
) are used - Strip leading and trailing spaces from
DKIM-Signature
headerh=
list item
- Fix parsing of
- Fix testing in verbose mode
- Update minium
mailsuite
version to>=1.9.9
- Fix header and body separation when Windows line breaks (
\r\n
) are used
- Fix header and body separation when Windows line breaks (
- CLI changes
- Remove unused formats in verbose output
- Remove attachment payloads in verbose output
- Test results are now in JSON
- Using the verbose option in testing now is the same as normal operations, instead of outputting all results
- Fix: Other warnings were ignored when the
unexpected-attachment
warning was raised
- Increase minimum version requirement for
mailsuite
to1.9.8
- Fix parsing of email addresses in message
From
headers with encoded display names.
- Fix parsing of email addresses in message
- in the dictionary returned by
MailScanner.scan_email()
, rename["msg_from_domain"]["implicit_safe_domain"]
to["msg_from_domain"]["implicit_safe"]
Warning This release is a major rewrite that includes changes breaking existing use
- Logic changes
- Rules with a category of
safe
must have afrom_domain
meta
value for the category to apply- This logic replaces
trusted_domains_yara_safe_required
trusted_domain_yara_safe_required
, andauth_optional
removed from results
- This logic replaces
- The
auth_optional
rulemeta
key only applies to that rule - Warnings are located inside a
warnings
list in each match, instead of as averdict
- A rule category does not apply if one or more warning is raised
- Possible warnings include
domain-authentication-failed
- Authentication of the message From domain failedfrom-domain-mismatch
- The message From domain did not exactly match the value of themeta
keyfrom_domain
safe-rule-missing-from-domain
- The rule is missing afrom_domain
meta
key that is required for rules with thecategory
meta key set tosafe
unexpected-attachment
- An email win an attachment matched a rule with themeta
keyno attachment
orno_attachments
set totrue
- Possible warnings include
- A rule category does not apply if one or more warning is raised
- Trusted domains are now called implicit safe domains
- Rules with a category of
- API changes
trusted_domains
renamed toimplicit_safe_domains
trusted_domains_yara_safe_required
parameter removedinclude_sld_in_auth_check
parameter removed- Returned data structure changed (see docs for details)
- CLI changes
--trusted-domains
renamed to--implicit-safe-domains
--trusted-domains-yara
removed--sld
removed- Log output delimiter changed from
:
to|
to avoid conflicting with JSON
- Use email body content to brute force password-protected ZIPs
- Fix CLI log message output
- Bump
mailsuite
version requirement to>=1.9.7
- Bump
mailsuite
version requirement to>=1.9.6
- Require the
yara-python
version to be at least 4.2.3 to address an arbitrary code execution vulnerability
- Fix multiple ZIP scanning bugs
- Output passing results along with failing results when
/t
/--test
and-v/--verbose
options are passed to the CLI
- Add
msg_from_domain
to the dictionary returned byMailScanner.scan_email()
- Fix invalid
location
when an email has multiple attachments
- Bump
mailsuite
required version to>=1.9.5
- Fix
has_attachment
Boolean (PR #5)
- Update the docstring of
MailScanner.scan_email()
again
- Update the docstring of
MailScanner.scan_email()
- Fix bug where lists from empty files returned
[""]
instead of[]
- Add
has_attachment
Boolean to the dictionary returned byMailScanner.scan_email()
for easy troubleshooting of rules withno_attachment = true
set
- Fix
-b
/--raw-body
CLI option - Add
no_attachments
option for YARA rule meta sections
- Add
-r
/--raw-headers
and-b
/--raw-body
options to the CLI
- The
include_sld_in_auth_check
parameter inMailScanner.__init__()
is nowFalse
by default - Added
-s/--sld
and--max-zip-depth
options to the CLI - Removed CLI and installation documentation from
README.md
- Remove CLI environment variables
- Add CLI options
-m
and-o
- Only honor
auth_optional
rulemeta
value if rulemeta
valuecategory
issafe
- Fix attachment rules not being used in the CLI
- Major refactoring
- Many arguments added to
MailScanner.__init__()
or moved fromMailScanner.scan_email()
toMailScanner.__init__()
passwords
max_zip_depth
trusted_domains
trusted_domains_yara_safe_required
include_sld_in_auth_check
allow_multiple_authentication_results
use_authentication_results_original
- Instead of returning a list of matches,
MailScanner.scan_email()
now returns a dictionary with the following keysmatches
- The list of YARA matchescategories
- A deduplicated list of categories from thecategory
meta value in YARA rule matchestrusted_domain
- A boolean indicating if the authenticated from domain is in thetrusted_domains
listtrusted_domain_yara_safe_required
- A boolean indicating if the authenticated from domain is in thetrusted_domains_yara_safe_required
listauth_optional
- A boolean indicating if the from domain authentication check is optionalverdict
a verdict based on the above
- Many arguments added to
- Added new options to the CLI
- Pass
-
as the scan path to scan a single email from standard input (stdin) --passwords
- A path to a list of passwords to use when brute-forcing password-protected attachments--trusted-domains-yara
- A path to a list of from domains that also require a YARA safe match-t
--test
- Test rules based on verdicts matching the name of the folder a sample is in
- Pass
- Fix encrypted ZIP scanning
- Attempt to scan encrypted ZIP files
- Customizable password list
[None, "malware", "infected"]
is always included
- Customizable password list
- Fix typo in
MailScanner
docstring
- Fix PDF scanning bugs
- Bump
mailsuite
requirement to>=1.9.3
- Fix crash when parsing some
DKIM-Signature
headers - Fix
from_trusted_domain()
DMARC check - Don't convert plain text email bodies to markdown
- Always include
body_markdown
in parsed results - Decode utf-8 encoded
Subject
andThread-Topic
headers inheaders_str
- Silence noisy
mailparser
log output
- Fix crash when parsing some
- Remove some documentation from
README.md
, so the PyPI listing won't have outdated info - Add
Issues
andChangelog
URLs to the PyPI listing - Rename the
yaramail.cli
module toyaramail.cli
- Bump
mailsuite
dependency version to>=1.9.2
- Bump
mailsuite
dependency version to>=1.9.1
- Add warnings about
msgconvert
not being suitable for forensics
- Add warnings about
- Clean up
README.md
- Add
CHANGELOG.md
- Initial release