

環境は、レンタルサーバで、各機能のバージョンは以下の通りです。
Apache/1.3.41 Ben-SSL/1.59 (Unix)
Perl v5.6.1 built for i386-freebsd
Version 8.13.1
現在、「sendmail -t」にて複数のメールを送信していますが、サーバの負荷によりsendmail処理が遅延し、そのプロセスが終了する前に次の新たなSendmailコマンドを発行すると
rejecting commands from localhost [127.0.0.1] due to pre-greeting traffic
で強制終了されてしまいます。
sendmailをcloseしてから、数秒タイムラグを置いてみても、サーバ負荷の遅延がタイムラグより大きくなる事があるようで困っています。
そこで、メールが送信終了(sendmailが送信プロセスを終了)した事を確認してから、次の処理に進みたいと考えていますが、perlプログラム内で終了ステータスを受ける事が出来るのでしょうか?
その他、強制終了を防ぐ方法がありましたらアドバイス願います。
ちなみに、レンタルサーバ業者にsendmail送信件数上限を確認した所、150件/分との事でした。
現在、10件/分程度の送信間隔としていますので、上限閾値を超えているような送信はしていないと思います。
No.1ベストアンサー
- 回答日時:
共有サーバだとダメ(他のユーザがsendmailを使うかも)でしょうが、専用サーバならばメールのキューを監視することである程度は分かるかも知れません。
毎分150通とは随分低い設定ですね。
迷惑メールの大量送信阻止なのかも知れないですが、だったらキューに位入れさせてくれって感じですね。
プロセス数で分かるなら、
a$ = `ps -ax | grep sendmail | wc -l`;
これで数えちゃうのも手だとは思います。
早々のアドバイスありがとうございます。
サーバは共有サーバです。
さっそくプロセス数をチェックしてみたところ、
メール送信直前で5~9辺りのプロセスとなっていました。
このプロセスに閾値を設定して、
超えるとタイムラグ秒数を多くするようなプログラムで試してみたいと思います。
ありがとうございました。
また、sendmailは終始このプロセス数なのですが、
一般のサーバとしてこの数値はどのレベルなのか
アドバイス頂ければ幸いです。
No.3
- 回答日時:
sendmail は実行結果を exit status に返すので、
呼び出し側でそれを見れば、ある程度の状況判断は可能です。
http://www.linux.or.jp/JM/html/sendmail/man8/sen …
> EX_OK
> すべてのアドレスについて完全に成功しました。
> EX_NOUSER
> ユーザ名が認識できません。
> EX_UNAVAILABLE
> 処理に必要なリソースを得ることができません。
> EX_SYNTAX
> アドレスに文法的な間違いがあります。
> EX_SOFTWARE
> 引数が間違っているなどの、内部的なエラーです。
> EX_OSERR
> ``cannot fork''' のような、一時的な OS エラーです。
> EX_NOHOST
> ホスト名が認識できません。
> EX_TEMPFAIL
> メッセージはすぐには送られませんでしたが、キューには入れられました。
perl側で $? をチェックして、エラーになったときはしばらく待ってから再チャレンジするようにしてはどうでしょうか。
アドバイスありがとうございました。
アドバイス通り、EX_OKステータス以外で再トライさせて
様子をみてみたいと思います。
ありがとうございました。
No.2
- 回答日時:
> 一般のサーバとしてこの数値はどのレベルなのか
これは管理側のポリシーなので何とも。
メモリに余裕があれば数百のsendmailプロセスを走らせる事も可能な訳です。
もっともメール送信にはDNS引きなども関係するので、その辺りのソケットも消費することになりますから共有サーバではある程度制限しているのかも知れないですね。
アドバイスありがとうございます。
共有サーバなので、こういうものなのかもしれませんね。
いろいろ負荷の状況を探りながら対応していきたいと思います。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# TCP/IP通信時のサーバーからの受信 2 2022/11/23 09:11
- UNIX・Linux iptablesを設定するとメール送信処理が遅くなる!? 6 2022/06/07 01:11
- その他(資産運用・投資) 海外銀行の預金がなかなか返してもらえません。 3 2023/03/02 20:05
- UNIX・Linux Ubuntuサーバーでメールを受信できない 7 2022/08/23 20:55
- CGI -T(汚染モード)でメールが送れません 1 2022/06/12 14:11
- その他(メールソフト・メールサービス) サンダーバードでメールが受信されない 10 2022/03/24 17:00
- iPhone(アイフォーン) Apple storeの注文ステータスについて 1 2023/01/07 18:40
- その他(メールソフト・メールサービス) Windows10付属のメール、なぜ設定が劇的に簡単になったのか? 1 2022/12/16 13:14
- Visual Basic(VBA) VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本 1 2022/04/27 13:31
- 福祉 内定先企業からの案内メールへの返信 2 2023/06/15 09:56
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
sendmailのエラーを知りたい
-
sendmailの設定がわかりません。
-
お問い合わせフォームから送信...
-
ビジネスメールの敬称
-
Googleフォームを回答したか確...
-
テキストボックスの番号を使っ...
-
教えて!全角文字「μ」の半角
-
エクセルVBA テキストボックス...
-
perlの結果を自動表示?
-
EXCEL VBA で指定した範囲に入...
-
[件名]前の画面に戻ると「webペ...
-
VBAでInputBoxの再入力をさせる...
-
ビルダー20 お問合せフォー...
-
携帯電話においてのパスワード...
-
DataGridView 列ごとの入力制限
-
DATE型変数を初期化する方法
-
初歩的な事だと思います。 Sub...
-
数字以外の入力をエラーにする...
-
DataGridViewの桁数制限に関して
-
乱数にするとエラーになります
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語でのメール送信
-
hypermartのsendmailのパス?
-
postmail
-
sendmailで存在しないアドレス...
-
sendmailでFROMに勝手に@~が追...
-
sendmailでのエンベロープのマ...
-
ReturnPathが指定できない?
-
sendmailのエラーを知りたい
-
sysopenを使用したメール送信の...
-
CGIについて(メール送信)
-
sendmail メール送信完了ステ...
-
(海外特定サーバ)メールが届...
-
入力されたアドレスに@docomo.n...
-
ホームページビルダー20SPで...
-
メールフォームCGIでのエラーメ...
-
ビジネスメールの敬称
-
Googleフォームを回答したか確...
-
エクセルVBA テキストボックス...
-
初歩的な事だと思います。 Sub...
-
テキストボックスの番号を使っ...
おすすめ情報