Get-MailRecords

1.1.3

Performs DNS lookups for mail-related records (A, MX, NS, SPF, DMARC, DKIM) on a given domain, email address, or URL. Supports TXT, CNAME, and BOTH record types, DKIM auto-discovery, pipeline/bulk input, and CSV/JSON export.

Minimum PowerShell version

5.1

Installation Options

Copy and Paste the following command to install this package using PowerShellGet More Info

Install-Module -Name Get-MailRecords

Copy and Paste the following command to install this package using Microsoft.PowerShell.PSResourceGet More Info

Install-PSResource -Name Get-MailRecords

You can deploy this package directly to Azure Automation. Note that deploying packages with dependencies will deploy all the dependencies to Azure Automation. Learn More

Manually download the .nupkg file to your system's default download location. Note that the file won't be unpacked, and won't include any dependencies. Learn More

Owners

Copyright

(c) 2023 Dan Casmas. Licensed under the GNU General Public License v3.0.

Package Details

Author(s)

  • Dan Casmas

Tags

DNS Mail Email SPF DMARC DKIM MX NS DomainHealth EmailSecurity Networking CrossPlatform

Functions

Get-MailRecords

Dependencies

This module has no dependencies.

Release Notes

## v1.1.2 — 2026-03-20

### Bug Fixes
- **Fixed terminating error when using `-RecordType CNAME`**
 `$RecordTypeTest` was assigned as a bare `[string]` for single record types
 (TXT or CNAME). When piped into `ForEach-Object`, the pipeline-unwrapped
 value failed parameter binding on the `-Type [string]` argument of `Get-SPF`,
 throwing: *"Cannot convert value to type System.String."*
 `$RecordTypeTest` is now always cast to `@(...)`, consistent with the `BOTH`
 branch. Affected all invocations with `-RecordType CNAME` or explicit
 `-RecordType TXT`.

- **Replaced `Write-Warning` with `Write-Verbose` for missing MX records**
 Non-mail subdomains (e.g. landing pages, tracking links) legitimately have no
 MX records. The previous `WARNING: No MX records found` message was alarming
 and misleading for these cases. The message is now emitted via `Write-Verbose`
 and visible only when `-Verbose` is passed. The output object still reflects
 `MX = $false` as before.

### Tests
- Added `gmr.Tests.ps1` (Pester v5) covering:
 - No terminating error on `-RecordType CNAME` with no records present
 - Output object returned with `SPF_CNAME`, `DMARC_CNAME`, `DKIM_CNAME`,
   and `MX` all set to `$false` when nothing is found
 - No `WarningRecord` emitted for missing MX on non-mail subdomains
 - CNAME → SPF resolution returns the expected `CNAME -> target : record` string
 - `-RecordType BOTH` returns exactly two output objects (TXT then CNAME)
 - `-RecordType TXT` default behaviour is unaffected (regression guard)

---

## v1.1.1
- Minor fix release (see prior history).

## v1.1.0
- Added `-DkimSelectors` parameter (alias `-dkim`) to allow runtime override of
 the DKIM auto-discovery selector list without editing the script.
- Improved parameter ordering (Sub/JustSub grouped, Selector/DkimSelectors grouped).
- Fixed misleading HelpMessages and comment-based help.
- Removed duplicate example.
- All aliases documented in Description and Notes.

FileList

Version History

Version Downloads Last updated
1.1.3 (current version) 3 3/20/2026