こんにちは、インフラエンジニアのryuです。
今回の記事では、Dovecotとは何かを説明し、UbuntuへインストールしてIMAPでメールを閲覧できるようにする方法を解説します。
Dovecotは「メールを受信するサーバー」と説明されることがあります。しかし、正確には、Postfixなどによってメールボックスへ配送されたメールを、利用者がIMAPやPOP3で閲覧するためのソフトウェアです。
「PostfixとDovecotは何が違うの?」 「IMAPとPOP3は、どちらを使えばいいの?」 「安全に接続するには何を設定すればいいの?」
このような疑問を、実際のコマンドとあわせて確認しましょう。
Dovecotとは?¶
Dovecotとは、LinuxやUNIX系OSで動作するIMAP・POP3サーバーです。メールボックスに保存されたメールを、パソコンやスマートフォンのメールソフトから閲覧できるようにします。
メールの送受信では、次のように役割を分担します。
- メールソフト:メールを作成・閲覧する
- Postfix:SMTPでメールを受け取り、転送・配送する
- Dovecot:IMAP・POP3でメールボックスへアクセスさせる
- メールボックス:利用者ごとのメールを保存する
たとえば、Postfixがryu@example.com宛てのメールをryuユーザーのMaildirへ保存し、DovecotがそのMaildirをメールソフトへ公開します。
Dovecotには認証やメール配送の機能もあります。そのため、単なる受信サーバーではなく、メールボックスへのアクセスと認証を担当するソフトウェアと理解するとよいでしょう。
Postfixをまだ構築していない方は、次の記事を先に確認してください。
Postfixの構築方法とは?Ubuntuでメールサーバーを設定する手順
IMAPとPOP3の違い¶
Dovecotは、IMAPとPOP3の両方に対応しています。
| 比較項目 | IMAP | POP3 |
|---|---|---|
| 主な保存場所 | サーバー | 端末へダウンロードして利用することが多い |
| 複数端末との同期 | 得意 | 設定によっては同期しにくい |
| 既読・フォルダーの同期 | できる | 基本的に向いていない |
| 主なポート | 143・993 | 110・995 |
複数の端末で同じメールを確認する場合は、IMAPがおすすめです。
外部から接続する場合は、TLSで暗号化するIMAPSの993番ポートやPOP3Sの995番ポートを利用しましょう。
構築する環境¶
今回は、次の構成を例にします。
| 項目 | 設定例 |
|---|---|
| OS | Ubuntu Server |
| ホスト名 | mail.example.com |
| 利用するユーザー | ryu |
| メールボックス形式 | Maildir |
| プロトコル | IMAP・IMAPS |
Postfix側では、ローカルユーザー宛てのメールをMaildirへ保存するように設定します。
sudo postconf -e 'home_mailbox = Maildir/'
sudo systemctl restart postfix
Maildirは、1通のメールを1つのファイルとして保存する形式です。
Dovecotをインストールする¶
IMAPを利用する場合は、次のパッケージをインストールします。
sudo apt update
sudo apt install dovecot-imapd
POP3も利用する場合は、dovecot-pop3dを追加します。
sudo apt install dovecot-pop3d
主な設定ファイルは、次の場所にあります。
/etc/dovecot/dovecot.conf
/etc/dovecot/conf.d/
実際の設定では、主に/etc/dovecot/conf.d/内のファイルを編集します。
Maildirの保存場所を設定する¶
DovecotがPostfixと同じMaildirを参照するように設定します。
sudo vi /etc/dovecot/conf.d/10-mail.conf
mail_locationを探し、次のように設定します。
mail_location = maildir:~/Maildir

