CentOS 7 で Dovecot を利用して独自ドメインのメールを受信できるようにする最低限の設定についての解説。SMTP 認証や暗号化については別の記事でまとめる予定。
Postfix については「CentOS 7 の Postfix で独自ドメインの設定 - Qiita」を参照。
Dovecot
[Dovecot](https://www.dovecot.org/) は Linux/UNIX 系システム用に書かれたオープンソースの IMAP および POP3 サーバーである。 [^dovecot] いわゆる受信メールサーバーに当たり、 MRA (Mail Retrieval Agent) と呼ばれることもある。他に [Courier](http://www.courier-mta.org/) などがある。Dovecot を MDA (Mail Delivery Agent) と紹介している記事が多いが、 CentOS の標準の MDA は Procmail になる。 1 2
Open email survey (2019) の調査によると、343万台の IMAP サーバーの内 Dovecot は76%のシェアを占める。
リファレンス
- QuickConfiguration - Dovecot Wiki
- FrontPage - Dovecot Wiki
- 第13章 メールサーバー - Red Hat Customer Portal - Red Hat Enterprise Linux 7 の「システム管理者のガイド」。
firewalld の設定
firewall-cmd --list-services && \
firewall-cmd --add-service={pop,imap} --permanent && \
firewall-cmd --reload && \
firewall-cmd --list-services
Dovecot のインストール
Dovecot は Postfix と異なりデフォルトでは CentOS にインストールされていない。 IMAP または POP3 サーバーとして機能させるためには Dovecot をインストールする必要がある。
利用可能なリポジトリ
パッケージでインストールする場合は、標準リポジトリ、Dovecot 公式リポジトリ、GhettoForge リポジトリ、IUS Community リポジトリの4つのリポジトリが主に利用できる。
標準リポジトリ
CentOS の標準リポジトリでは Dovecot 2.2.36 がインストールされる。
利用可能なパッケージは以下の通り。
パッケージ名 | 概要 |
---|---|
dovecot |
Secure imap and pop3 server |
dovecot-devel |
Development files for dovecot |
dovecot-mysql |
MySQL back end for dovecot |
dovecot-pgsql |
Postgres SQL back end for dovecot |
dovecot-pigeonhole |
Sieve and managesieve plug-in for dovecot |
Dovecot 公式リポジトリ
cat << "_EOF_" >> /etc/yum.repos.d/dovecot.repo
[dovecot-2.3-latest]
name=Dovecot 2.3 CentOS $releasever - $basearch
baseurl=http://repo.dovecot.org/ce-2.3-latest/centos/$releasever/RPMS/$basearch
gpgkey=https://repo.dovecot.org/DOVECOT-REPO-GPG
gpgcheck=1
enabled=1
_EOF_
Dovecot 公式リポジトリでは Dovecot 2.3.4-2 がインストールされる。
利用可能なパッケージは以下の通り。 3
パッケージ名 | 概要 |
---|---|
dovecot |
|
dovecot-debuginfo |
|
dovecot-devel |
|
dovecot-imaptest |
|
dovecot-imaptest-debuginfo |
|
dovecot-lua |
|
dovecot-mysql |
|
dovecot-pgsql |
|
dovecot-pigeonhole |
|
dovecot-pigeonhole-debuginfo |
|
dovecot-pigeonhole-devel |
GhettoForge リポジトリ
yum install http://mirror.ghettoforge.org/distributions/gf/gf-release-latest.gf.el7.noarch.rpm
GhettoForge Plus リポジトリでは dovecot23
パッケージで Dovecot 2.3.4-1 がインストールされる。
インストール可能なパッケージは以下の通り。
パッケージ名 | 概要 |
---|---|
dovecot23 |
Secure imap and pop3 server |
dovecot23-devel |
Development files for dovecot |
dovecot23-mysql |
MySQL back end for dovecot |
dovecot23-pgsql |
Postgres SQL back end for dovecot |
dovecot23-pigeonhole |
Sieve and managesieve plug-in for dovecot |
IUS Community リポジトリ
IUS Community リポジトリでは dovecot22u
パッケージで Dovecot 2.2.36-1 がインストールされる。
インストール可能なパッケージは以下の通り。
パッケージ名 | 概要 |
---|---|
dovecot22u |
Secure imap and pop3 server |
dovecot22u-devel |
Development files for dovecot |
dovecot22u-mysql |
MySQL back end for dovecot |
dovecot22u-pgsql |
Postgres SQL back end for dovecot |
dovecot22u-pigeonhole |
Sieve and managesieve plug-in for dovecot |
インストールと自動起動設定
yum --assumeyes install dovecot && \
systemctl enable dovecot
依存関係で clucene-core
パッケージが同時にインストールされる。
Dovecot の設定と起動
DOMAIN=example.jp && \
doveconf | egrep "^(auth_mechanisms|disable_plaintext_auth|mail_location|ssl) " && \
sed -i.org /etc/dovecot/conf.d/10-mail.conf \
-e '/#mail_location/ s/^#//' \
-e '|^mail_location| s|$|maildir:~/Maildir|' && \
sed -i.org /etc/dovecot/conf.d/10-auth.conf \
-e '/#disable_plaintext_auth/ s/^#//' \
-e '/^disable_plaintext_auth/ s/yes/no/' \
-e '/^auth_mechanisms/ s/plain$/plain login/' && \
sed -i.org /etc/dovecot/conf.d/10-ssl.conf \
-e '/^ssl =/ s/required/yes/' && \
dovecot check && \
systemctl start dovecot && \
doveconf | egrep "^(auth_mechanisms|disable_plaintext_auth|mail_location|ssl) "
mail_location
mail_location
のデフォルトは空で、以下の順序で自動検出を試みる。 4
~/mdbox/
~/sdbox/
~/Maildir/
~/mail/.imap/
~/mail/inbox
~/mail/mbox
~/Mail/.imap/
~/Mail/inbox
~/Mail/mbox
自動検出がうまく動作するとしても、特に新規ユーザーのフォルダーの自動生成の観点から、通常はメールの場所を明示的に指定することが望ましい。 5
ssl
Dovecot はデフォルトで SSL を使用するため、SSL なしの認証を許可するには SSL を無効にする必要がある。 6
また同時に disable_plaintext_auth
でプレーンテキスト認証を許可する必要がある。 7
yes
, no
, required
の値が認識される。 8
ssl
に require
が指定されていると、 disable_plaintext_auth
が no
でも mc dovecot: pop3-login: Disconnected: Inactivity (tried to use disallowed plaintext auth):
といったエラーが出力される。
disable_plaintext_auth
LOGINDISABLED 機能により SSL/TLS が使用されていない限り LOGIN
コマンドおよび他のすべてのプレーンテキスト認証を無効にする。 9
デフォルトではプレーンテキスト認証が許可されていないので、SSL なしの認証を許可したい場合は disable_plaintext_auth
を no
に指定して許可する必要がある。 7
リモート IP がローカル IP と一致する(同じコンピュータから接続している)場合、接続は安全と見なされプレーンテキスト認証が許可される。 10
auth_mechanisms
auth_mechanisms
はデフォルトでは PLAIN
メカニズムのみが有効。 11
SSL で保護された接続内で暗号化されていないパスワードを送信しても問題はないので、SSL を使用していれば PLAIN
メカニズム以外を気にする必要はない。 12
LOGIN
メカニズムも暗号化されず、通常 Outlook クライアントに SMTP 認証を実行させるために、 SMTP サーバーによってのみ使用される。 13
動作確認
IMAP
curl --verbose telnet://mail.example.jp:143
curl --verbose telnet://127.0.0.1:143
POP3
curl --verbose telnet://mail.example.jp:110
curl --verbose telnet://127.0.0.1:110
-
"Red Hat Enterprise Linux には、Procmail がプライマリー MDA となります。" - 15.4. メール配信エージェント(MDA) - Red Hat Customer Portal ↩
-
"Procmail is often installed as the default LDA." - procmail - Dovecot Wiki ↩
-
"If you are installing new installation, you can use following package names" - CentOS packages - Dovecot community software repository ↩
-
"By default the
mail_location
setting is empty, which means that Dovecot attempts to locate automatically where your mails are. This is done by looking, in order, at:" - Autodetection - MailLocation - Dovecot Wiki ↩ -
"It's usually a good idea to explicitly specify where the mails are, even if the autodetection happens to work, in particular to benefit from auto-creation of the folder for new users." - Autodetection - MailLocation - Dovecot Wiki ↩
-
"To allow any Authentication without SSL, disable SSL in the
conf.d/10-ssl.conf
file. This has to be done because Dovecot (now) uses SSL as default." - Plaintext Authentication - BasicConfiguration - Dovecot Wiki ↩ -
"Until SSL is configured, allow plaintext authentication in the
conf.d/10-auth.conf
file. " - Plaintext Authentication - BasicConfiguration - Dovecot Wiki ↩ ↩2 -
"SSL/TLS support: yes, no, required." - core/10-ssl.conf at master-2.2 · dovecot/core ↩
-
"Disable LOGIN command and all other plaintext authentications unless SSL/TLS is used (LOGINDISABLED capability)." - core/10-auth.conf at master-2.2 · dovecot/core ↩
-
"Note that if the remote IP matches the local IP (ie. you're connecting from the same computer), the connection is considered secure and plaintext authentication is allowed." - core/10-auth.conf at master-2.2 · dovecot/core ↩
-
"By default only PLAIN mechanism is enabled." - Configuration - Authentication/Mechanisms - Dovecot Wiki ↩
-
"Today however many people use SSL/TLS, and there's no problem with sending unencrypted password inside SSL secured connections. So if you're using SSL, you probably don't need to bother worrying about anything else than the PLAIN mechanism." - Authentication/Mechanisms - Dovecot Wiki ↩
-
"Another plaintext mechanism is LOGIN. It's typically used only by SMTP servers to let Outlook clients perform SMTP authentication." - Authentication/Mechanisms - Dovecot Wiki ↩