こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Mail::Sendmailの使い方

お世話になっております。

先日よりsendmailの調子がおかしくていろいろ調べているのですが煮詰まってしまったので詳しい方々にご教授頂きたいと思います。

先日よりMovable Type(CMS)でのメール送信のシステムが機能しなくなり、いろいろ調べているとサーバーのsendmailはきちんと機能しているのですが、perlのモジュールMail::Sendmailがうまく作動していないようなのです。
perlでは、
open (SENDMAIL, "/usr/lib/sendmail -t -i");
(中省略)
close(SENDMAIL);
という原始的な方法ではメールが送信されるのですが、
use Mail::Sendmail;という使い方では、エラーにはなりませんがずっと読み込み中…状態が続いてメールが送信されませんでした。

Movable TypeでもMail::Sendmailが利用されていますのでここが原因かと思いますが、Mail::Sendmailを使用するにあたって注意すべきこと、または設定すべきことはどのようなことがあるでしょうか?さしあたりどこをチェックしてよいのかわからなくて困っています。

よろしくお願いします。



Mail::Sendmailを利用して作成したスクリプトは以下のようなものです。
#!/usr/bin/perl


use strict;
use warnings;
use Mail::Sendmail;
use Encode;
use utf8;

my $subject = "テスト";

my $message = "テストです。ほげほげ。";

$subject = encode("MIME-Header-ISO_2022_JP", $subject);

$message = encode("iso-2022-jp", $message);


my %mail = (
"Content-Type" => 'text/plain; charset="iso-2022-jp"',

To => 'to@example.com',

From => 'from@example.com',

Subject => $subject,
Message => $message,

);

sendmail(%mail);
exit;

投稿日時 - 2009-11-02 20:44:30

QNo.5417129

すぐに回答ほしいです

質問者が選んだベストアンサー

Mail::Sendmail の既定値では localhost の port 25 と
通信しメールを送信します。

「ずっと読み込み中…」というのは localhost の port 25 に
接続しようとして待たされているのではないでしょうか。

メールサーバとの通信内容を表示するために
$Mail::Sendmail::mailcfg{debug} = 6;
をテストスクリプトに入れてはどうでしょうか。
おそらく connect to localhost failed と出て、接続でき
ないことがわかると思います。

また、
netstat -an | egrep -w 25
とコマンドを入力して、 port 25 が開かれているか
確認してもよいです。開かれている場合 LISTEN となっている
行が表示されます。

サーバの port 25 が開かれていない場合、その修正は perl
プログラムではなく、メールサーバの設定を見直します。

投稿日時 - 2009-11-03 10:03:30

お礼

貴重な情報ありがとうございます。
結局ポート25は開かれてはいたのですが、やはりメールサーバー周りがおかしい感じがして再インストールしました。結果機能するようになったのですが、原因はわからず終いでした…。
いろいろありがとうございます。

投稿日時 - 2010-05-28 20:51:36

ANo.1

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問