~は、ログインしたユーザーのホームディレクトリです。ユーザーがryuの場合は、次の場所がメールボックスになります。
/home/ryu/Maildir
Postfix側のhome_mailbox = Maildir/と、Dovecot側のmail_location = maildir:~/Maildirが同じ場所を指していることが重要です。
認証とTLSを設定する¶
旧来の記事では、disable_plaintext_auth = noを設定し、暗号化されていない認証を許可する例があります。
しかし、パスワードが漏れる危険があるため、外部接続を前提とする環境では設定しないでください。DovecotはTLSを使う構成にします。
認証設定は、次のファイルで確認します。
sudo vi /etc/dovecot/conf.d/10-auth.conf
Linuxユーザーで認証する場合は、一般的に次の方式を利用します。
auth_mechanisms = plain login
plainやloginという名前でも、TLSで通信全体を暗号化していれば、認証情報は暗号化された経路を通ります。
TLSの設定は、次のファイルで確認します。
sudo vi /etc/dovecot/conf.d/10-ssl.conf
ssl = required
Ubuntuでは自己署名証明書が設定される場合があります。検証には使えますが、メールソフトに警告が表示されます。
公開環境では、Let's Encryptなどで取得した証明書を指定します。
ssl_cert = </etc/letsencrypt/live/mail.example.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.example.com/privkey.pem
設定を確認して再起動する¶
有効な設定を確認します。
sudo doveconf -n
問題がなければ、Dovecotを再起動します。
sudo systemctl restart dovecot
sudo systemctl status dovecot
active (running)と表示されていれば、Dovecotは起動しています。
IMAP・IMAPSの待ち受け状態も確認しましょう。
sudo ss -tlnp | grep -E ':143|:993'
外部からIMAPSで接続する場合は、ファイアウォールで993番ポートを許可します。
sudo ufw allow 993/tcp
テストメールをMaildirへ配送する¶
Linuxユーザーが存在することを確認します。
id ryu
存在しない場合は作成します。
sudo adduser ryu
次に、ローカルメールを送ります。
sudo apt install mailutils
echo "Dovecotの動作確認です" | mail -s "テストメール" ryu
Maildirへ配送されたか確認します。
find /home/ryu/Maildir -maxdepth 2 -type f
newやcurディレクトリ内にメールファイルがあれば、Postfixによる配送は完了しています。
IMAPSへの接続を確認する¶
メールソフトを設定する前に、サーバー上でIMAPSへ接続できるか確認します。
openssl s_client -connect localhost:993 -crlf
接続後、次のように入力します。
a1 CAPABILITY
a2 LOGOUT
応答が返れば、DovecotがIMAPを受け付けています。
実際のログイン確認では、検証用アカウントを利用してください。パスワードをコマンドへ直接書かないようにしましょう。
メールソフトを設定する¶
Dovecotが起動したら、メールソフトへアカウントを追加します。

受信設定では、次の情報を入力します。
| 項目 | 設定例 |
|---|---|
| 受信サーバー | mail.example.com |
| プロトコル | IMAP |
| ポート番号 | 993 |
| 暗号化 | SSL/TLS |
| ユーザー名 | ryuまたはメールアドレス |
| パスワード | Linuxユーザーのパスワード |

送信メールサーバーには、Postfixを設定したSMTPサーバーを指定します。外部から送信する場合は、SMTP AUTHやTLSを別途設定する必要があります。

掲載している画像は旧Windowsメールの設定例です。画面はメールソフトによって異なりますが、サーバー名、ポート番号、暗号化方式、ユーザー名という基本項目は共通しています。
設定後、テストメールが表示されるか確認します。

Dovecotへ接続できない場合¶
接続できない場合は、次の順番で確認します。
sudo systemctl status dovecot
sudo ss -tlnp | grep -E ':143|:993'
sudo doveconf -n
sudo journalctl -fu dovecot
Maildirの状態も確認します。
find /home/ryu/Maildir -maxdepth 2 -type f
Maildirが空の場合は、DovecotではなくPostfixの配送設定を確認します。メールファイルがあるのに表示されない場合は、mail_location、ユーザー認証、ファイルの所有者や権限を確認しましょう。
Dovecotを実際に構築しながら学ぶ¶
Dovecotの構築には、Linuxのユーザー、権限、サービス、ログ、TLSに加えて、SMTP、IMAP、DNS、ポート番号などの知識が必要です。
InfraAcademyのLinux入門講座では、Linuxコマンド、ユーザー管理、権限、設定ファイル、サービス、ログなどを、ブラウザ上の環境で操作しながら学習できます。
SMTP、IMAP、IPアドレス、DNS、ファイアウォールの仕組みから理解したい方は、ネットワーク入門講座もおすすめです。
AWS上にLinuxサーバーを構築したい方は、AWS講座へ進むと、Linuxとネットワークの知識をクラウド環境へつなげられます。
Dovecotとは?まとめ¶
今回は、Dovecotの役割と、UbuntuでIMAPメールサーバーを構築する方法を解説しました。
- Dovecotは、IMAP・POP3でメールボックスへアクセスさせるソフトウェア
- PostfixはSMTPによる転送・配送、Dovecotはメールの閲覧や認証を担当する
- 複数端末でメールを同期する場合はIMAPが使いやすい
- PostfixとDovecotで、同じMaildirを参照するように設定する
- 外部から接続する場合は、平文認証を許可せずTLSを利用する
- 接続できない場合は、サービス、ポート、認証、Maildir、ログを確認する
まずは外部へ公開していない検証環境で、PostfixがMaildirへ配送し、Dovecotを通してメールソフトから閲覧できる流れを確認してみましょう。



