POP3/IMAP Server : Dovecot

(最終更新日時:2010-04-13 12:56:23)
POP3/IMAP サーバーとして、SSL に対応しているオープンソースの Dovecot をインストールします。
ユーザー認証は、PostfixAdmin と連携させ MySQL で行います。
また、DovecotPostfix の AUTH-SMTP 認証でも連携して使用します。

ダウンロード

Stable releases v1.2.11 sourcesdovecot-1.2.11.tar.gz
 (※)下線部は 2010/04/13 現在の最新安定バージョンです。

事前準備

関連パッケージとして、下記を事前にインストールしておきます。
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-shadow \                                        # shadow パスワードによる認証は行いません
>   --without-pam \                                           # pam による認証は行いません
>   --without-checkpassword \                                 # checkpassword プログラムによる認証は行いません
>   --without-bsdauth \                                       # BSD 認証は行いません
>   --without-static-userdb \                                 # 静的なユーザーデータベースによる認証は行いません
>   --without-prefetch-userdb                                 # その他のユーザーデータベースによる認証は行いません
$ make

$ sudo 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=actmysql.server.localnet dbname=postfix user=postfix password=接続パスワード
# (MySQL のホスト名、データベース名、接続ユーザー、および接続パスワードを指定します)
     :
#default_pass_scheme = 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

フィードバック

記事の内容についてのご質問、ご指摘、その他ご意見等は、Weblog/Twitter にて受け付けております。

System House ACT Weblog 内記事 : POP3/IMAP Server : Dovecot

トラックバックまたはコメントにてお寄せください。

Twitter では .systemact 宛につぶやいてください。
また、こちら から、この記事についてつぶやくことができます。
 
a System House to build an Accounting system by the Computer Technology