IMAP サーバの設定

このセクションは、実行するためのシェルスクリプトと、 "configure" と "make" が一度実行された設定ファイルの 変更について述べています。
  1. Cyrusサブシステム用にユーザとグループを作成します。 どんなユーザとグループ名も使用できますが、このドキュメントの例では、 ユーザを "cyrus"、グループを "mail" と仮定します。 "cyrus" とは異なるユーザを使用する場合、あらかじめ、 "configure" に "--with-cyrus-user="オプションで指定しておく必要があります。 "mail"とは異なるグループを使用する場合、あらかじめ、 "configure" に "--with-cyrus-group="オプションで指定しておく必要があります。

  2. "root"としてログインし、cyrus ソフトウェアをインストールします。
       make install
    
    サーバプログラムは、最終的に "--with-cyrus-prefix" で指定した ディレクトリ(デフォルトは、"/usr/cyrus/bin")に入ることを確認してください。

  3. Cyrus IMAP サーバは、4.3BSD syslog を使用し、 メッセージをレベルと、カテゴリに双方に分離します。 "openlog()"が3つの変数を得られる場合、 "man syslog" を呼び出して参照してください。 できない場合、システムの"syslogd" と、"syslog.conf" を"syslog"ディレクトリに提供されるファイルに置き換えてください。
       mv syslogd /etc/syslogd
       mv syslog.conf /etc/syslog.conf
    
    "/etc" ディレクトリに、"syslog/syslog.conf"をコピーしない場合、 "local6.debug"がサポートされるよう、確実に、追加してください。 ファイルには、このような行を追加してください:
       local6.debug  /var/log/imapd.log
    
    おそらくSASLメッセージログも必要なので、このようにします:
       auth.debug /var/log/auth.log
    
    インストールとテストが終了後、おそらく".debug"コンポーネントを少々、 静かにしたくなるでしょう。 ログファイルを生成します:
       touch /var/log/imapd.log /var/log/auth.log
    
  4. "/etc/imapd.conf"の生成。 このサンプルは、最小限の値を指定した "imapd.conf" です。
       configdirectory: /var/imap
       partition-default: /var/spool/imap
       admins: curtj abell
       sasl_pwcheck_method: passwd
    
    このファイルの全てのフィールドに関する記述は、 imapd.conf(5) man ページをご覧ください。 (注記: このファイルはlibsaslに対する値もだし、もっとも重要なのは、 pwcheck_methodとなります。この例では、getpwnam()のコール経由で、 ユーザを認証しています。)

    imapd.conf(5) MANページを読んでください!. そこに含まれる、これらオプションや、デフォルトの動作について、いやでも知る必要があるでしょう。

    注記:常にユーザは、管理者であるべきではありません。 管理権限は、管理者を一般ユーザとして使用した場合、問題が発生するため、 サーバが彼らにメールの受信を許可しているあいだ、一般ユーザに与えるべきではありません。 管理者として、メールを読むことも、してはいけません。 管理するのと、メールを読むのでは、アカウントを分けなければなりません。

  5. "imapd.conf" 内の、"configdirectory" オプションで指定した 設定ディレクトリを作成します。 設定ディレクトリは、"/usr/lib/news" ディレクトリの概念と同じです。 それは、IMAPサーバの情報に関して統括して保存します。

    このドキュメントの例は、設定ディレクトリ "/var/imap" を使用します。 このディレクトリは、cyrusユーザとグループの所有で無ければならず、 かつ、他のユーザにアクセス権を与えてはいけません。

       cd /var
       mkdir imap
       chown cyrus imap
       chgrp mail imap
       chmod 750 imap
    
  6. "/etc/imapd.conf"ファイルで指定したデフォルトの区画ディレクトリを作成します。

    このドキュメントでは、以下の例のように、デフォルト区画ディレクトリ "/var/spool/imap" を使用します:

       cd /var/spool
       mkdir imap
       chown cyrus imap
       chgrp mail imap
       chmod 750 imap
    
    区画ディレクトリは、"/usr/lib/news" ディレクトリの概念と同じです。 これは、メールボックスが保存される場所です。 ネットニュースシステムとは異なり、Cyrusは、2つ以上の区画を持つことを許可しています。 区画名として"news"を使用しないでください。それは、ネットニュース用に予約されています。
  7. Sieveを使用したい場合で、ホームディレクトリで見るために配信する設定をしない場合 (imapd.conf man ページ参照)、Sieve ディレクトリを作成します:
       cd /usr
       mkdir sieve
       chown cyrus sieve
       chgrp mail sieve
       chmod 750 sieve
    
  8. 残りのディレクトリ(今作成したディレクトリのサブディレクトリ)を作成するために、 Cyrusユーザになり、"tools/mkimap" ツールを使用します。
       su cyrus
       tools/mkimap
       exit
    
    
    Perlが使えない場合、手作業でそれらディレクトリを作成します(簡単です(時間は浪費しますが))。

  9. LINUX システムのみ: ユーザ、quota および、区画ディレクトリが、即時更新されるよう、セットしてください。 これが失敗した場合、システムクラッシュ後に、データの欠落、および/また、メールの消失に導かれます。 あいにく、これを行った場合、結果として、深刻なパフォーマンス低下となるかもしれません。 注記:これは、ext2fsの場合です。さらに新しいファイルシステムを使用している場合、 パフォーマンス低下は悪く働かないか、このようなことをする必要が無いかもしれません。
       cd /var/imap
       chattr +S user quota user/* quota/*
       chattr +S /var/spool/imap /var/spool/imap/*
    
    同様に、メールデーモンのキューディレクトリも即時更新されるようにします。 以下の例は、sendmail のものです:
       chattr +S /var/spool/mqueue
    

  10. STARTTLS サポートを有効にするには、 how to configure OpenSSL 以下を見てください。

  11. これらがここに準備されていない場合、 以下の行を"/etc/services" ファイルに追加します。
       pop3      110/tcp
       imap      143/tcp
       imsp      406/tcp
       acap      674/tcp
       imaps     993/tcp
       pop3s     995/tcp
       kpop      1109/tcp
       sieve     2000/tcp
       lmtp      2003/tcp
       fud       4201/udp
    

マスタプロセスを設定する

  1. master/conf ディレクトリから設定を選択します:
    small.conf
    IMAP と POP をサポートする最小限のサーバ。
    normal.conf
    IMAP, POP, SSL ラップバージョンおよび、 Sieve スクリプト運用プロトコルをサポート。
    prefork.conf
    上と同じですが、 いくつかをプリフォークし、高速化。
    cmu.conf
    私たちの設定。

    normal.confを使うには、以下を行います:

       cp master/conf/normal.conf /etc/cyrus.conf
    

    オプションで、含まれるサービスを有効/無効にしたり、プリフォークされるコピーの数を 調整するために、/etc/cyrus.conf を編集できます。 required(必須)じるしのあるエントリを取り除いてはいけません。

  2. システム起動時に "/usr/cyrus/bin/master" が root として起動するように設定します。 それは、いくつかのポートをバインド/破棄するときに、ルートの特権を使用します。 システムをリブートするまでは、手動でマスタプロセスを起動します:
       /usr/cyrus/bin/master &
    

  3. imapd.logファイルで、マスタプロセスの進行状況を監視します。 それは、自分自身では終了しませんが、killで、シグナルを送り、 メールシステムをシャットダウンできます。

メール配送エージェント(MTA)を設定する

Cyrus システムに メールを配送するとき、 MTA (大抵 Sendmail) を適当に設定する必要があります。

  1. ローカルメールをIMAPサーバに配送するsendmailの設定ファイルを作ります。 Sendmail配布中のファイルcf/READMEで、どのようにやるかの情報を見てください。 Sendmail設定ファイルを生成するための、推奨する "config.mc" ファイルは、 ここで、見つけられます。

    MTA・Cyrus間のインタフェースは、Cyrusバージョン2で変更されているので、 古いバージョンのSendmailを使用するときは、気をつけてください。

  2. /etc/group を編集し、 "daemon" ユーザを"mail" グループに追加します。 これは、メールをIMAPサーバに配送するプログラム "deliver"を、sendmailが実行することを許可します。

IMAP 経由でネットニュースを公開する

ネットニュースのニュースグループをIMAPを使用して公開したい場合、 以下を実行します:

  1. "news"区画用にディレクトリを作成します。 このディレクトリはニューススプールディレクトリとは異なっていなければなりません。 このドキュメントでは、以下の例のように、 "/var/spool/imap-news" をニュース区画ディレクトリに使用しています:
       cd /var/spool
       mkdir imap-news
       chown cyrus imap-news
       chgrp mail imap-news
       chmod 750 imap-news
    

  2. "partition-news" と "newsspool" オプションに適当な値をセットします:
       partition-news: /var/spool/imap-news
       newsspool: /var/spool/news
    

  3. cyrusユーザは、out.going("/var/spool/news/out.going") ディレクトリに書き込みができなければなりません。 これは、news グループにcyrus ユーザを入れ、 oug.goingディレクトリをグループが書き込めるようにすることで可能となります。

  4. 以下の行を newsfeeds ファイルに追加します。
       collectnews!:*:Tf,WO:collectnews
    

  5. cyrusユーザとして10分ごとに "/usr/cyrus/bin/feedcyrus"を実行する cron ジョブを追加します。 毎晩 "/usr/cyrus/bin/syncnews /var/news/active >/dev/null 2>&1" を実行するcron ジョブも追加します。 (active ファイルに適当な使用ディレクトリを追加します。)

SSL, TLS, および OpenSSL

Transport Layer Security (TLS) は Secure Sockets Layer (SSL v3) スタンダードを標準化したバージョンです。 IMAPは、2つの異なるTLS/SSL(STARTTLS および、SSL ラップセッション) バージョンを使用することができます。

STARTTLSでは、クライアントは通常のIMAPポートに接続し、 STARTTLSコマンドを発行し、TLSネゴシエーションを開始します。 これは、現在、Cyrus IMAPサーバが、OpenSSLとともにコンパイルされることでサポートされます。

その他にSSLラップ接続は、クライアントが、異なるポート("imaps") に接続することが要求され、また、IMAPプロトコルを開始する前に、 SSLセッションとネゴシエイトします。 同様に、Cyrus IMAPサーバが、OpenSSLとともにコンパイルされることで、 ネイティブにサポートされます。

TLS と SSL の双方は、サーバキーと認証書が必要です。 オプションとして、加えて、セキュア接続を確立する際、TLSは、クライアント 認証ができます。

OpenSSLをともなう Cyrus の設定

  1. OpenSSL は、PEMフォーマットの認証書とキーを必要とします。 OpenSSLを使用し、サーバのプライベートキーと自己認証書を生成できます。 ここで、マシン" foobar.andrew.cmu.edu" のキーを生成し、 ファイル "/var/imap/server.pem" に認証書とキーの両方を書き出します。

    Carnegie Mellon Universityのかわりに、あなたの組織情報を適当に入力してください。

    openssl req -new -x509 -nodes -out /var/imap/server.pem -keyout /var/imap/server.pem -days 365
    Using configuration from /usr/local/lib/openssl/openssl.cnf
    Generating a 1024 bit RSA private key
    .............+++++
    ......................+++++
    writing new private key to '/var/imap/server.pem'
    -----
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [AU]:US
    State or Province Name (full name) [Some-State]:Pennsylvania
    Locality Name (eg, city) []:Pittsburgh
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:Carnegie Mellon University
    Organizational Unit Name (eg, section) []:Andrew Systems Group
    Common Name (eg, YOUR name) []:foobar.andrew.cmu.edu
    Email Address []:
    
  2. キーファイルを確実にCyrusユーザが読み込めるようにしてください。 例: chown cyrus /var/imap/server.pem
  3. 以下の内容を/etc/imapd.confに追加し、認証書と、キーファイルの場所 をサーバがわかるようにします:
    tls_cert_file: /var/imap/server.pem
    tls_key_file: /var/imap/server.pem
    
  4. imtest を使用し STARTTLS をテストできます。:
    imtest -t "" foobar.andrew.cmu.edu
    

クライアントサイド認証書

TODO: 書いてね!

不運にも、それらは クライアントの認証DN(区別名:distinguished name) をSASL認証名に変換するための、標準を持っていません。


最終更新: $日付: 2000/05/12 20:45:01 $