SPFQUERY(1)
๐ฆ SPFQUERY(1) ๐ฆ
okay so this is the SPFQUERY(1) manual page for spfquery, straight out of the User Contributed Perl Documentation, and itโs here to spill the tea on SPF checks. bestie, itโs giving โsmall tool, big DNS energyโ ๐
.
๐ NAME ๐
spfquery โ (Mail::SPF) โ checks if a given set of e-mail parameters matches a domainโs SPF policy.
๐ธ VERSION ๐ธ
2.501 โ yes, thatโs the version, no cap.
โจ SYNOPSIS โจ
๐ Preferred usage ๐
spfquery [--versions|-v 1|2|1,2] [--scope|-s helo|mfrom|pra]
--identity|--id identity --ip-address|--ip ip-address
[--helo-identity|--helo-id helo-identity] [OPTIONS]
spfquery [--versions|-v 1|2|1,2] [--scope|-s helo|mfrom|pra]
--file|-f filename|- [OPTIONS]
๐ Legacy usage ๐
spfquery --helo helo-identity --ip-address|--ip ip-address [OPTIONS]
spfquery --mfrom mfrom-identity --ip-address|--ip ip-address [--helo
helo-identity] [OPTIONS]
spfquery --pra pra-identity --ip-address|--ip ip-address [OPTIONS]
๐ฆ Other usage ๐ฆ
spfquery --version|-V
spfquery --help
๐ DESCRIPTION ๐
okay so spfquery checks if a given set of e-mail parameters (e.g., the SMTP senderโs IP address) matches the responsible domainโs Sender Policy Framework (SPF) policy. For more information on SPF see <http://www.openspf.org>. literally the whole vibe is โdoes this sender pass the domainโs SPF check or not?โ ๐ฅ
๐ Preferred Usage ๐
The following usage forms are preferred over the legacy forms used by older spfquery versions:
The --identity form checks if the given ip-address is an authorized SMTP sender for the given helo hostname, mfrom envelope sender e-mail address, or pra (so-called purported responsible address) e-mail address, depending on the value of the --scope option (which defaults to mfrom if omitted). slay, unified identity energy โจ
The --file form reads ip-address identity [helo-identity] tuples from the file with the specified filename, or from standard input if filename is -, and checks them against the specified scope (mfrom by default). batch mode, but make it cute ๐
Both forms support an optional --versions option, which specifies a comma-separated list of the SPF version numbers of SPF records that may be used. 1 means that v=spf1 records should be used. 2 means that spf2.0 records should be used. Defaults to 1,2, i.e., uses any SPF records that are available. Records of a higher version are preferred. higher version gets main character energy, periodt ๐
๐ Legacy Usage ๐
spfquery versions before 2.500 featured the following usage forms, which are discouraged but still supported for backwards compatibility:
The --helo form checks if the given ip-address is an authorized SMTP sender for the HELO hostname given as the identity (so-called โHELOโ check). lowkey old-school, but still here ๐ซถ
The --mfrom form checks if the given ip-address is an authorized SMTP sender for the envelope sender email-address (or domain) given as the identity (so-called โMAIL FROMโ check). If a domain is given instead of an e-mail address, postmaster will be substituted for the localpart. yes bestie, postmaster is the understudy ๐
The --pra form checks if the given ip-address is an authorized SMTP sender for the PRA (Purported Responsible Address) e-mail address given as the identity.
๐ฆ Other Usage ๐ฆ
The --version form prints version information of spfquery. The --help form prints usage information for spfquery. tiny but iconic commands ๐
โจ OPTIONS โจ
๐ Standard Options ๐
The preferred and legacy forms optionally take any of the following OPTIONS:
--default-explanation string,--def-exp stringโ use the specified string as the default explanation if the authority domain does not specify an explanation string of its own.--hostname hostnameโ use hostname as the host name of the local system instead of auto-detecting it.--keep-comments,--no-keep-commentsโ do (not) print any comments found when reading from a file or from standard input.--sanitize,--no-sanitizeโ (currently ignored) do (not) sanitize the output by condensing consecutive white-space into a single space and replacing non-printable characters with question marks. Enabled by default.--debugโ (currently ignored) print out debug information.
๐ฎ Black Magic Options ๐ฎ
โ ๏ธ black magic warning, bestie: several options that were supported by earlier versions ofspfqueryare considered black magic (i.e. potentially dangerous for the innocent user) and are thus disabled by default. If theMail::SPF::BlackMagicPerl module is installed, they may be enabled by specifying--enable-black-magic. handle with care, fr fr ๐
--max-dns-interactive-terms nโ evaluate a maximum of n DNS-interactive mechanisms and modifiers per SPF check. Defaults to10. Do not override the default unless you know what you are doing!--max-name-lookups-per-term nโ perform a maximum of n DNS name look-ups per mechanism or modifier. Defaults to10. Do not override the default unless you know what you are doing!--authorize-mxes-for email-address|domain,...โ consider all the MXes of the comma-separated list of email-addresses and domains as inherently authorized.--tfwlโ perform"trusted-forwarder.org"accreditation checking.--guess spf-termsโ use spf-terms as a default record if no SPF record is found.--local spf-termsโ process spf-terms as local policy before resorting to a default result (the implicit or explicit"all"mechanism at the end of the domainโs SPF record). For example, this could be used for white-listing oneโs secondary MXes:"mx:mydomain.example.org".--override domain=spf-record,--fallback domain=spf-recordโ set overrides and fallbacks. Each option can be specified multiple times. For example:
--override example.org='v=spf1 -all'
--override '*.example.net'='v=spf1 a mx -all'
--fallback example.com='v=spf1 -all'
๐ RESULT CODES ๐
passโ the specified IP address is an authorized SMTP sender for the identity.failโ the specified IP address is not an authorized SMTP sender for the identity.softfailโ the specified IP address is not an authorized SMTP sender for the identity, however the authority domain is still testing out its SPF policy.neutralโ the identityโs authority domain makes no assertion about the status of the IP address.permerrorโ a permanent error occurred while evaluating the authority domainโs policy (e.g., a syntax error in the SPF record). Manual intervention is required from the authority domain.temperrorโ a temporary error occurred while evaluating the authority domainโs policy (e.g., a DNS error). Try again later.noneโ there is no applicable SPF policy for the identity domain.
๐ง EXIT CODES ๐ง
Hereโs the result-to-exit-code mapping, bestie:
passโ0failโ1softfailโ2neutralโ3permerrorโ4temperrorโ5noneโ6
๐ EXAMPLES ๐
spfquery --scope mfrom --id user@example.com --ip 1.2.3.4
spfquery --file test_data
echo "127.0.0.1 user@example.com helohost.example.com" | spfquery -f -
๐ฅ COMPATIBILITY ๐ฅ
spfquery has undergone the following interface changes compared to earlier versions:
2.500 โ the big glow-up:
- A new preferred usage style for performing individual SPF checks has been introduced. The new style accepts a unified
--identityoption and an optional--scopeoption that specifies the type (scope) of the identity. In contrast, the legacy usage style requires a separate usage form for every supported scope. See โPreferred usageโ and โLegacy usageโ for details. - The former
"unknown"and"error"result codes have been renamed to"permerror"and"temperror", respectively, in order to comply with RFC 4408 terminology. - SPF checks with an empty identity are no longer supported. In the case of an empty
"MAIL FROM"SMTP transaction parameter, perform a check with the"helo"scope directly. - The
--debugand--(no-)sanitizeoptions are currently ignored by this version ofspfquery. They will again be supported in the future. - Several features that were supported by earlier versions of
spfqueryare considered black magic and thus are now disabled by default. See โBlack Magic Optionsโ. - Several option names have been deprecated. This is a list of them and their preferred synonyms:
- Deprecated:
--sender, -sโ Preferred:--mfrom - Deprecated:
--ipv4, -iโ Preferred:--ip-address,--ip - Deprecated:
--nameโ Preferred:--hostname - Deprecated:
--max-lookup-count,--max-lookupโ Preferred:--max-dns-interactive-terms - Deprecated:
--rcpt-to, -rโ Preferred:--authorize-mxes-for - Deprecated:
--trustedโ Preferred:--tfwl
- Deprecated:
๐ SEE ALSO ๐
Mail::SPFspfd(8)<http://tools.ietf.org/html/rfc4408>
๐ AUTHORS ๐
This version of spfquery is a complete rewrite by Julian Mehnle <julian@mehnle.net>, based on an earlier version written by Meng Weng Wong <mengwong+spf@pobox.com> and Wayne Schlitt <wayne@schlitt.net>. give them their flowers, bestie ๐
okay thatโs the whole page, bestie ๐ โ it came from perl v5.42.0, dated 2024-11-07, and it is the SPFQUERY(1) manual. go check those SPF policies, periodt ๐
โจ
๐ฆ where this page comes from
- opensuse-leap 16.0: perl-Mail-SPF 3.202.406.170-bp160.1.11 ยท BSD-3-Clause
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms