Dovecot

1. 導入前提


メールサーバのメールボックス受信機能を実現するため、POP3 サーバを構築する
アプリケーションは何でも良いので あるが、以前に利用していた qpopper 等は過去の ものと なって しまって久しいので、別のアプリケーションを選ばねば ならない
用途は Windows機で動作するメール クライアントからの POP3S でのメール受信のみ であり、IMAP 機能は使用しない

Debian で導入が容易に見えるのは Dovecot で あったので、今回は これを採用する
cyrus-pop3d でも良いのかも知れないが、差異は良く分からない

ディストリビューションは Debian (8.0 jessie) を想定して おり、そのため Dovecot のバージョンは 2.2.13 と なる



2. 設定ファイル


以前(squeeze? それよりも前?)は /etc/dovecot/dovecot.conf を編集して設定していた記憶が あるが、今は dovecot.conf ファイルに おいて

!include conf.d/*.con

と言う記述で逃げていて、編集箇所は目的部分のみ必要最低限と なる様(よう)に変更されている
そのため、Dovecot で使用される設定ファイル群は以下に格納されるが、

/etc/dovecot/conf.d

このディレクトリの下には以下のファイル群が収められて いるので、

10-auth.conf
10-director.conf
10-logging.conf
10-mail.conf
10-master.conf
10-ssl.conf
10-tcpwrapper.conf
15-lda.conf
15-mailboxes.conf
20-pop3.conf
90-acl.conf
90-plugin.conf
90-quota.conf
auth-checkpassword.conf.ext
auth-deny.conf.ext
auth-dict.conf.ext
auth-master.conf.ext
auth-passwdfile.conf.ext
auth-sql.conf.ext
auth-static.conf.ext
auth-system.conf.ext
auth-vpopmail.conf.ext

ファイル数が意外と多くて逆に分かりにくく感じるのは私だけで あろうか...

なお、postfix を意識したのか、以下で設定内容を表示する事は以前同様、現在のバージョンでも可能と なっている

dovecot -n

ただし、全ての設定値を表示し切れて いるのかは不明



3. 導入


以下の .deb パッケージを導入する

apt-get install dovecot-pop3d



4. 設定箇所


.1 Maildir からメールを受信


現在の MTA は一般的に Maildir 配送方式を採用している場合が多い筈なので、POP3 側も これに対応させておく必要が ある
ユーザのメールボックス ディレクトリが存在しないので あれば、Maildir ディレクトリ を設ける必要が ある

mkdir /home/[user]/Maildir
chown sensui.sensui /home/[user]/Maildir
chmod 700 Maildir

Dovecot のメール受信対象をユーザ毎のメールボックスファイルから Maildir に変更したいので、以下の設定箇所を変更する

cd /etc/dovecot/conf.d/
cp -p 10-mail.conf 10-mail.conf.org
vi 10-mail.conf

変更前
mail_location = mbox:~/mail:INBOX=/var/mail/%u

変更後
#mail_location = mbox:~/mail:INBOX=/var/mail/%u
mail_location = maildir:~/Maildir

これで、各ユーザへ配送されたメールをメール クライアントで受信する事が可能と なる
実際には、MTA が以下に配信したメールを Dovecot が取りに行く様で ある

/home/[user]/Maildir/new



.2 各設定ファイル


SSL,TLS で暗号化されて いない通信を利用した上での PLAIN TEXT 認証を受け付けない動作と する
要するに、平文 password でのメール受信を拒否すると言う事に なる
# 平文は何故か "ひらぶん" と読まれる事が多いが、私は "へいぶん" が正しいのでは無いかと考える

念のため、以下を確認

cat 10-auth.conf

#disable_plaintext_auth = yes

この箇所は標準動作が不暗号化 + PLAIN TEXT 認証の拒絶なので、この設定行から変更する必要は無いが、敢えて明示的に

disable_plaintext_auth = yes

と指定しても良い


.3 SSL 暗号化通信を利用したメール受信時認証の有効化

標準設定では SSL を利用した暗号化認証を行う事が出来ないため、有効化する

cp -p 10-ssl.conf 10-ssl.conf.org
vi 10-ssl.conf

変更前
ssl = no

変更後
#ssl = no
ssl = yes

なお、SSL 通信を強要し不暗号化通信を遮断したいので あれば、

ssl = required

と指定する

SSL 通信で必要と なる証明書と秘密鍵を有効化しておく
この箇所はコメント状態では無効と見做(みな)される らしく、明示的に path とファイル名を指定する必要が ある

変更前
#ssl_cert = </etc/dovecot/dovecot.pem
#ssl_key = </etc/dovecot/private/dovecot.pem

変更後
ssl_cert = </etc/dovecot/dovecot.pem
ssl_key = </etc/dovecot/private/dovecot.pem

念のため、以下を確認しておく

10-master.conf

service pop3-login {

inet_listener pop3 {

#port = 110

}
inet_listener pop3s {

#port = 995
#ssl = yes

}

}

TCP Port 110 と 995 は標準値らしく、コメントされている状態でも有効と なる らしい
Port 値を変更する必要が ある際に編集すると言う事か

また、以前は明示的に以下の様な指定を行わなければ POP3S を利用する事は出来なかった筈で あるが、上記構文で POP3 と POP3S の双方が有効で ある らしい

protocols = pop3 pop3s

ついでに、この箇所も明示的に

service pop3-login {

inet_listener pop3 {

port = 110

}
inet_listener pop3s {

port = 995
ssl = yes

}

}

と指定しても良い


.4 認証方式の指定


SSL 通信の上で PLAIN TEXT 認証を行うので、認証方式を指定する
標準動作では PLAIN TEXT 認証のみに限定されているが、念のため以下が有効で ある事を確認

cat 10-auth.conf

auth_mechanisms = plain

以前は この箇所が

mechanisms = plain

で あった記憶も あるが、どうやら変更された らしい


.5 IPv4 IP address からのメール受信に限定


標準動作では IPv4, IPv6 双方で待ち受けを行う
IPv6 IP address からのメール受信が発生しないので あれば、IPv4 IP address からのメール受信に限定しても良い

ただし この設定箇所は dovecot.conf に ある

cd /etc/dovecot/
vi dovecot.conf

変更前
#listen = *, ::

変更後
listen = *

個人的には もう このファイルを変更したく無いので、限定指定は吝(やぶさ)かでは無いが変更したくは無いと言う、何とも微妙な所では ある



5. daemon 再起動とメール受信の確認


.1 Dovecot daemon を再起動

/etc/init.d/dovecot restart
[ ok ] Restarting dovecot (via systemctl): dovecot.service.

これは以下でも良いのかも知れないが、

service dovecot restart

これだと [ ok ] も何も表示されないので、本当に restart されたのかが良く分からない

ディーモン再起動では無く設定再読み込みでも良い

service dovecot reload
[ ok ] Reloading IMAP/POP3 mail server: dovecot.

同様に、以下を実行しても [ ok ] が返らないので、不親切では ある

service dovecot reload

daemon 再起動後の message は以下の通り

Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures, enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login.

これはメールを受信後、表示されなくなる らしい


.2 受信確認


メール クライアントには Becky! を使用する
設定箇所と確認箇所は以下の通り

Becky! 設定画面 1
Becky! 設定画面 1

POP3S を有効化して おく

Becky! 設定画面 2
Becky! 設定画面 2

"証明書を検証しない" が無効で あると認証に失敗する

最後に、メール クライアントからメール受信の動作確認を行って おく

>>> 2015/05/27 20:37:35 <<<

>>> Connecting to "[POP IPaddress]" (SSL/TLS) [2015/05/27 20:37:37] <<<
+OK Dovecot ready.
USER [userID]
+OK
PASS ********
+OK Logged in.
STAT
+OK 2 1982
LIST
+OK 2 messages:
1 991
2 991
.
UIDL
+OK
1 0000002b538890c4
2 0000002c538890c4
.
RETR 1
+OK 991 octets
DELE 1
+OK Marked to be deleted.
RETR 2
+OK 991 octets
DELE 2
+OK Marked to be deleted.
QUIT
+OK Logging out, messages deleted.

正常に受信された事を確認出来た

念のため、不暗号化 + PLAIN TEXT 認証にてメール受信を行う事が不可で ある事も確認して おく

>>> 2015/05/29 21:33:26 <<<

>>> Connecting to "[POP IPaddress]" (SSL/TLS) [2015/05/29 21:33:28] <<<
+OK Dovecot ready.
USER [userID]
-ERR [AUTH] Plaintext authentication disallowed on non-secure (SSL/TLS) connections.
QUIT
+OK Logging out.

non-secure 通信上に おける Plaintext 認証メール受信が disallowed で あると言う事で、正常に遮断される事が確認された

それに しても不思議なのは、

# netstat -a 稼働中のインターネット接続 (サーバと確立) Proto 受信-Q 送信-Q 内部アドレス 外部アドレス 状態 tcp 0 0 *:pop3 *:* LISTEN tcp 0 0 lun.:domain *:* LISTEN tcp 0 0 localhost:domain *:* LISTEN tcp 0 0 *:ssh *:* LISTEN tcp 0 0 *:smtp *:* LISTEN tcp 0 0 localhost:953 *:* LISTEN tcp 0 0 *:pop3s *:* LISTEN tcp6 0 0 [::]:pop3 [::]:* LISTEN tcp6 0 0 [::]:domain [::]:* LISTEN tcp6 0 0 [::]:ssh [::]:* LISTEN tcp6 0 0 ip6-localhost:953 [::]:* LISTEN tcp6 0 0 [::]:pop3s [::]:* LISTEN udp 0 0 lun.:domain *:* udp 0 0 localhost:domain *:* udp 0 0 lun.ac:ntp *:* udp 0 0 localhost:ntp *:* udp 0 0 *:ntp *:* udp6 0 0 [::]:domain [::]:* udp6 0 0 fe80::215:58ff:fec6:ntp [::]:* udp6 0 0 ip6-localhost:ntp [::]:* udp6 0 0 [::]:ntp [::]:*


何故 ssl = required なのに POP3(TCP:110) を待ち受けているので あろうか...



6. 関連 URI


参考と なる URI は以下の通り

Dovecot
Dovecot 翻訳プロジェクト

公開 : 2015年5月31日
戻る
pagetop