dovecot 1.1.11

(最終更新日時:2009-02-21 08:24:13)
POP3/IMAPメールサーバーは、SSL対応の Dovecot をインストールします。
ユーザー認証は、PostfixAdmin と連携させ MySQL で行います。
また、DovecotPostfix のAUTH-SMTP認証でも連携して使用されます。

ダウンロード

Stable releases sources v1.1.11dovecot-1.1.11.tar.gz

事前準備

関連パッケージとして、下記を事前にインストールしておきます。
MySQL データベース 認証情報管理に MySQL を使用します

インストール

Dovecot用のgroupおよびuserを作成します。
# groupadd -g 97 dovecot
# useradd  -g dovecot -s /sbin/nologin -d /usr/local/libexec/dovecot -M -u 97 dovecot
/usr/local/srcディレクトリでアーカイブを展開し、コンパイルおよびインストールを行います。
$ cd /usr/local/src
$ tar xzvf ダウンロード先/dovecot-1.1.11.tar.gz
$ cd dovecot-1.1.11
$ ./configure \
>   --with-sql \                                              SQLによる認証を行います
>   --with-mysql \                                            MySQLを使用します
>   --without-passwd \                                        /etc/passwdによる認証は行いません
>   --without-passwd-file \                                   /etc/passwd形式のファイルによる認証は行いません
>   --without-pam \                                           pamによる認証は行いません
>   --without-checkpassword \                                 checkpasswordプログラムによる認証は行いません
>   --without-bsdauth \                                       BSD認証は行いません
>   --without-static-userdb \                                 静的定義による認証は行いません
>   --without-prefetch-userdb                                 その他のユーザデータベースによる認証は行いません
$ make

$ su                                                          ここからはrootで行います
# #---(checkinstallでRPMファイルを作成し、インストールします)---
# /usr/sbin/checkinstall --exclude=/selinux -R --fstrans=no -y
# rpm -Uhv -nodeps /usr/src/redhat/RPMS/i386/dovecot-1.1.11-1.i386.rpm

# #---(checkinstallを使用されない場合は、make install でインストールします)---
# make install

設定

定義ファイルを設定します。
# cp /usr/local/etc/dovecot-example.conf /usr/local/etc/dovecot.conf
# vi /usr/local/etc/dovecot.conf

     :
#protocols = imap imaps
protocols = imap imaps pop3 pop3s                             対応サービスに POP3/POP3S を追加します
     :
#disable_plaintext_auth = yes
disable_plaintext_auth = no                                   グループウェアでの接続を考慮し plaintext での認証を許可します
     :
#ssl_cert_file = /etc/ssl/certs/dovecot.pem
ssl_cert_file = /etc/postfix/ssl/server.crt                   postfixと共有しています
#ssl_key_file = /etc/ssl/private/dovecot.pem
ssl_key_file  = /etc/postfix/ssl/server.key
     :
#mail_location =
mail_location = maildir:%h                                    メールはMaildir形式でホームディレクトリにあります
     :
