Just one more...
I've found it useful to have remote_host available in my pre-conection
plugin (specifically for enforcing concurrency limits specified in a
rule based on host patterns). Attached is the patch I have applied to
make this possible.
Now I'm off to bed!
-Jared
Index: qpsmtpd-forkserver
===================================================================
--- qpsmtpd-forkserver (revision 967)
+++ qpsmtpd-forkserver (working copy)
@@ -246,8 +246,13 @@
# get local/remote hostname, port and ip address
my ($port, $iaddr, $lport, $laddr, $nto_iaddr, $nto_laddr) = Qpsmtpd::TcpServer::lrpip($server, $client, $hisaddr);
+ # set enviroment variables
+ ($ENV{TCPLOCALIP}, $ENV{TCPREMOTEIP}, $ENV{TCPREMOTEHOST})
+ = Qpsmtpd::TcpServer::tcpenv($nto_laddr, $nto_iaddr);
+
my ($rc, @msg) = $qpsmtpd->run_hooks("pre-connection",
remote_ip => $nto_iaddr,
+ remote_host => $ENV{TCPREMOTEHOST},
remote_port => $port,
local_ip => $nto_laddr,
local_port => $lport,
@@ -296,9 +301,6 @@
::log(LOGINFO, "Connection Timed Out");
exit; };
- # set enviroment variables
- ($ENV{TCPLOCALIP}, $ENV{TCPREMOTEIP}, $ENV{TCPREMOTEHOST}) = Qpsmtpd::TcpServer::tcpenv($nto_laddr, $nto_iaddr);
-
# don't do this!
#$0 = "qpsmtpd-forkserver: $ENV{TCPREMOTEIP} / $ENV{TCPREMOTEHOST}";
Index: qpsmtpd-prefork
===================================================================
--- qpsmtpd-prefork (revision 967)
+++ qpsmtpd-prefork (working copy)
@@ -647,10 +647,15 @@
my %children;
shmem_opt(\%children, undef, $$, $iaddr);
+ # set enviroment variables
+ ($ENV{TCPLOCALIP}, $ENV{TCPREMOTEIP}, $ENV{TCPREMOTEHOST})
+ = Qpsmtpd::TcpServer::tcpenv($nto_laddr, $nto_iaddr);
+
my ($rc, @msg) =
$qpsmtpd->run_hooks(
"pre-connection",
remote_ip => $nto_iaddr,
+ remote_host => $ENV{TCPREMOTEHOST},
remote_port => $port,
local_ip => $nto_laddr,
local_port => $lport,
@@ -694,9 +699,6 @@
exit;
};
- # set enviroment variables
- ($ENV{TCPLOCALIP}, $ENV{TCPREMOTEIP}, $ENV{TCPREMOTEHOST}) = Qpsmtpd::TcpServer::tcpenv($nto_laddr, $nto_iaddr);
-
# run qpmsptd functions
$SIG{__DIE__} = 'DEFAULT';
eval {