#!/usr/bin/perl # # spfd: Simple forking SPF query service daemon # # (C) 2005-2007 Julian Mehnle # 2003-2004 Meng Weng Wong # $Id: spfd 148 2006-06-17 21:50:57Z Julian Mehnle $ # ############################################################################## =head1 NAME spfd (using Mail::SPF) - Simple forking daemon to provide SPF query services =head1 VERSION 2.000 =head1 SYNOPSIS B B<--port>|B<-p> I [B<--set-user>|B<-u> I|I] [B<--set-group>|B<-g> I|I] [I] B B<--socket>|B<-s> I [B<--socket-user> I|I] [B<--socket-group> I|I] [B<--socket-perms> I] [B<--set-user>|B<-u> I|I] [B<--set-group>|B<-g> I|I] [I] B B<--version|-V> B B<--help> =head1 DESCRIPTION B is a simple forking Sender Policy Framework (SPF) query server. spfd receives and answers SPF requests on a TCP/IP or UNIX domain socket. For more information on SPF see L. The B<--port> form listens on a TCP/IP socket on the specified I. The default port is B<5970>. The B<--socket> form listens on a UNIX domain socket that is created with the specified I. The socket can be assigned specific user and group ownership with the B<--socket-user> and B<--socket-group> options, and specific filesystem permissions with the B<--socket-perms> option. Generally, spfd can be instructed with the B<--set-user> and B<--set-group> options to drop root privileges and change to another user and group before it starts listening for requests. The B<--version> form prints version information of spfd. The B<--help> form prints usage information for spfd. =head1 OPTIONS spfd takes any of the following I: =over =item B<--default-explanation> I =item B<--def-exp> I Use the specified I as the default explanation if the authority domain does not specify an explanation string of its own. =item B<--hostname> I Use I as the host name of the local system instead of auto-detecting it. =item B<--debug> Print out debug information about spfd's operation, incoming requests, and the responses sent. =back =head1 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 I