○ dovecotのインストール

・Maildir形式のimapサーバを利用します
・dovecot-2.2.28をソースからインストールし、設定します
・postfixのsmtp-authで"DOVECOT_SASL"を利用します
・make はメンテナンスマシンで行っています

・ソースの取得、削除は省略します
・エディタ、ファイラーの操作は省略します
・ソースを展開したら説明文を読みましょう
・Enterキーを省略します

・ログイン端末で "#" はroot、"$" は一般ユーザのプロンプトの記号です
・設定ファイルで "#" で始まる行はコメントとして解釈されます

○関連サイト

:dovecot-2.2.28.tar.gz (http://www.dovecot.org/)

○参照ファイル

パッケージの追加
最初の設定 (Xen)
opensslのインストール

○インストール環境

:OS CentOS 6.8
:selinux disabled or permissive
:インストール先  /etc /usr/local/
:作業 ~/src
:言語 LANG=en_US.UTF-8
:ユーザー root

・メンテナンスの場合は一般ユーザから行います

○メール専用ユーザ仮設定

:root代行ユーザ luna
:一般ユーザ star,starlight
:web管理者用ユーザ  moon,moonlight



○dovecot-2.2.28

○dovecot専用ユーザとディレクトリの作製

・デフォルトで2つの専用ユーザを必要とします
uid/gid情報を参照

[root@jupiter:~]
# groupadd -g 97 dovecot
# useradd -u 97 -g 97 -d /dev/null -s /sbin/nologin dovecot
# useradd -d /dev/null -s /sbin/nologin dovenull
# mkdir -p /var/run/dovecot/{login,empty}
# chown root:dovecot /var/run/dovecot
# chown root:dovenull /var/run/dovecot/login
# chmod 750 -R /var/run/dovecot/login

○ソースの展開・コンパイル・インストール

・openssl-devel、tcp_wrappers-develを必要とします
・libwrapを組み込んでおきます

# cd ~/src
[root@jupiter:~/src]
# tar zxvf dovecot-2.2.28.tar.gz
# chown -R root:root dovecot-2.2.28
# cd dovecot-2.2.28
[root@jupiter:~/src/dovecot-2.2.28]
# make distclean

・CFLAGS="-O2 -march=i686 -mtune=atom" (CPU最適化オプション)
・CXXFLAGS="-O2 -march=i686 -mtune=atom" (CPU最適化オプション)
・該当しない場合は指定しない
・オプションは半角を入れて続けて記入した方が良い

# ./configure CFLAGS="-O2 -march=i686 -mtune=atom" \
CXXFLAGS="-O2 -march=i686 -mtune=atom" \
--prefix=/usr/local \
--sysconfdir=/etc \
--localstatedir=/var \
--with-notify=inotify \
--with-ldap=plugin \
--with-zlib \
--with-libcap \
--with-ssl=openssl \
--with-ssldir=/etc/pki/tls \
--with-libwrap

・configureの結果 ーが付いているものは組み込まれていない

Install prefix . : /usr/local
File offsets ... : 64bit
I/O polling .... : epoll
I/O notifys .... : inotify
SSL ............ : yes (OpenSSL)
GSSAPI ......... : no
passdbs ........ : static passwd passwd-file shadow pam checkpassword ldap (plugin)
dcrypt ..........: yes
                 : -bsdauth -sia -sql -vpopmail
userdbs ........ : static prefetch passwd passwd-file checkpassword ldap (plugin) nss
                 : -sql -vpopmail
SQL drivers .... :
                 : -pgsql -mysql -sqlite -cassandra
Full text search : squat
                 : -lucene -solr

・コンパイル

# make

・インストール (アップデートは別項参照)

# make install

# cd ..
[root@jupiter:~/src]
# tar jcvf dovecot-2.2.28-170226.tar.bz2 dovecot-2.2.28/

・設定ファイルをコピーします

# cd /usr/local/share/doc/dovecot/example-config
[root@jupiter:/usr/local/share/doc/dovecot/example-config]
# cp -a conf.d /etc/dovecot
# cp -a dovecot.conf /etc/dovecot
# cp -a dovecot-*.ext /etc/dovecot

○アップデート

・新規インストールの場合は、次項へ進みます
・ソースの展開・コンパイルの表記は略します

・デフォルト設定ファイル(旧)を保存します

# cd /usr/local/share/doc/dovecot
[root@jupiter:/usr/local/share/doc/dovecot]
# cp -a example-config ~/src/dovecot2227

・アップデート

# cd ~/src/dovecot-2.2.28
[root@jupiter:~/src/dovecot-2.2.28]
# make uninstall
# make install

・新旧のデフォルト設定ファイルの差分を取り
・必要があれば、設定ファイルを修正します

# cd /usr/local/share/doc/dovecot
[root@jupiter:/usr/local/share/doc/dovecot]
# cp -a example-config ~/src/dovecot2228
# cd ~/src
[root@jupiter:~/src]
# diff -urp dovecot2227 dovecot2228

・再起動します

# service dovecot restart

○pamファイルの作成

:/etc/pam.d/dovecot (root root 600)

auth       required     pam_nologin.so
auth       include      system-auth
account    include      system-auth
session    include      system-auth

・system-auth は password-auth でも良い
・違いは、指紋認証のライブラリを組み込むか否か

--- password-auth-ac	2011-10-19 08:12:35.252168379 +0900
+++ system-auth-ac	2011-10-19 08:12:35.204168428 +0900
@@ -2,6 +2,7 @@
 # This file is auto-generated.
 # User changes will be destroyed the next time authconfig is run.
 auth        required      pam_env.so
+auth        sufficient    pam_fprintd.so
 auth        sufficient    pam_unix.so nullok try_first_pass
 auth        requisite     pam_succeed_if.so uid >= 500 quiet
 auth        required      pam_deny.so

○設定ファイルの修正

・ヴァージョン2.xでは分割ファイル形式になっています
・ヴァージョン1.xの設定を引き継ぐ場合は、dovconfで確認します

# cd /etc/dovecot
[root@jupiter:/etc/dovecot]
# doveconf -n -c dovecot1.conf > dovecot2.conf

:/etc/dovecot/dovecot.conf

・listen = *
・ipv4のみ有効にします
・!include conf.d/*.conf(!マークに注意)
・conf.dディレクトリの全てのconfファイルを読み込みます

・省略

protocols = imap
listen = *
!include conf.d/*.conf

・省略

:/etc/dovecot/conf.d/10-auth.conf

・省略

#disable_plaintext_auth = yes (デフォルト yes )
auth_mechanisms = plain login

・省略

:/etc/dovecot/conf.d/10-logging.conf

・dovecot専用ログを出力します

・省略

#log_path = syslog
log_path = /var/log/dovecot.log

・省略

#info_log_path = 
info_log_path = /var/log/dovecot-info.log

・省略

:/etc/dovecot/conf.d/10-mail.conf

・imap Maildir形式でメールを保存します

・省略

mail_location = maildir:~/Maildir

・省略

mbox_write_locks = fcntl

・省略

:/etc/dovecot/conf.d/10-master.conf

・service_count = 1
・dovcot-1.xのlogin_process_per_connection = yesに該当
・unix_listener /var/spool/postfix/private/auth{}
・postfixでDOVECOT_SASLを使う場合
・外部からの接続を限定する場合、iptablesで制御します

・省略

service imap-login {
  inet_listener imap {
    #port = 143
  }
  inet_listener imaps {
    #port = 993
    #ssl = yes
  }
  service_count = 1

・省略

}

・省略

service auth {

・省略

  unix_listener /var/spool/postfix/private/auth {
    mode = 0660
    user = postfix
    group = postfix
  }

・省略

}

・省略

:/etc/dovecot/conf.d/10-ssl.conf

・接続にSSL/TLS認証を使います
・"ssl = required"設定は ssl接続を要求します
・ssl_cert ssl_key (1.2.xと書式が異なる、< マークに注意)
・証明書の作成は 認証局と証明書の発行 を参照してください

・省略

#ssl = yes (デフォルト yes )
ssl = required
ssl_cert = </etc/pki/tls/certs/mail-server.crt
ssl_key = </etc/pki/tls/private/mail-server.key
ssl_protocols = !SSLv2 !SSLv3
ssl_cipher_list = ALL:!LOW:!SSLv2:!SSLv3:!EXP:!aNULL

・省略

・SSLの調査 dovecot.serverにはサーバ名を入れます
・クライアントからの接続はサーバ起動後に行います

・利用可能なprotocolを調べる(クライアントでopensslコマンドを使う)

$ openssl s_client -ssl2 -connect dovecot.server:993
$ openssl s_client -ssl3 -connect dovecot.server:993
$ openssl s_client -tls1 -connect dovecot.server:993
$ openssl s_client -tls1_1 -connect dovecot.server:993
$ openssl s_client -tls1_2 -connect dovecot.server:993

・利用可能なcipherを調べる(サーバでopensslコマンドを使う)

$ openssl ciphers -v 'ALL:!LOW:!SSLv2:!SSLv3:!EXP:!aNULL'

:/etc/dovecot/conf.d/20-imap.conf

・省略

  imap_client_workarounds = delay-newmail tb-extra-mailbox-sep

・省略


○dovecotパラメータの確認

・全てのパラメータを表示

[root@jupiter:/etc/dovecot]
# dovecot -a

・修正したパラメータの表示

# dovecot -n

○起動ファイルの作成

/etc/rc.d/init.d/dovecot (詳細別記)

○selinuxヘの対応 (selinuxが有効の場合)

・新規インストールファイルのselinuxラベルを修正

# cd ~
[root@jupiter:~]
# restorecon -Rv /etc
# restorecon -Rv /usr/local
# restorecon -Rv /var/run

○dovecotの起動

[root@jupiter:~]
# service dovecot start
# chkconfig --add dovecot



○dovecotログファイル 1

○dovecotログのローテーション

:/ete/logrotate.d/dovecot

# dovecot SIGUSR1: Re-opens the log files.
/var/log/dovecot*.log {
  missingok
  sharedscripts
  postrotate
    /bin/kill -USR1 `cat /var/run/dovecot/master.pid 2>/dev/null` 2>/dev/null || true
  endscript
}



○dovecotログファイル 2

・デフォルトのsyslog経由maillogを専用ファイルに出力します

○dovecot設定ファイルの修正

:/etc/dovecot/conf.d/10-logging.conf

・syslog_facilityを変更します

・省略

#log_path = syslog

・省略

#syslog_facility = mail
syslog_facility = local1

・省略


○rsyslog.confの修正

・local1に出力されたログを/var/log/dovecot.logに書き込みます
・スペースの入力には"Tabキー"を使う

:/etc/rsyslog.conf (変更追加分)

*.info;mail.none;authpriv.none;cron.none;local1.none /var/log/messages
local1.*   /var/log/dovecot.log

○rsyslogの再起動

[root@jupiter:~]
# service rsyslog restart

○dovecotログのローテーション

:/ete/logrotate.d/syslog

/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
/var/log/dovecot.log
{
    sharedscripts
    postrotate
    /bin/kill -HUP `cat /var/run/syslogd.pid 2>/dev/null` 2>/dev/null || true
    endscript
}



○libwrapによるアクセス制御

・ほとんど使わないと思うが、不正アクセスを一時的に止めたいときなど
・dovecotを再起動しないで、hosts.allowを修正するだけで制御できます

:/etc/dovecot/dovecot.conf

login_access_sockets = tcpwrap

service tcpwrap {
    unix_listener login/tcpwrap {
        user = $default_login_user
        group = $default_login_user
        mode = 0600
    }
}

:/etc/hosts.allow

ALL: 127.0.0.1
proftpd: 192.168.0.
mysqld: 192.168.0.
sshd: 192.168.0.
imap: ALL

:/etc/hosts.deny

ALL: ALL



○Maildirディレクトリ形式

・postfix、dovecot起動時にMaildirは作成されません
・新規のメッセージをpostfixが受信した時、Maildirが存在しない場合に作成されます
・新しいユーザに対して、mailコマンド等でWelcomeメッセージを送信するか、
・前もって、Maildirディレクトリを作成します

Maildirの作製を参照



○dovecot(imap)接続テスト

・plain認証・SSL/TLS接続のテストです
・CentOS 6 の thunderbirdから接続しています
・通常接続(port 143) SSL/TLS接続(port 993)の場合です

disable_plaintext_auth = yes
ssl = yes
の場合 通常接続 不可 SSL/TLS接続 可

disable_plaintext_auth = yes
ssl = no
の場合 通常接続 不可(認証なしの接続がない?) SSL/TLS接続 不可

disable_plaintext_auth = no
ssl = yes
の場合 通常接続 可 SSL/TLS接続 可

disable_plaintext_auth = no
ssl = no
の場合 通常接続 可 SSL/TLS接続 不可

disable_plaintext_auth = no
ssl = requied
の場合 通常接続 不可 SSL/TLS接続 可(SSL/TLS接続を要求される?)

たぶん
ssl = yes では ssl接続可能
ssl = requied ではssl接続要求

○ Copyright(c) 528p.com All Rights Reserved.