add to /etc/inetd.conf --- cut here pop3 stream tcp nowait root /var/qmail/bin/qmail-popup qmail-popup zeus.internetconnection.net /var/vpopmail/bin/vchkpw /sbin/smtp-setauth /var/qmail/bin/qmail-pop3d Maildir smtp stream tcp nowait root /sbin/smtp-getauth smtp-getauth ---- /sbin/smtp-setauth --- cut here #!/bin/perl $sockaddr=(getpeername(STDIN)); exit 0 if ($sockaddr eq ''); @sin = unpack("C*", $sockaddr); $ip = $sin[4] . '.' . $sin[5] . '.' . $sin[6] . '.' . $sin[7]; dbmopen(%prip, "/var/vpopmail/prip/users", 0660); $prip{$ip} = time; dbmclose(%prip); exec ('/var/qmail/bin/qmail-pop3d', 'Maildir'); exit 0; --- /sbin/smtp-getauth --- cut here #!/bin/perl $sockaddr=(getpeername(STDIN)); exit 0 if ($sockaddr eq ''); @sin = unpack("C*", $sockaddr); $ip = $sin[4] . '.' . $sin[5] . '.' . $sin[6] . '.' . $sin[7]; open(DBM,"/etc/relays"); foreach $k () { chop($k); if ($k eq $ip) { $ENV{'RELAYCLIENT'}=''; } } close(DBM); $timeout = 1800; dbmopen(%prip, "/var/vpopmail/prip/users", 0660); foreach $k (keys(%prip)) { delete $prip{$k} if ($prip{$k} + $timeout < time); } if ($prip{$ip} ne '') { $ENV{'RELAYCLIENT'}=''; } exec(@ARGV) if (scalar(@ARGV) > 0); exec('/var/qmail/bin/tcp-env','/var/qmail/bin/qmail-smtpd'); print "500 Internal server error - report to your admin\n"; exit 0; ---