No description
Find a file
Steffen / ampoff 66a607ba9e
Merge pull request #89 from steffenfritz/feature/idempotent-release-job
Make release job idempotent: upload assets if release already exists
2026-04-07 20:54:49 +02:00
.github Make release job idempotent: upload assets if release already exists 2026-04-07 20:47:48 +02:00
.idea added a mod and sum file and some comments 2021-11-24 21:46:19 +01:00
resources Added logo 500px; credits to lignum5 2023-02-19 19:49:01 +01:00
vendor Closes #72 2026-03-15 18:25:46 +01:00
.gitignore Update .gitignore 2024-08-14 09:55:07 +02:00
asn.go preparing Debian package 2022-11-11 00:14:43 +01:00
asn_test.go added test files and test and build workflow due to OPENSSF 2024-07-28 20:26:10 +02:00
AUTHORS.rst Create AUTHORS.rst 2024-06-30 19:35:38 +02:00
bimi.go Add TLSRPT, BIMI, full DMARC parsing and TLS certificate details 2026-03-28 23:43:21 +01:00
blacklists.go Improve CLI output with structured formatting and --verbose flag 2026-03-29 13:21:15 +02:00
CHANGELOG Prepare release v2.0.0: update version strings, docs, and supported versions 2026-04-07 18:31:02 +02:00
checkversion.go Improve CLI output with structured formatting and --verbose flag 2026-03-29 13:21:15 +02:00
checkversion_test.go added test files and test and build workflow due to OPENSSF 2024-07-28 20:26:10 +02:00
connect.go added a mod and sum file and some comments 2021-11-24 21:46:19 +01:00
connect_test.go Fix multiple bugs found in code review 2026-03-28 23:22:33 +01:00
CONTRIBUTING.md Create CONTRIBUTING.md 2024-06-30 19:34:25 +02:00
dane.go Add DANE/TLSA check per MX host (RFC 6698, RFC 7672) 2026-03-31 21:27:16 +02:00
dkim.go closes #5 2022-02-16 23:18:10 +01:00
dmarc.go Closes #6 2023-05-14 01:34:48 +02:00
dns.go Add DANE/TLSA check per MX host (RFC 6698, RFC 7672) 2026-03-31 21:27:16 +02:00
dns_test.go Add DANE/TLSA check per MX host (RFC 6698, RFC 7672) 2026-03-31 21:27:16 +02:00
go.mod Closes #72 2026-03-15 18:25:46 +01:00
go.sum Closes #72 2026-03-15 18:25:46 +01:00
LICENSE added VRFY check 2023-02-15 23:24:44 +01:00
main.go Merge pull request #83 from steffenfritz/feature/extended-asn-info 2026-03-31 23:30:52 +02:00
Makefile Close #26 2025-11-23 22:20:58 +01:00
mtasts.go Fix multiple bugs found in code review 2026-03-28 23:22:33 +01:00
mxcheck.1 Prepare release v2.0.0: update version strings, docs, and supported versions 2026-04-07 18:31:02 +02:00
nfpm.yaml Add release packaging workflow for Linux .deb and macOS binary 2026-04-01 21:18:25 +02:00
openrelay.go Improve CLI output with structured formatting and --verbose flag 2026-03-29 13:21:15 +02:00
openrelay_test.go.GH_DISABLED Remoed two test files from GH repo due to GHs Action limitations 2024-08-15 14:52:29 +02:00
output.go Expose additional ASN fields from iptoasn lookup 2026-03-29 14:35:17 +02:00
output_test.go added test files and test and build workflow due to OPENSSF 2024-07-28 20:26:10 +02:00
README.md Prepare release v2.0.0: update version strings, docs, and supported versions 2026-04-07 18:31:02 +02:00
SECURITY.md Prepare release v2.0.0: update version strings, docs, and supported versions 2026-04-07 18:31:02 +02:00
smtpsmuggling.go Update man page 2025-11-24 14:00:14 +01:00
tlscheck.go Improve CLI output with structured formatting and --verbose flag 2026-03-29 13:21:15 +02:00
tlscheck_test.go.GH_DISABLED Remoed two test files from GH repo due to GHs Action limitations 2024-08-15 14:52:29 +02:00
tlsrpt.go Add TLSRPT, BIMI, full DMARC parsing and TLS certificate details 2026-03-28 23:43:21 +01:00
ui.go Improve CLI output with structured formatting and --verbose flag 2026-03-29 13:21:15 +02:00
versionmsg.go Prepare release v2.0.0: update version strings, docs, and supported versions 2026-04-07 18:31:02 +02:00

mxcheck logo

mxcheck is an info scanner for e-mail servers.

It checks

  • DNS records: A, MX, PTR, SPF, MTA-STS, DKIM, DMARC (fully parsed), TLSRPT, BIMI
  • DANE/TLSA records per MX host (RFC 6698, RFC 7672): usage, selector, matching type, certificate data
  • AS Number and AS Country
  • the support of StartTLS and the certificate
  • TLS certificate details on port 465: expiry date, Subject CN, Issuer CN, SANs
  • open ports: 25, 465, 587
  • if the service is listed by blacklists
  • if it leaks information by server string and VRFY command
  • if the e-mail server is vulnerable to SMTPSmuggling
  • and if the server is an open relay

You can set mailFrom, mailTo, the DNS server, DKIM selector and output a report in tsv format.

-b, --blacklist          Check if the service is on blacklists
-d, --dnsserver string   The dns server to be requested (default "8.8.8.8")
-g, --smuggle            Scan for SMTPSmuggling vulnerability
-p, --disable-port-scan  Disable SMTP port scan
-f, --mailfrom string    Set the mailFrom address (default "info@foo.wtf")
-t, --mailto string      Set the mailTo address (default "info@baz.wtf")
-n, --no-prompt          Answer yes to all questions
-s, --service string     The service host to check (mandatory flag)
-S, --dkim-selector      The DKIM selector. If set a dkim check is performed on the provided service domain
-V, --verbose            Show timestamps in output
-v, --version            Version and license
-u, --updatecheck        Check if a new version of mxcheck is available
-w, --write-tsv          Write tsv formated report to file

Version

v2.0.0

Go Report Card Go Reference License: GPL v3 Build status Reviewed by Hound OpenSSF Scorecard OpenSSF Best Practices

Kali

Installation

go install github.com/steffenfritz/mxcheck@v2.0.0

or

download a pre-compiled binary.

or

use Kali Linux repositories

Usage Example

./mxcheck -s 2600.com
./mxcheck -s 2600.com -v
./mxcheck -s 2600.com -d 8.8.8.8
./mxcheck -s 2600.com -n -f info@baz.com -t boss@foo.org -w -S default
./mxcheck -s 2600.com -n -f info@baz.com -t boss@foo.org -w -S default -b -g

asciicast

Check for authentication

There is no check whether the server needs authentication. However, you can do two runs:

The first one uses a from and to address outside the mail server's scope, e.g.:

./mxcheck -s example.com -f info@baz.com -t boss@foo.org

The second one uses a from and a to address from the mail server's scope, e.g.:

./mxcheck -s example.com -f info@example.com -t boss@example.com

If the first one returns Server is not an open relay and the second one returns Server is probably an open relay the server is not an open relay, but you can send mails from local to local addresses without authentication.

Documentation and contact

mxcheck has a man page :)

Furthermore, you can find a documentation and contact information here: https://mxcheck.fritz.wtf

The logo was created by Alex/Lignum5. Thanks, mate :)