Provided by: spf-tools-perl_3.20240206-1_all bug

NAME

       spfquery - (Mail::SPF) - Checks if a given set of e-mail parameters matches a domain's SPF policy

VERSION

       2.501

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

       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
       <https://tools.ietf.org/html/rfc7208>.

   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 resonsible address)
       e-mail address, depending on the value of the --scope option (which defaults to mfrom if omitted).

       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).

       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.

   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).

       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.

       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.

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 (currently ignored)
       --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
       Several options that were supported by earlier versions of spfquery  are  considered  black  magic  (i.e.
       potentially   dangerous   for   the   innocent   user)   and  are  thus  disabled  by  default.   If  the
       Mail::SPF::BlackMagic Perl module is installed, they may be enabled by specifying --enable-black-magic.

       --max-dns-interactive-terms n
           Evaluate a maximum of n DNS-interactive mechanisms and modifiers per SPF check.  Defaults to 10.   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 to 10.  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

         Result    | Exit code
        -----------+-----------
         pass      |     0
         fail      |     1
         softfail  |     2
         neutral   |     3
         permerror |     4
         temperror |     5
         none      |     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
           •   A  new  preferred  usage style for performing individual SPF checks has been introduced.  The new
               style accepts a unified --identity option and an optional --scope option 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 --debug and --(no-)sanitize options are currently ignored by this version of spfquery.   They
               will again be supported in the future.

           •   Several  features  that were supported by earlier versions of spfquery are 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 options  | Preferred options
                ---------------------+-----------------------------
                 --sender, -s        | --mfrom
                 --ipv4, -i          | --ip-address, --ip
                 --name              | --hostname
                 --max-lookup-count, | --max-dns-interactive-terms
                   --max-lookup      |
                 --rcpt-to, -r       | --authorize-mxes-for
                 --trusted           | --tfwl

SEE ALSO

       Mail::SPF, spfd(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>.

perl v5.38.2                                       2024-02-09                                       SPFQUERY(1p)