トップ 一覧 検索 ヘルプ RSS ログイン

Dovecotインストールの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!!!概要
Dovecotはセキュアで高性能なPOP3/IMAPサーバです。Dovecotを標準で採用するLinuxディストリビューションもあり、今後普及していきそうな感じです。

!!!インストール
!!ユーザ・グループの作成
dovecotが使うユーザとグループを作成します。
 # groupadd dovecot
 # useradd -g dovecot -s /bin/false dovecot 

!!ダウンロード・展開
http://www.dovecot.org/ からソースコードをダウンロードして適当なディレクトリに展開します。
 $ tar zxvf dovecot-1.0.0.tar.gz
 $ cd dovecot-1.0.0

!!コンパイル・インストール
 $ ./configure
 $ make
 # make install

!!ディレクトリ作成

ログ用ディレクトリを作成
 # mkdir /var/log/dovecot
!!!設定
!!dovecot.conf
/usr/local/etc/dovecot.confを編集します

 # ランタイムデータが置かれるディレクトリ
 base_dir = /var/run/dovecot/
 
 # 有効にするプロトコル
 protocols = pop3 pop3s imap imaps
 
 # プレーンテキスト認証を許可する
 #(PAMではAPOPが使えないので。SSLを使うならyesでもいい。)
 disable_plaintext_auth = no
 
 # ログファイル名
 log_path = /var/log/dovecot/dovecot.log
 
 # SSL証明書ファイル
 ssl_cert_file = /etc/postfix/postfix-cert.pem
 
 # SSL秘密鍵ファイル
 ssl_key_file  = /etc/postfix/postfix-key.pem
 
 # Maildir形式を使う
 mail_location = maildir:~/Maildir
 
 # 有効なUIDの最小値
 # Solarisでは一般ユーザのUIDは100から始まるので100にする
 first_valid_uid = 100
 
 # 有効なUIDの最大値
 last_valid_uid = 60000
 
 # IMAPの設定
 protocol imap {
 }
 
 # POP3の設定
 protocol pop3 {
   # UIDLのフォーマットを指定する
   pop3_uidl_format = %08Xu%08Xv
 }
 
 # 認証設定
 auth default {
   # 認証メカニズム
   mechanisms = plain login
   
   # PAM認証を使う
   passdb pam {
   }
    
   # ユーザデータベースにpasswdファイルを使う
   userdb passwd {
   }
   
   # 認証プロセスが使用するユーザ
   user = root
   
   # PostfixからDovecot SASL-Authを使うための設定
   socket listen {
     client {
       path = /var/spool/postfix/private/auth
       mode = 0660
          user = postfix
          group = postfix
     }
   }
 }
!!!起動
!!起動スクリプト
起動スクリプトの例です。/lib/svc/method/dovecotとして作成します。
 #!/bin/sh
 
 # rc script for dovecot
 
 PROG=/usr/local/sbin/dovecot
 SERVICE=`basename $PROG`
 PIDFILE=/var/run/dovecot/master.pid
 
 ECHO=/usr/ucb/echo
 
 case "$1" in
 start)
        $PROG && echo '[ OK ]' || echo '[ NG ]'
        $ECHO -n "starting $SERVICE ... "
        $PROG && $ECHO '[ OK ]' || $ECHO '[ NG ]'
        ;;
 stop)
        kill `cat $PIDFILE` && echo '[ OK ]' || echo '[ NG ]'
        $ECHO -n "stopping $SERVICE ... "
        kill `cat $PIDFILE` && $ECHO '[ OK ]' || $ECHO '[ NG ]'
        ;;
 reload|refresh)
        kill -HUP `cat $PIDFILE` && echo '[ OK ]' || echo '[ NG ]'
        $ECHO -n "refreshing $SERVICE ... "
        kill -HUP `cat $PIDFILE` && $ECHO '[ OK ]' || $ECHO '[ NG ]'
        ;;
 restart)
        $0 stop
        $0 start
        ;;
 *)
        echo "Usage: $0 [start|stop|reload|restart]"
        echo "Usage: $0 [start|stop|refresh|restart]"
        exit 1
        ;;
 esac
 
 exit 0

!!マニフェストファイル
マニフェストファイルの例です。デフォルトで付属しているsmtp-sendmail.xmlを改変しました。/var/svc/manifest/network/dovecot.xmlとして作成します。
 <?xml version="1.0"?>
 <!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
 <!--
     Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
     Use is subject to license terms.
 -->
 
 <service_bundle type='manifest' name='dovecot'>
 
 <service
        name='network/dovecot'
        type='service'
        version='1'>
 
        <single_instance />
 
        <dependency
            name='fs-local'
            grouping='require_all'
            restart_on='none'
            type='service'>
                <service_fmri value='svc:/system/filesystem/local' />
        </dependency>
 
        <dependency
            name='network-service'
            grouping='require_all'
            restart_on='none'
            type='service'>
                <service_fmri value='svc:/network/service' />
        </dependency>
 
        <dependency
            name='name-services'
            grouping='require_all'
            restart_on='refresh'
            type='service'>
                <service_fmri value='svc:/milestone/name-services' />
        </dependency>
 
        <dependency
            name='identity'
            grouping='optional_all'
            restart_on='refresh'
            type='service'>
                <service_fmri value='svc:/system/identity:domain' />
        </dependency>
  
        <dependency
            name='system-log'
            grouping='optional_all'
            restart_on='none'
            type='service'>
                <service_fmri value='svc:/system/system-log' />
        </dependency>
 
        <instance name='dovecot' enabled='false'>
 
                <dependency
                    name='config-file'
                    grouping='require_all'
                    restart_on='refresh'
                    type='path'>
                        <service_fmri
                            value='file://localhost/usr/local/etc/dovecot.conf' />
                </dependency>
 
                <exec_method
                        type='method'
                        name='start'
                        exec='/lib/svc/method/dovecot start'
                        timeout_seconds='30' />
 
                <exec_method
                        type='method'
                        name='stop'
                        exec='/lib/svc/method/dovecot stop'
                        timeout_seconds='30' />
 
                <exec_method
                        type='method'
                        name='refresh'
                        exec='/lib/svc/method/dovecot refresh'
                        timeout_seconds='30' />
 
                <template>
                        <common_name>
                                <loctext xml:lang='C'>
                                dovecot
                                </loctext>
                        </common_name>
                        <documentation>
                                <manpage title='dovecot' section='8'
                                    manpath='/usr/local/man' />
                        </documentation>
                </template>
 
        </instance>
 
        <stability value='Unstable' />
 
 </service>
 
 </service_bundle>

マニフェストをインポートします。
 # svccfg -v import dovecot.xml

!!サービス起動
 # svcadm enable dovecot
!!!リンク
*[Dovecot|http://www.dovecot.org/] - 公式