• 締切済み

NET::SMTPについて

おねがいします。 NT環境からperlでメール送信したいと思っています。 NET::SMTPをPPMでダウンロードしました。 以下のサンプルプログラムを得て、SMTPサーバ名など を入れました。でも、エラーにはなりませんが送信されず。 そもそも、IDとpassの認証部分がないですよね。 このサンプルだと「SMTPサーバ名さえわかれば誰でも そのSMTPサーバからメールできちゃう」ってことに なりませんか?? 他の方の質問にあった、 $smtp->auth( USERNAME, PASSWORD ); も試しましたが、エラーになりました。 認証うける方法があるのでしょうか? よろしくおねがいします。 #!/usr/local/bin/perl -w use Net::SMTP; $smtp = Net::SMTP->new('mailhost'); $smtp->mail($ENV{USER}); $smtp->to('postmaster'); $smtp->data(); $smtp->datasend("To: postmaster\n"); $smtp->datasend("\n"); $smtp->datasend("A simple test message\n"); $smtp->dataend(); $smtp->quit;

みんなの回答

  • alicia-y
  • ベストアンサー率40% (85/208)
回答No.1

あなたが指定したメールサーバは認証が必要なサーバなのでしょうか? 認証が無い場合は auth は必要ではありません。 > $smtp->mail($ENV{USER}); $ENV{USER} には正しいメールアドレスが設定されているのでしょうか? ここにあなたのメールアドレスを設定しても送信できませんか? 多分ここでエラーになっているんじゃないかと思います。 $smtp->mail('あなたのメールアドレス'); としてテストしてみてください。 > 「SMTPサーバ名さえわかれば誰でもそのSMTPサーバからメールできちゃう」ってことになりませんか?? SPAM 対策をしていなければそういうことが出来ちゃいます。 POP before SMTP とか SMTP auth とか relay を禁止とか設定されていると思いますので そのようなことは出来ないようになっていると思います。

yasu_japan
質問者

お礼

解決しました。 送信先を送信元と同じドメインに指定することで うまくいきました。 その他のアドレスを送信先に指定すると、 relay禁止ではじかれました。

yasu_japan
質問者

補足

ご回答ありがとうございます。 >$smtp->mail('あなたのメールアドレス'); >としてテストしてみてください →自分のメールアドレスを指定しています。 このアドレスがサーバに存在するか?をチェックしてるのでしょうか? >あなたが指定したメールサーバは認証が必要なサーバなのでしょうか? SMTPサーバは、認証はないと思います。POP3は必要。 でも、送信したいだけです。 >POP before SMTP とか SMTP auth とか relay を禁止とか設定されていると思いますので この設定がされていても、NET::SMTPは使えるんですよね? サーバ側で、NET::SMTPのようなプログラムからのメール送信要求を無視する設定などがされていることもありうるのでしょうか?

関連するQ&A

専門家に質問してみよう