使用socks5代理与Net :: SMTP

时间:2010-07-15 07:30:51

标签: perl smtp socks

我想将Net :: SMTP与动态socks代理一起使用。 IO :: Socket :: Socks知道袜子,但它应该如何与net :: smtp一起使用?

1 个答案:

答案 0 :(得分:3)

我想出来了,但它包含可能会或可能不会与未来版本的Net :: SMTP一起使用的黑客攻击:

use Net::SMTP;
use Net::SOCKS;
my $socks = new Net::SOCKS(socks_addr=>$shost,socks_port=>$sport, protocol_version=>5) or die $!; 
my $socksfd = $socks->connect(peer_addr=>$smtp_server,peer_port=>25);
if(!$socksfd){
    die "Connection to SOCKS failed";
}
my $smtp = Net::SMTP->new_from_fd($socksfd->fileno, 'r+' ) or die $!;

#HACK: there is "220 host.domain.net" line we must read otherwise Net::SMTP would not work!
$smtp->getline();

$smtp->hello("localhost") or die $smtp->message();
#from here Net::SMTP business as usual...