●Dovecot 2.0のインストール
Fedora 14からDovecotのバージョンが2となりました。
Dovecotをインストールします。
●設定ファイルについて
Dovecot 2.0では設定ファイルが下記のように配置されます。
●パラメーターについて
全てのパラメータを表示
●dovecot.confの設定
下記のとおり設定します。
●10-master.confの設定
※の状態でdovecotを起動すると、imap、ipaps、pop3、pop3sのすべてが通信できるようになります。
10-master.confの設定を確認するとデフォルトは下記のような状態です。
dovecot/imap-loginのプロセスが大量に発生している場合の対策は下記のとおりです。
参考URL:Dovecotで時々サーバーに接続できなくなる
設定後同様の現象が発生(20161201)
参考URL:Dovecot認証アタックによるログインプロセス乱立をさせないの巻
20161212に上記URLを参考に設定有効化(様子見)
imapsだけを有効にしたい場合は下記のように記載します。
●10-auth.confの設定
10-auth.confの設定
標準設定ではPOPS、IMAPS は無効です。POP、IMAPで平文で認証を有効にするには下記のようにします。
●10-mail.confの設定
10-mail.confの設定
●10-ssl.confの設定
10-ssl.confの設定
証明書の作成方法はこちらを参照してください。
SSL証明書を使用してOutlook Express 6.0で接続した場合のログは下記のとおりです。
●20-imap.confの設定
2016.02.24追記
dovecotとroundcubemailを同じサーバを動作させていますのでIMAPsを利用する必要はありません。これは、UNIX Domain Socket(localhost)を利用して通信するための設定です。
今回は、IMAPによる接続はlocalhostのみとし、IMAPsによる接続はどこからでもOKとします。
●auth-system.conf.extの設定
あらかじめ「10-auth.conf」でcram-md5を使用できるように設定しておく必要があります。
CRAM-MD5用passdbの作成及びアクセス権の設定をします。
スキーマについてはこちらを参照してください。
●dovecot20-sieveの設定(メール振り分け)
Sieveについてはこちらを参照してください。
まず、15-lda.confを編集します。
●詳細ログの出力
参考URL:dovecotのエラー調整方法
Dovecotでサービスが異常にたくさん起動しエラーが発生する(メールの送受信が出来ない等)ようになりました。
ついでにこの出力ログを利用してfail2banでBANできるように設定を変更します。
●Fedora 14からFedora 15にアップグレード後、自動起動しなくなった
下記を実行したところ自動起動するようになりました。
●dovecot.service: main process exited, code=exited, status=89/n/aのため起動できない
サーバを再起動したところDovecotが自動起動しなくなりました。restartしても起動しません。/var/log/messagesを確認すると下記のようなエラーが記録されていました。
以上で作業は完了しました。
●メールクライアントが時々接続できなくなる
参照URL:Dovecotで時々サーバーに接続できなくなる
メールクライアントが時々接続できなくなる現象が発生しました。
調べたところプロセスが大量に存在していました。
そのため、下記のように対応しました。
※補足
service_countは以前のバージョンでは、
login_process_per_connection = no
を記述することと同等です。
設定ファイルに"login_process_per_connection = no"を記述し、Dovecotを再起動すると、
doveconf: Warning: Obsolete setting in /etc/dovecot/dovecot.conf:nn: login_process_per_connection has been replaced by service { service_count } のワーニングが発生します。
●pop3-login: Disconnected (tried to use disabled plaintext auth)
メールクライアントからプレーンテキストで接続したところ、下記のようなエラーが記録されました。
●mail_location not set and autodetection failed
メールクライアントからプレーンテキストで接続したところ、下記のようなエラーが記録されました。
●Error: Couldn't open INBOX
メールクライアントからプレーンテキストで接続したところ、下記のようなエラーが記録されました。
●master: Error: service(imap-login): listen(::, 143) failed: Address
Dovecot起動時に下記のようなエラーが表示されました。
下記のように対応します。
Fedora 14からDovecotのバージョンが2となりました。
Dovecotをインストールします。
# yum install dovecot # service dovecot # chkconfig dovecot onDovecotの詳細についてはWikiを参照してください。
●設定ファイルについて
Dovecot 2.0では設定ファイルが下記のように配置されます。
基本となる設定ファイル /etc/dovecot/dovecot.conf その他の設定ファイル /etc/dovecot/conf.d/*.confDovecot 2.0を初めてインストールした場合はconf.dフォルダ以下にファイルがない場合があります。その場合は下記のように設定ファイルをコピーします。
# cd /usr/share/doc/dovecot-2.0.1/example-config # cp -a conf.d /etc/dovecot # cp -a dovecot.conf /etc/dovecotその後、設定したいファイルを編集します。
●パラメーターについて
全てのパラメータを表示
# dovecot -a修正したパラメータを表示
# dovecot -n
●dovecot.confの設定
下記のとおり設定します。
# /etc/dovecot/dovecot.conf 「!」マークに注意 conf.dディレクトリの全てのconfファイルを読み込む !include conf.d/*.conf imaps、pop3s等は指定できない※ protocols = imap pop3 IPv4及びIPv6全てのインターフェースをリッスンする listen = *, ::設定が完了したら、設定ファイルを読みこませるためDovecotをreloadまたはrestartします。
●10-master.confの設定
※の状態でdovecotを起動すると、imap、ipaps、pop3、pop3sのすべてが通信できるようになります。
10-master.confの設定を確認するとデフォルトは下記のような状態です。
~ 省略 ~ service imap-login { inet_listener imap { #port = 143 } inet_listener imaps { #port = 993 #ssl = yes } ~ 省略 ~ service pop3-login { inet_listener pop3 { #port = 110 } inet_listener pop3s { #port = 995 #ssl = yes } } ~ 省略 ~コメントアウトされていても認識されるようです。
dovecot/imap-loginのプロセスが大量に発生している場合の対策は下記のとおりです。
参考URL:Dovecotで時々サーバーに接続できなくなる
設定後同様の現象が発生(20161201)
参考URL:Dovecot認証アタックによるログインプロセス乱立をさせないの巻
20161212に上記URLを参考に設定有効化(様子見)
service imap-login { service_count=1 inet_listener imap { #port = 143 } inet_listener imaps { #port = 993 #ssl = yes } } ※popの場合 service pop3-login { service_count=1 inet_listener pop3 { #port = 110 } inet_listener pop3s { #port = 995 #ssl = yes } }設定後、Dovecotを再起動してください。
imapsだけを有効にしたい場合は下記のように記載します。
~ 省略 ~ service imap-login { inet_listener imap { port = 0 } inet_listener imaps { port = 993 ssl = yes } ~ 省略 ~ service pop3-login { inet_listener pop3 { port = 0 } inet_listener pop3s { port = 0 #ssl = yes } } ~ 省略 ~dovecotをリロードまたは再起動すると有効になります。
●10-auth.confの設定
10-auth.confの設定
標準設定ではPOPS、IMAPS は無効です。POP、IMAPで平文で認証を有効にするには下記のようにします。
disable_plaintext_auth = noCRAM-MD5で接続するためには下記のようにします。
# vi /etc/dovecot/conf.d/10-auth.conf plain : Outlool Express 6用のPLAIN設定 cram-md5 : CRAM-MD5で接続するためのSYLPHEED用の設定 auth_mechanisms = plain cram-md5
●10-mail.confの設定
10-mail.confの設定
# vi /etc/dovecot/conf.d/10-mail.conf
Maildir形式とする
mail_location = maildir:~/Maildir
●10-ssl.confの設定
10-ssl.confの設定
証明書の作成方法はこちらを参照してください。
# vi /etc/dovecot/conf.d/10-ssl.conf ssl = yes ssl_cert = </etc/pki/dovecot/certs/dovecot.pem ssl_key = </etc/pki/dovecot/private/dovecot.pemIMAPで設定する接続先のホスト名とSSL証明書で指定しているFQDNが一致していない場合、接続できません、
SSL証明書を使用してOutlook Express 6.0で接続した場合のログは下記のとおりです。
Dec 8 00:13:22 inu dovecot: imap-login: Login: user=<ユーザ名>, method=PLAIN, rip=***.***.***.***, lip=***.***.***.***, mpid=18562, TLS
●20-imap.confの設定
2016.02.24追記
dovecotとroundcubemailを同じサーバを動作させていますのでIMAPsを利用する必要はありません。これは、UNIX Domain Socket(localhost)を利用して通信するための設定です。
今回は、IMAPによる接続はlocalhostのみとし、IMAPsによる接続はどこからでもOKとします。
protocol imap { listen = 127.0.0.1:143 [::1]:143 ← 127.0.0.1/::1からだけimapでの通信を許可 ssl_listen = *:993 [::]:993 ← SSLでの通信はどこからでも許可 }
●auth-system.conf.extの設定
あらかじめ「10-auth.conf」でcram-md5を使用できるように設定しておく必要があります。
# vi /etc/dovecot/conf.d/10-auth.conf auth_mechanisms = plain cram-md5CRAM-MD5を使用するためauth-system.conf.extを設定します。
# vi /etc/dovecot/conf.d/auth-system.conf.ext -----追記 ここから----- # passwd-like file with specified location passdb { driver = passwd-file # Path for passwd-file. Also set the default password scheme. args = scheme=cram-md5 /etc/cram-md5.pwd } -----追記 ここまで----CRAM-MD5についてはこちらを参照してください。
CRAM-MD5用passdbの作成及びアクセス権の設定をします。
# touch /etc/cram-md5.pwd # chmod 0640 /etc/cram-md5.pwd # chgrp dovecot /etc/cram-md5.pwdpassdbの内容
username:passwordhashハッシュされたパスワードを作成するため「doveadm pw」を実行します。
# doveadm pw Enter new password:入力 Retype new password:再入力 {CRAM-MD5}e02d374fde0dc75a17a557039a3a5338c7743304777dccd376f332bee68d2cf6これがCRAM-MD5用のパスワードとなります。これを/etc/cram-md5.pwdに貼り付けます。
username:e02d374fde0dc75a17a557039a3a5338c7743304777dccd376f332bee68d2cf6スキーマを指定する場合は下記のようにしてください。
スキーマについてはこちらを参照してください。
# doveadm pw -s sha1 Enter new password: Retype new password: {SHA1}qUqP5cyxm6YcTAhz05Hph5gvu9M=設定したパスワードを反映させるためDovecotをreloadします。
# service dovecot relaod
Dovecot Imap を再読み込み中 [ OK ]
SylpheedでCRAM-MD5を使用して接続したときのログは下記のとおりです。
Dec 8 00:01:20 inu dovecot: imap-login: Login: user=<ユーザ名>, method=CRAM-MD5, rip=***.***.***.***, lip=***.***.***.***, mpid=17465, secured
●dovecot20-sieveの設定(メール振り分け)
Sieveについてはこちらを参照してください。
# yum install dovecot-pigeonhole-2.0.1-1.fc14.i686/etc/dovecot/conf.dに20-managesieve.conf、90-sieve.confがインストールされます。
まず、15-lda.confを編集します。
# vi /etc/dovecot/conf.d/15-lda.conf
protocol lda {
mail_plugins = $mail_plugins sieve
}
20-lmtp.confを編集します。
# vi /etc/dovecot/conf.d/20-lmtp.conf protocol lmtp { mail_plugins = $mail_plugins sieve }90-sieve.confを編集します。
# vi /etc/dovecot/conf.d/90-sieve.conf plugin { sieve = ~/.dovecot.sieve sieve_dir = ~/sieve }ホームディレクトリに.dovecot.sieveを作成します。
$ vi .dovecot.sieve require "fileinto"; if header :contains "subject" "Logwatch" { fileinto "logwatch"; } elsif header :contains "subject" "sshd" { fileinto "ssh"; } elsif header :contains "from" "nagios" { fileinto "nagios"; } else { # The rest goes into INBOX # default is "implicit keep", we do it explicitly here keep; }
●詳細ログの出力
参考URL:dovecotのエラー調整方法
Dovecotでサービスが異常にたくさん起動しエラーが発生する(メールの送受信が出来ない等)ようになりました。
/var/log/messagesのログ Dec 12 04:31:24 serverA dovecot: master: Warning: service(imap-login): process_limit (100) reached, client connections are being droppedそのため、エラーが詳細に出力されるように上記URLを参考に設定変更しました。
# vi /etc/dovecot/dovecot.conf auth_verbose = yes auth_debug = yes # systemctl restart dovecot確認のためメーラーでわざとログイン名を間違えてみます。
Dec 12 15:51:44 serverA dovecot: auth-worker(19638): Debug: pam(hogehoge,192.168.0.2): lookup service=dovecot
Dec 12 15:51:44 serverA dovecot: auth-worker(19638): pam(hogehoge,192.168.0.2): unknown user
Dec 12 15:51:46 serverA dovecot: auth: Debug: client passdb out: FAIL#0116#011user=hogehoge
Dec 12 15:51:46 serverA dovecot: auth: Debug: client in:
AUTH#0117#011PLAIN#011service=imap#011secured#011session=AtFqiXBDygDAqBQC#011lip=192.168.0.4 / #011rip=192.168.0.2#011lport=993#011rport=33226#011resp=<hidden>
Dec 12 15:51:44 serverA dovecot: auth-worker(19638): pam(hogehoge,192.168.0.2): unknown user
Dec 12 15:51:46 serverA dovecot: auth: Debug: client passdb out: FAIL#0116#011user=hogehoge
Dec 12 15:51:46 serverA dovecot: auth: Debug: client in:
AUTH#0117#011PLAIN#011service=imap#011secured#011session=AtFqiXBDygDAqBQC#011lip=192.168.0.4 / #011rip=192.168.0.2#011lport=993#011rport=33226#011resp=<hidden>
ついでにこの出力ログを利用してfail2banでBANできるように設定を変更します。
●Fedora 14からFedora 15にアップグレード後、自動起動しなくなった
下記を実行したところ自動起動するようになりました。
# systemctl enable dovecot.service
●dovecot.service: main process exited, code=exited, status=89/n/aのため起動できない
サーバを再起動したところDovecotが自動起動しなくなりました。restartしても起動しません。/var/log/messagesを確認すると下記のようなエラーが記録されていました。
Oct 24 09:20:20 server01 dovecot: Error: service(imap-login): listen(*, 993) failed: Address already in use Oct 24 09:20:20 server01 dovecot: Fatal: Failed to start listeners Oct 24 09:20:20 server01 systemd: dovecot.service: main process exited, code=exited, status=89/n/a Oct 24 09:20:20 server01 systemd: Unit dovecot.service entered failed state. Oct 24 09:20:20 server01 systemd: dovecot.service failed.993番ポートを使用しているプロセスを調べます。
[root@server01 ~]# netstat -tulpn | grep :993 (何も表示されない・・・おかしい。)念のため、別のサーバを調べてみます。
[root@server02 ~]# netstat -na|grep 993 tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN tcp 0 0 ※1:2049 ※2:993 ESTABLISHED tcp6 0 0 :::993 :::* LISTEN ※1:server02のIPアドレス ※2:server01のIPアドレスこれが原因っぽい。2049番ポートを使用するプロセスはNFSです。したがって、server02でNFS関連のサービスを一旦全て停止します。server01でDovecotを起動します。その後、server02でNFS関連のサービスを起動します。
[root@server02 ~]# systemctl stop rpcbind [root@server02 ~]# systemctl stop nfs-server [root@server02 ~]# systemctl stop nfs-lock [root@server02 ~]# systemctl stop nfs-idmap [root@server01 ~]# systemctl start dovecot (無事起動しました。) [root@server02 ~]# systemctl start rpcbind [root@server02 ~]# systemctl start nfs-server [root@server02 ~]# systemctl start nfs-lock [root@server02 ~]# systemctl start nfs-idmapNFSサーバ側を再起動しましたので、NFSクライアント側でマウントされているか確認しておいてください。マウントされていない場合は、必要に応じてマウントしてください。
以上で作業は完了しました。
●メールクライアントが時々接続できなくなる
参照URL:Dovecotで時々サーバーに接続できなくなる
メールクライアントが時々接続できなくなる現象が発生しました。
調べたところプロセスが大量に存在していました。
そのため、下記のように対応しました。
# vi /etc/dovecot/conf.d/20-imap.conf service imap-login { service_count=1 } # systemctl restart dovecotこれで対応完了です。
※補足
service_countは以前のバージョンでは、
login_process_per_connection = no
を記述することと同等です。
設定ファイルに"login_process_per_connection = no"を記述し、Dovecotを再起動すると、
doveconf: Warning: Obsolete setting in /etc/dovecot/dovecot.conf:nn: login_process_per_connection has been replaced by service { service_count } のワーニングが発生します。
●pop3-login: Disconnected (tried to use disabled plaintext auth)
メールクライアントからプレーンテキストで接続したところ、下記のようなエラーが記録されました。
Nov 30 10:25:36 server04 dovecot: pop3-login: Disconnected (tried to use disabled plaintext auth): rip=192.168.0.114, lip=192.168.0.1これを解消するため、/etc/dovecot/conf.d/10-auth.confを変更します。
# diff /etc/dovecot/conf.d/10-auth.conf /etc/dovecot/conf.d/10-auth.conf.org 10d9 < disable_plaintext_auth = no 98c97 < auth_mechanisms = plain login --- > auth_mechanisms = plain
●mail_location not set and autodetection failed
メールクライアントからプレーンテキストで接続したところ、下記のようなエラーが記録されました。
Nov 30 10:38:03 server04 dovecot: pop3-login: Login: user=<hoge>, method=PLAIN, rip=192.168.0.114, lip=192.168.0.1, mpid=47913 Nov 30 10:38:03 server04 dovecot: pop3(hoge): Error: user hoge: Initialization failed: mail_location not set and autodetection failed: \ Mail storage autodetection failed with home=/home/hoge Nov 30 10:38:03 server04 dovecot: pop3(hoge): Error: Invalid user settings. Refer to server log for more information.これを解消するため、/etc/dovecot/conf.d/10-mail.confを変更します。
$ diff /etc/dovecot/conf.d/10-mail.conf /etc/dovecot/conf.d/10-mail.conf.org 31d30 < mail_location = mbox:~/mail:INBOX=/var/mail/%u
●Error: Couldn't open INBOX
メールクライアントからプレーンテキストで接続したところ、下記のようなエラーが記録されました。
Nov 30 10:40:37 server04 dovecot: pop3(hoge): Error: chown(/home/hoge/mail/.imap/INBOX, -1, 12(mail)) failed: \ Operation not permitted (egid=509(hoge), group based on /var/mail/hoge) Nov 30 10:40:37 server04 dovecot: pop3(hoge): Error: mkdir(/home/hoge/mail/.imap/INBOX) failed: Operation not permitted Nov 30 10:40:37 server04 dovecot: pop3(hoge): Error: Couldn't open INBOX: Internal error occurred. \ Refer to server log for more information. [2018-11-30 10:40:37] Nov 30 10:40:37 server04 dovecot: pop3(hoge): Couldn't open INBOX top=0/0, retr=0/0, del=0/0, size=0これを解消するため、/var/mail/hogeのアクセス権を変更します。
# chmod 600 /var/mail/hoge
●master: Error: service(imap-login): listen(::, 143) failed: Address
Dovecot起動時に下記のようなエラーが表示されました。
12月 20 07:36:13 tori.bigbang.dyndns.org dovecot[604289]: master: Error: socket() failed: Address family not supported by protocol 12月 20 07:36:13 tori.bigbang.dyndns.org dovecot[604289]: master: Error: service(imap-login): listen(::, 143) failed: Address family n> 12月 20 07:36:13 tori.bigbang.dyndns.org dovecot[604289]: Error: socket() failed: Address family not supported by protocol 12月 20 07:36:13 tori.bigbang.dyndns.org dovecot[604289]: Error: service(imap-login): listen(::, 993) failed: Address family not suppo> 12月 20 07:36:13 tori.bigbang.dyndns.org dovecot[604289]: master: Error: socket() failed: Address family not supported by protocol 12月 20 07:36:13 tori.bigbang.dyndns.org dovecot[604289]: master: Error: service(imap-login): listen(::, 993) failed: Address family n> 12月 20 07:36:13 tori.bigbang.dyndns.org dovecot[604289]: Fatal: Failed to start listeners 12月 20 07:36:13 tori.bigbang.dyndns.org dovecot[604289]: master: Fatal: Failed to start listenersこれはネットワーク設定時にIPv6を無効にしたためです。
下記のように対応します。
# vi /etc/dovecot/dovecot.conf #listen = *, :: ↓ listen = * # systemctl restart dovecot