2012-05-17 5 views
0

perl 모듈 Net :: Smtp_auth를 사용하여 포트 25 (암호화 없음)의 web.de SMTP 서버를 사용하여 자신에게 메일을 보냅니다. 그것은 내 컴퓨터를 잘 작동합니다. 하지만 동일한 스크립트를 사용하여 루트 권한이없는 다른 컴퓨터에서 완료된 작업에 대한 알림 메시지를 보내고 싶습니다. 이 컴퓨터에서 연결 시간 초과가 발생합니다. 어떤 방식으로 연결이 차단되었는지, 스팸 차단을 막는 이유 (스팸 발송자 방지) 및 문제를 피할 수있는 방법이 있는지 궁금합니다. 사용할 수있는 리눅스 도구가 있지만 nmap이 없습니다. 프록시 설정에 의해 연결이 영향을받을 수 있습니까? 그렇다면 SMTP_auth에 어떻게 연결합니까?디버그 smtp 연결

perl 스크립트는 기본적으로 cpan의 SMTP_auth 예제입니다. 다른 기계 홈 기계가 아닌 다른 네트워크에있는 경우

#!/usr/bin/perl -w 

use Net::SMTP_auth; 

$message=$ARGV[0]; 

$smtp = Net::SMTP_auth->new('smtp.web.de') or die "Failed to open SMTP connection: $!"; 
$smtp->auth('CRAM-MD5', 'adress', 'password'); 

$smtp->mail('[email protected]'); 
$smtp->to('[email protected]'); 

$smtp->data(); 
$smtp->datasend("To: adress\@web.de\n"); 
$smtp->datasend("From: adress\@web.de\n"); 
$smtp->datasend("\n"); 
$smtp->datasend("$message\n"); 
$smtp->dataend(); 

$smtp->quit; 
+0

[인터넷 :: SMTP] (http://p3rl.org/Net::SMTP)에서 생성자를 상속합니다. 디버깅'-> new ('...', Debug => 1)'및 [edit your questions] (http://stackoverflow.com/posts/10642875/edit)를 사용하여 결과 로그를 제공하십시오. – daxim

답변

0

, 그것은 잘 ISP가 자신의 아무것도하지만 나가는 포트 25이 차단되어있을 수 있습니다 :하지만 그것이 관련된 여기에 기대하지 않습니다 SMTP 서버는 일반적인 스팸 완화 기술이므로 기존의 규칙은 네트워크를 통해 보내는 메일의 경우 포트 587 (SMTP 제출 전용 포트)을 사용해야한다는 것입니다.

문제가 프로그램인지 확인하는 쉬운 방법은 해당 호스트와 포트로 텔넷을 시도하는 것입니다. 텔넷이 연결되어 있지만 다른 서비스는 ISP가 포트 25를 필터링합니다.

+0

실제로 telnet이 연결되지 않습니다 : "Connection timed out". 그리고 실제로 그것은 ISPs SMTP 서버와 함께 작동합니다. – highsciguy

+0

'smtp.web.de : 587'은 제출을 허용 할 수 있습니다 (RFC 2476) – charlesbridge

+0

ISP가 실제로 포트를 차단하는 경우 두 번째 시스템을 사용하지 않고이 문제를 회피 할 수있는 방법이 있습니까? 나중에 587 포트를 사용해 보겠습니다. – highsciguy