容量の大きいメールボックスへの接続 - PHPプロ!Q&A掲示板

2853

  • 0P

容量の大きいメールボックスへの接続

質問日時 / 2010年9月4日 14:12    回答数 / 6件

Questioner:  natuhi  このエントリーをはてなブックマークに追加 

キーワード / PHP    メールボックス   

容量が300MBを超えるメールボックスへの接続の仕方を知ってる方はいらっしゃらないでしょうか?

普通のメールボックス(大きくても150MB程)には表示までには時間が少しかかりますが、
接続できていました。しかし、300MBを超えたメールボックスには1分程待機状態で、
そのままCouldn't open stream ~のエラーが出て中断してしまいます。

set_time_limitimap_timeoutなど、タイムアウト設定を変更してみましたが、
3分程でCouldn't open stream ~のエラーが出て中断してしまいます。

自分でもいろいろと調べてみたのですが、普通はメールボックスの容量に制限をつけている
みたいですね。一番早い解決方法は、いらないメールを削除してもらうことなのでしょうが、
削除はしないと言われています。

ヒントだけでも大変助かりますので、ご指導、ご教授の程宜しくお願い致します。

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┣A01shimix接続は何を使っているのでしょうか?そのあたりの説明
┃┗A01-1natuhiすみません。確かにいろいろ抜けてました。 imap_o
┗A02exceptionCatcher質問内容から察するとメールボックスはMaildir形式で
 ┗A02-1natuhiお返事遅くなってしまい、すみません。 仰るとおり
  ┗A02-1-1shimixたとえばSquirrelMailなどの既存のウェブメールシステ
   ┗A02-1-1-1natuhiご意見ありがとうございます。 まず、ローカルのメ

回答一覧

並び替え:

A01
answerershimix [9月4日 20:19]

接続は何を使っているのでしょうか?そのあたりの説明抜きで質問されると少々戸惑うのですが(汗

imap_timeoutということはIMAP関数でいいんですかね。接続はIMAP/POP3のどちらを使っていますでしょう(これ大事です)。で、エラーになるのはどのタイミングでしょうか?imap_openの時点ですか?

この意見に回答する

ツリーへ TOPへ

A01-1
replyernatuhi [9月5日 01:47]

すみません。確かにいろいろ抜けてました。

imap_openを使っていて、接続はIMAPです。

正確に表記するなら
  1. imap_open("{localhost:993/imap/ssl/novalidate-cert}INBOX","ユーザ名","パスワード");
としています。

エラーは
  1. Warning: imap_open() [function.imap-open]: Couldn't open stream {localhost:993/imap/ssl/novalidate-cert}INBOX
となっています。このエラーが出ている場所は上記のimap_openの場所です。
もちろん、300MBを超えるメールボックスに接続しようとしなければ、このエラーにはなりません。

ご意見お待ちしています。

この意見に回答する

ツリーへ TOPへ

A02
answererexceptionCatcher [9月5日 11:55]

質問内容から察するとメールボックスはMaildir形式ではなく、
mbox形式(メールアカウントごとに1ファイルに全メールメッセージを格納する方式)のようですね。

Postfix等のSMTPメールサーバはMaildir形式という
「メールアカウントごとに定められたディレクトリ配下に、1メールメッセージを1ファイルで格納する方式」
もサポートしています。

もしメールサーバをMaildir形式をサポートしているものに置き換えて、
なおかつ現状のメールデータをMaildir形式に移行可能であるなら、
メールサーバをMaildir形式で再構築されることを勧めます。

(使用したことはないのですが、sendmailのmboxデータを
PostfixのMaildir形式に変換するツール等も存在するようです。)

この意見に回答する

ツリーへ TOPへ

A02-1
replyernatuhi [9月6日 09:17]

お返事遅くなってしまい、すみません。

仰るとおり、mbox形式のUW-IMAPを利用しています。

折角のご意見なのですが、(詳しくは書けませんが)私の権限ではメールサーバを
変えれません。また、メールボックスの容量が大きくなければ何も問題はありませんし、
何より、私のところで使っているウェブメールシステムがmbox形式でなければ動かない
ため、Maildir形式のメールサーバに変更すれば、そちらも変更しなければならなくなって
しまいます。

(詳しくは書けませんが)諸々の事情のため、ウェブメールシステムを変更するわけにはいかないため、
別の意見をお待ちしています。

ご意見ありがとうございました。

この意見に回答する

ツリーへ TOPへ

A02-1-1
replyershimix [9月6日 09:47]

たとえばSquirrelMailなどの既存のウェブメールシステムをインストールして試しても同じでしょうか。もしそうであれば、現在のメールサーバでIMAP運用をするのは難儀だろうと思うのですが・・。ローカルのメーラからIMAPで繋いでも相当に時間はかかるんですよね?

#メーラでは時間がかからない・・ってことになると、何が違うのかを解析することからスタートですが

IMAPということは送信済みメールなどもウェブメール以外の環境と共用する必要があるんでしょうか。そういう要件がなければPOP3運用にして受信済みメールをDBに格納するとか。あ、UW-IMAPだとPOP3の併用は出来ないんでしたっけ(このあたりは素人なので・・)。

この意見に回答する

ツリーへ TOPへ

A02-1-1-1
replyernatuhi [9月6日 11:51]

ご意見ありがとうございます。

まず、ローカルのメーラ(私はThunderbirdで試しています)では、
5分もしないで表示(サーバからのDLが完了?)しました。

次に、SquirrelMailで試してみたところ、5分程で正常に表示されました。
時間はかかりましたが、正常に表示できたので、SquirrelMailを参考にしようと思いましたが、
SquirrelMailはPHPのfsockopenを利用してメールサーバに接続していました。
よくよく考えたらc-clientが入ってないと使えないIMAP関数を使うより、
そういうのに依存しない方法を使うのは当たり前ですが。

私の我侭なのですが、imap_openを利用して解決できないものでしょうか?
難しいようなら、SquirrelMailを参考にしてfsockopenを利用しようと思います。
その場合はソケットの勉強から始めることになりそうです・・・

> IMAPということは送信済みメールなどもウェブメール以外の環境と共用する必要があるんでしょうか。
> そういう要件がなければPOP3運用にして受信済みメールをDBに格納するとか。
IMAPとPOP3のどちらも利用できるようにすべきか迷っていたのですが、
「POP3はこれから利用が減っていくだろう」と(上から)言われてますので
POP3は利用しない方針でいます。

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
PHPのHTML埋め込み記述について
 このエントリーをはてなブックマークに追加 
A
$_POST["data"] == "男" ? $val = "checked" : $val = "" ; の意味は以下と同じです。 if($_POST["data"] == "男"){ $val = "checked; } e...

>>続きを読む

kende様のご指摘通り、三項演算子を使用する際には、コードの複雑度などを考慮する必要がありますね。書きやすさと共に可読性も追求したいところですね。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)