0

私はperlモジュールNet::Smtp_authを使用して、ポート25(暗号化なし)でweb.deSMTPサーバーを使用して自分自身にメールを送信しています。それは私のコンピュータでうまく機能します。ただし、同じスクリプトを使用して、root権限を持たない別のマシンで終了したジョブに関する通知メッセージを送信したいと思います。このマシンでは、接続のタイムアウトが発生します。接続がどのようにブロックされるのか、それをブロックする理由は何でしょうか(スパマーを防ぐのですか?)、問題を回避する方法があるのではないかと思います。いくつかのLinuxツールを利用できますが、nmapはありません。接続はプロキシ設定の影響を受ける可能性があります。影響を受ける場合は、SMTP_authにどのように通知しますか?

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('adress@web.de');
$smtp->to('adress@web.de');

$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;
4

1 に答える 1

0

他のマシンがホームマシンとは異なるネットワークにある場合、一般的なスパム軽減手法であるため、ISPが自身のSMTPサーバー以外への送信ポート25をブロックしている可能性があります。確立された規則では、ネットワークを介した送信メールの場合、代わりにポート587(SMTP送信専用ポート)を使用する必要があります。

問題がプログラムにあるかどうかを確認する簡単な方法は、そのホストとポートにtelnetで接続することです。telnetが接続しないが、他のサービスが接続する場合、ISPはポート25をフィルタリングしています。

于 2012-05-17T21:01:52.843 に答える