trustBee ロゴ  
  パソコンQ&A  
  OpenBBS  
  IMP日本語版  
  phpMyAdmin日本語版  
  Webツール  
  業務案内  
  業務実績  
  便利ツール満載! BeeTools
便利ツール満載!
BeeTools
 
  SOHOコミュニティ SIMPLE
SOHOコミュニティ
SIMPLE
 
   
  Illustrated by POPO  
 

IMP日本語版 Q&A

Last modified 2002/10/26
Written by I.Yamamoto
    IMP日本語版のQ&Aを集めました。
    こちらを見ても解決できない場合は、掲示板にてお問合せください。

1. POP3サーバに対して接続すると、アドレス帳が使えないなど、IMAPサーバとは違う挙動が発生します。
IMPは、IMAPサーバと接続して運用することを前提として作られています。
そのため、POP3サーバに対して接続した場合、いくつかの制約が発生します。
POP3サーバ接続時の制約について をご覧下さい。
2. PostgreSQLを使用していますが、下記のエラーメッセージが出てしまいます。
Warning: pg_pconnect() unable to connect to PostgreSQL server: could not connect to server: Connection refused Is the server running on host localhost and accepting TCP/IP connections on port 5432?
  • PostgreSQLが起動していることを確認して下さい。
  • 下記のコマンドで、postmasterのプロセスが起動していることを確認できます。
      $ ps ax | grep postmaster
  • PostgreSQLの設定を確認して下さい。
  • PostgreSQLに対して、TCP/IP経由での接続が許可されていないと思われます。
    設定ファイル postgresql.conf の設定を下記のように修正して下さい。
      tcpip_socket = true

    または、postmasterの起動オプションに-iを追加して下さい。

    3. セットアップ完了後、ログインすると Fatal error: Call to undefined function: imap_open() と表示されます。
    または、horde/test.php3 を実行すると、IMAP Support: No と表示されます。
    PHPのIMAP関数が有効になっていません。
    PHPを再コンパイルして、IMAP関数を有効にする必要があります。
    その際、UW-IMAPのCクライアントライブラリが必要ですので、下記の手順で再コンパイルしてください。

  • UW-IMAPのソースを ftp://ftp.cac.washington.edu/imap/ から取得します。
    imap.tar.Z というファイルが、最新版へのシンボリックリンクになっています。


  • 取得したソースを展開し、コンパイルします。
    % tar xzf imap.tar.Z
    % cd imap-2001.BETA.SNAP-0107221451
     (バージョンによってディレクトリ名が異なります)
    % make bsf
     (FreeBSDの場合。Makefileを参照して、お使いのOSに合わせて下さい)
    
  • 必要なライブラリをコピーします。
    c-client.a を /usr/local/lib/ (またはリンクパスの通ったディレクトリ)に、
    rfc822.h, mail.h, linkage.h を /usr/local/include/ (またはインクルードパスの通ったディレクトリ)にコピーします。
    # cp c-client/c-client.a /usr/local/lib/libc-client.a
    # cp c-client/rfc822.h /usr/local/include/
    # cp c-client/mail.h /usr/local/include/
    # cp c-client/linkage.h /usr/local/include/
    
  • PHPを再コンパイルします。
    configureオプションとして、--with-imap を追加して下さい。
  • 【注意点】

  • コンパイル時に必要なだけですので、IMPが動作するサーバ上で、IMAPが動いている必要はありません。
  • POP3サーバに対して接続する場合も、同じ手順でIMAP関数を有効にして下さい。
  • 4. メールサーバが複数あるんですが、1台しか設定できないんですか?
    ログイン先のサーバを複数設定したい場合には、defaults.php3 を
    $default->use_server_list = true;
    
    とし、horde/imp/config/servers.php3 にて設定しておくと
    ログイン画面でサーバを選択できるようになります。

    設定できる項目は下記の通りです。
    $name サーバ選択で表示される名前
    $server メールサーバのホスト名
    $port ポート番号
    (例: IMAPの場合 143、POP3の場合 110)
    $folders メールフォルダ名
    $from_server Fromアドレスのホスト名
    $preferred 複数のIMPサーバで、同じservers.php3ファイルを使う場合に使います。
    列記したホスト名とIMPサーバ名が一致した場合、あらかじめ選択された状態になります。
    horde/imp/config/servers.php3.dist を参考にして下さい。
    $servtype サーバの種類です。
    POP3をお使いの場合は、'pop3' を指定して下さい。
    IMAPの場合は、未指定または 'imap' を指定して下さい。

    5. IMAPサーバへのログインはできましたが、POP3サーバへのログインができません。
    POPサーバを指定する場合には、horde/imp/config/defaults.php3 にて
    下記のようにポート番号とサーバタイプを指定する必要があります。

    $default->server = 'mail.example.com';
    $default->from_server = 'example.com';
    $default->port = '110';
    $default->servtype = 'pop3';
    
    6. 正常にログインできますが、勝手にログアウトしてしまいます。
    ログアウトするタイミングは不定です。
    imapdの同時接続数を確認して下さい。
    IMPは一つのセッションで複数のimapコネクションを張ります。
    同時接続数が足りない場合、ログアウトしてしまいます。

    uw-imapを使用している場合
    デフォルトの同時接続数は40です。
    それを超える場合、ログインできなくなります。
    参考ページ(英語)

    • inetdから起動している場合

    • inetd.confのimapdの行を下記のように修正して下さい。
      数字の部分で同時接続数を指定します。

      imap stream tcp nowait.100 root /usr/local/etc/imapd imapd

    • inetdを使っていない場合

    • ソースファイル inetd.c を修正し、再コンパイルしてください。

      #define TOOMANY 40 /* don't start more than TOOMANY */
      #define CNT_INTVL 60 /* servers in CNT_INTVL sec. */
      #define RETRYTIME (60*10) /* retry after bind or server fail */

    courier-imapを使用している場合
    • couriertcpdから起動している場合

    • 同一IPアドレスからの同時コネクション数のデフォルト値は4です。
      courier-imapの設定ファイル(imapd)の下記の行を修正してください。

      MAXPERIP=4

    • tcpserverから起動している場合

    • tcpserver の起動オプションの -c で同時接続数を指定します。
    Masaru Satoさんからの情報です。感謝。
    7. IMP2.2.Xを入れたのですが、セットアップして実行すると下記のエラーが出ます。
    Fatal error: Call to unsupported or undefined function page_open() in /horde/imp/index.php3 on line 15
    PHPLIBの設定が正しくないと思われます。
    セットアップのページを参考に設定し直してください。

    また、下記のスクリプトでPHPの情報を確認(下記参照)し、PHPLIBが正しく読み込まれているか確認してください。
      <? phpinfo(); ?>
    8. 画面上部のステータス表示などが文字化けします。
    文字コードの設定が正しくないと思われます。
    当方の環境では、基本的に内部処理および出力ともにEUCを使う前提で動作確認しています。
      php3.iniの設定

      i18n.http_output = EUC-JP
      i18n.internal_encoding = EUC-JP
      i18n.script_encoding = auto
      i18n.http_input = auto

    これ以外の文字コードをお使いの場合は、IMPの文字コード設定を修正してください。
    horde/imp/config/defaults.php3 の一番下にあります。
    • $default->http_filename_encoding
      ファイル名およびテキストファイルの文字コードです。
      クライアントがWindowsやMacintoshの場合はSJISにして下さい。

    • $default->http_contenttype_encoding
      HTMLヘッダで出力されるコード指定です。
      PHP4の場合は"EUC-JP"を指定してください。

    9. メール作成画面でファイルを添付すると、下記のようなメッセージが表示されます。
    Warning: Unable to open '/tmp/phpusq6Yb' for reading: No such file or directory in /usr/local/apache/htdocs/horde/imp/compose.php3 on line 923
    /usr/local/lib/php3.ini (またはphp.ini)にファイルアップロードディレクトリの設定をしてみて下さい。
      upload_tmp_dir = /tmp
    10. qmail + courier-imap でMaildir形式の環境で運用しています。
    IMPからログインしても、「受信箱」のフォルダしか表示されません。
    /horde/imp/config/defaults.php3 を下記のように設定して下さい。
      $default->folders = '';

      $default->personal_folders = 'INBOX.'; // 注意:最後はピリオドです
    11. IMPから送信したメールに、下記のようなヘッダが付いてしまいます。
    X-Authentication-Warning: www.trustbee.com: nobody set sender to yamamoto@trustbee.com using -f
    これは、sendmailの設定が正しくない場合に起こります。
    この場合、sendmailを使わず、PHPのmail関数を使用することで解消できます。

    horde/config/horde.php3horde/imp/config/defaults.php3 の下記の行をコメントアウトして下さい。
      $default->path_to_sendmail = '/usr/sbin/sendmail';

    12. InternetExplorerを使っています。添付ファイルをダウンロードしようとすると、エラーが出たり、imp.htmlという ファイル名で保存されてしまいます。
    「ファイルのダウンロード」のダイアログが表示されたら、
      このファイルをディスクに保存する
    ではなく、
      このファイルを上記の場所から開く
    を選んで下さい。
    すると再び「ファイルのダウンロード」のダイアログが表示されますので、今度は「保存する」を実行してください。
    次回からは、最初に「保存する」を実行すれば保存できるようになります。
    13. ログインすると、下記のエラーが出ます。
    Fatal error: Call to unsupported or undefined function
    i18n_mime_header_encode() in /usr/local/apache/htdocs/horde/imp/mailbox.php3 on line XXX
    導入されているPHPのバージョンを確認してください。
    IMP日本語版は国際化関数を使用していますので、国際化版PHPでなければ動作しません。
    PHP4をお使いの場合は、jstringモジュールを組み込む必要があります。

    バージョンが分からない場合は、下記の内容のPHPスクリプトを作成し、ブラウザから実行すると各種情報が表示されます。
      <? phpinfo(); ?>
    また、国際化版PHPをソースからコンパイルする場合は、configureオプションとして、下記のオプションが必要です。
      --enable-i18n
      --enable-mbregex
    14. ログインできません。
    ログインすると、「ドキュメントにデータが含まれていません」との
    エラーメッセージが表示されます。
    IMAPサーバに対する認証でエラーが発生している可能性があります。
    下記の項目を確認してください。

    IMAPの動作確認
    • IMAPサーバでimapdは動いていますか?"ps ax"などでプロセスを確認してください。
      (inetdから起動する場合はプロセスとしては常駐していません)
    • telnetで143番ポート(標準の場合)にログインできますか?
    • 接続: $ telnet your.mail.server imap (または 143)

      入力: A001 LOGIN username password
      (usernameとpasswordは環境に合わせて下さい)

      ログイン成功の応答: A001 OK LOGIN Ok.
      ログイン失敗の応答: A001 NO Login failed.

      入力: A002 LOGOUT

      終了の応答: A002 OK LOGOUT completed
    • 他のIMAPメーラからのログインはできますか?
    PHPの動作確認
    • PHPはIMAP対応でコンパイルされていますか?
    • imap関数は正常に動作しますか?
      下記のサンプルをブラウザからお試しください。
      サーバ名、ユーザ名、パスワードは環境に合わせて変更してください。
      エラーが出ずに接続できたら問題ありません。

      imaptest.php3
      <?
      $mbox = imap_open("{IMAPサーバ名:143}", "ユーザ名", "パスワード");
      if ($mbox) {
      echo "IMAPサーバに接続されました。($mbox)<br>";
      imap_close($mbox);
      echo "IMAPサーバから切断しました。<br>";
      }
      ?>
    • /horde/imp/mailbox.php3 をブラウザから直接アクセスするとどうなりますか?
      → ログイン画面にリダイレクトすれば正常です。

    2002/06/21 追加
    horde/imp/config/defaults.php3 のポート番号の指定部分を下記のように変更して試してみて下さい。

      $default->port = '143/notls';
      または
      $default->port = '143/novalidate-cert';
    15. ログインすると下記のようなWarningメッセージが出ます。
    Warning: Cannot add more header information - the header was already sent
    これは、「HTTPヘッダが出力できません」というWarningメッセージです。
    正常にログインした場合はいくつかのクッキーを設定しますが、その前にエラーが発生した場合はクッキーの設定が できないためにこのようなWarningメッセージが表示されます。
    エラーの原因を修正すればこのWarningは消えます。
    16. IMPから送信したメールを別のメーラで受信すると文字化けします。
    IMPから送信したメールのヘッダを確認してください。
    正常なヘッダは下記のようになります。
      Content-Type: text/plain; charset=iso-2022-jp
      Content-Transfer-Encoding: 7bit