spfd.mail-spf-query-perl8p
Simple forking daemon to provide spf query services
Usage
spfd --port
port
[{--set-user
uid | username}]
[{--set-group
gid | groupname}]
spfd --socket
filename
[{--socket-user
uid | username}]
[{--socket-group
gid | groupname}]
[--socket-perms
octal-perms]
[{--set-user
uid | username}]
[{--set-group
gid | groupname}]
spfd --help
Version
2006-02-07
Overview
spfd is a simple forking Sender Policy Framework (SPF) query proxy server. spfd receives and answers SPF query requests on a TCP/IP or UNIX domain socket.
The --port form listens on a TCP/IP socket on the specified port. The default port is 5970.
The --socket form listens on a UNIX domain socket that is created with the specified filename. The socket can be assigned specific user and group ownership with the --socket-user and --socket-group options, and specific filesystem permissions with the --socket-perms option.
Generally, spfd can be instructed with the --set-user and --set-group options to drop root privileges and change to another user and group before it starts listening for requests.
The --help form prints usage information for spfd.
Request
A request consists of a series of lines delimited by \x0A (LF) characters (or whatever your system considers a newline). Each line must be of the form key=value, where the following keys are required:
|
The sender IP address. |
|---|---|
|
The envelope sender address (from the SMTP |
|
The envelope sender hostname (from the SMTP |
Response
spfd responds to query requests with similar series of lines of the form key=value. The most important response keys are:
result-
The result of the SPF query:
- pass
-
The specified IP address is an authorized mailer for the sender domain/address.
- fail
-
The specified IP address is not an authorized mailer for the sender domain/address.
- softfail
-
The specified IP address is not an authorized mailer for the sender domain/address, however the domain is still in the process of transitioning to SPF.
- neutral
-
The sender domain makes no assertion about the status of the IP address.
- unknown
-
The sender domain has a syntax error in its SPF record.
- error
-
A temporary DNS error occurred while resolving the sender policy. Try again later.
- none
-
There is no SPF record for the sender domain.
smtp_comment-
The text that should be included in the receiver's SMTP response.
header_comment-
The text that should be included as a comment in the message's
"Received-SPF:"header.
spf_record-
The SPF record of the envelope sender domain.
For the description of other response keys see Mail::SPF::Query.
For more information on SPF see <http://www.openspf.org>.
Examples
A running spfd could be tested using the "netcat" utility like this:
$ echo -e "ip=11.22.33.44\[email protected]\nhelo=spammer.example.net\n" | nc localhost 5970result=neutralsmtp_comment=Please see http://spf.pobox.com/why.html?sender=user%40pobox.com&ip=11.22.33.44&receiver=localhostheader_comment=localhost: 11.22.33.44 is neither permitted nor denied by domain of [email protected]guess=neutralsmtp_guess=header_guess=guess_tf=neutralsmtp_tf=header_tf=spf_record=v=spf1 ?all