protocol pop3 {
     :
  #pop3_uidl_format = %08Xu%08Xv
  # (別のPOP3サーバから移行する場合は、コメントを外しそのフォーマットを指定します)
     :
auth default {
     :
  mechanisms = plain login                                    認証メカニズムに LOGIN を追加しています#passdb pam {                                               PAMによるパスワード認証は行いません#}

  # System users (NSS, /etc/passwd, or similiar)
     :
  # SQL database <doc/wiki/AuthDatabase.SQL.txt>
  #passdb sql {
  passdb sql {                                                データベースによるパスワード認証を行います
    # Path for SQL configuration file, see doc/dovecot-sql-example.conf
    #args =
    args = /usr/local/etc/dovecot-mysql.conf                  認証の定義ファイルを指定します
  }
  #}
     :
  #userdb passwd {                                            /etc/passwdによるユーザ認証は行いません#}

  # passwd-like file with specified location
     :
  #userdb sql {
  userdb sql {                                                データベースによるユーザ認証を行います
    # Path for SQL configuration file, see doc/dovecot-sql-example.conf
    #args =
    args = /usr/local/etc/dovecot-mysql.conf                  認証の定義ファイルを指定します
  }
  #}
     :
  #socket listen {
  socket listen {                                             postfixからの認証要求リクエストを監視するようにします
     :
    #client {
    client {
      # The client socket is generally safe to export to everyone. Typical use
      # is to export it to your SMTP server so it can do SMTP AUTH lookups
      # using it.
      #path = /var/run/dovecot/auth-client
      path = /var/spool/postfix/private/auth                  postfixとの通信ソケットファイルを指定します
      #mode = 0660
      mode  = 0660                                            通信ソケットファイルのパーミッションを指定します
      user  = postfix                                         通信ソケットファイルの所有者を指定します
      group = postfix
    }
    #}
  }
  #}
     :

認証の定義ファイルを設定します。
# cp -fv /usr/local/src/dovecot-1.0.10/doc/dovecot-sql-example.conf /usr/local/etc/dovecot-mysql.conf
# vi /usr/local/etc/dovecot-mysql.conf

     :
# Database driver: mysql, pgsql, sqlite
#driver =
driver = mysql                                                MySQLを使用します
     :
#connect =
connect = host=/tmp/mysql.sock dbname=postfix user=postfix password=接続パスワード
# (MySQLとの通信ソケットファイル、データベース名、接続ユーザー、接続パスワードを指定します)
     :
#default_pass_scheme = PLAIN-MD5
default_pass_scheme = MD5-CRYPT                               Postfix Adminのパスワード保存形式は MD5-CRYPT です
     :
#password_query = \
#  SELECT username, domain, password \
#  FROM users WHERE username = '%n' AND domain = '%d'
password_query = \
  SELECT password FROM mailbox WHERE username = '%u' AND active = '1'
# (パスワードを取得するSQL文を指定します)
     :
#user_query = \
#  SELECT home, uid, gid \
#  FROM users WHERE username = '%n' AND domain = '%d'
user_query = \
  SELECT concat('/home/postfix/', maildir) AS home, 5000 AS uid, 5000 AS gid \
    FROM mailbox WHERE username = '%u' AND active = '1'
# (ユーザ情報を取得するSQL文を指定します)
# (home は ユーザメールボックスのホームディレクトリです)
# (uid, gid は postfix の virtual_uid_maps, virtual_uid_maps と同じ値にします)

起動

自動起動設定を行います。
# vi /etc/rc.d/init.d/dovecot

#!/bin/bash
#
#       /etc/rc.d/init.d/dovecot
#
# Starts the dovecot daemon
#
# chkconfig: - 54 54
# description: Dovecot Imap Server
# processname: dovecot
# Source function library.
. /etc/init.d/functions

test -x /usr/local/sbin/dovecot || exit 0

RETVAL=0
prog="Dovecot IMAP/POP3"

start() {
        echo -n $"Starting $prog: "
        rm -f /usr/local/var/run/dovecot/master.pid
        daemon /usr/local/sbin/dovecot
        RETVAL=$?
        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/dovecot
        echo
}

stop() {
        echo -n $"Stopping $prog: "
        killproc /usr/local/sbin/dovecot
        RETVAL=$?
        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/dovecot
        echo
}

#
#       See how we were called.
#
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  reload|restart)
        stop
        start
        RETVAL=$?
        ;;
  condrestart)
        if [ -f /var/lock/subsys/dovecot ]; then
            stop
            start
        fi
        ;;
  status)
        status /usr/local/sbin/dovecot
        RETVAL=$?
        ;;
  *)
        echo $"Usage: $0 {condrestart|start|stop|restart|reload|status}"
        exit 1
esac

exit $RETVAL

# chmod 755 /etc/rc.d/init.d/dovecot
# chkconfig dovecot on
ファイアーウォール iptables の設定を追加します。
# vi /usr/local/sbin/firewall.sh
# --- (INPUTチェイン) ---# POP3/POP3S接続を許可
iptables -A INPUT -i $EXTIF -p tcp --dport 110 -j CHK-SYNFLOOD
iptables -A INPUT -i $EXTIF -p tcp --dport 995 -j CHK-SYNFLOOD

# IMAP/IMAPS接続を許可
iptables -A INPUT -i $EXTIF -p tcp --dport 143 -j CHK-SYNFLOOD
iptables -A INPUT -i $EXTIF -p tcp --dport 993 -j CHK-SYNFLOOD# --- (OUTPUTチェイン) ---# POP3/POP3S接続を許可
iptables -A OUTPUT -o $EXTIF -p tcp --sport 110 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o $EXTIF -p tcp --sport 995 -m state --state ESTABLISHED -j ACCEPT

# IMAP/IMAPS接続を許可
iptables -A OUTPUT -o $EXTIF -p tcp --sport 143 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o $EXTIF -p tcp --sport 993 -m state --state ESTABLISHED -j ACCEPT
# firewall.sh                                                 設定を反映させます
dovecotを起動します。
# service dovecot start
 
a System House to build an Accounting system by the Computer Technology