# ConvertFrom-MailAuthenticationRecordDmarc

Returns structured RFC compliant object for a DMARC record

Source: https://maester.dev/docs/commands/ConvertFrom-MailAuthenticationRecordDmarc

## SYNOPSIS

Returns structured RFC compliant object for a DMARC record

## SYNTAX

```powershell
ConvertFrom-MailAuthenticationRecordDmarc [-DomainName] <String> [[-DnsServerIpAddress] <IPAddress>]
 [-QuickTimeout] [-NoHostsFile] [-ProgressAction <ActionPreference>] [<CommonParameters>]
```

## DESCRIPTION

Adapted from:
- https://cloudbrothers.info/en/powershell-tip-resolve-spf/
- https://github.com/cisagov/ScubaGear/blob/main/PowerShell/ScubaGear/Modules/Providers/ExportEXOProvider.psm1
- https://xkln.net/blog/getting-mx-spf-dmarc-dkim-and-smtp-banners-with-powershell/
- DMARC https://datatracker.ietf.org/doc/html/rfc7489

```
record               : v=DMARC1; p=reject; pct=100; rua=mailto:itex-rua@microsoft.com; ruf=mailto:itex-ruf@microsoft.com; fo=1
valid                : True
policy               : reject
policySubdomain      :
percentage           : 100
reportAggregate      : {DMARCRecordUri}
reportForensic       : {DMARCRecordUri}
reportFailure        : {1}
reportFailureFormats : {afrf}
reportFrequency      : 86400
alignmentDkim        : r
alignmentSpf         : r
version              : DMARC1
warnings             : {sp: No subdomain policy set, adkim: No DKIM alignment set, defaults to relaxed, aspf: No SPF alignment set, defaults to relaxed, ri: No
report interval set, defaults to 86400 seconds…}
```

## EXAMPLES

### EXAMPLE 1

```powershell
ConvertFrom-MailAuthenticationRecordDmarc -DomainName "microsoft.com"
```

Returns [DMARCRecord] for a valid record, "Failure to obtain record" when no matching record exists, "Invalid DMARC record" when a matching record fails validation, or "DNS lookup unavailable" when DNS resolution fails for another reason

## PARAMETERS

### -DomainName

Domain name to check.

```yaml
Type: String
Parameter Sets: (All)
Aliases:

Required: True
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```

### -DnsServerIpAddress

DNS-server to use for lookup.

```yaml
Type: IPAddress
Parameter Sets: (All)
Aliases:

Required: False
Position: 2
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```

### -QuickTimeout

Use a shorter timeout value for the DNS lookup.

```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases:

Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
```

### -NoHostsFile

Ignore hosts file for domain lookup.

```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases:

Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
```

### -ProgressAction

Determines how PowerShell responds to progress updates generated by a script, cmdlet, or provider, such as the progress bars generated by Write-Progress.

```yaml
Type: ActionPreference
Parameter Sets: (All)
Aliases: proga

Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```

### CommonParameters

This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216).

## INPUTS

## OUTPUTS

### ConvertFrom-MailAuthenticationRecordDmarc.DMARCRecord

### System.String
## NOTES

## RELATED LINKS

[https://maester.dev/docs/commands/ConvertFrom-MailAuthenticationRecordDmarc](https://maester.dev/docs/commands/ConvertFrom-MailAuthenticationRecordDmarc)
