Ubuntu 22.04 で Dovecot を使い、IMAP によるメール閲覧環境を構築する手順です。Postfix が SMTP の受付、配送、中継を担当するのに対して、Dovecot はユーザーがメールボックスを読むための IMAP サーバーです。
この記事では、Postfix が Maildir へ配送する前提で、Dovecot の mail_location、IMAP / IMAPS の待ち受け、TLS、認証、ログ確認を扱います。外部公開メールサーバー全体ではなく、内部向けのメール閲覧層としての Dovecot に絞ります。
この記事で扱う内容は次の通りです。
- Dovecot と Postfix の役割分担
dovecot-core/dovecot-imapdの導入Maildirを読むためのmail_location設定- IMAP / IMAPS の待ち受け確認
- TLS、認証方式、ログ確認の基本
| 対象 OS | Ubuntu 22.04 |
|---|---|
| 用途 | IMAP によるメールボックス閲覧 |
| サービス | dovecot.service |
| メール保存形式 | Maildir |
| 主な設定ファイル | /etc/dovecot/conf.d/10-mail.conf, 10-auth.conf, 10-ssl.conf |
Maildir を読むように設定する書籍
Postfix と組み合わせたメール基盤の構成や運用を確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るDovecot の位置づけ
Dovecot は、ユーザーがメールクライアントからメールボックスを読むためのサーバーです。Postfix が配送したメールを、IMAP / IMAPS で参照できるようにします。
| 要素 | 役割 |
|---|---|
| Postfix | SMTP 受付、配送、リレー |
| Dovecot | IMAP / POP3 によるメール閲覧 |
| Maildir | ユーザーごとのメール保存形式 |
| TLS | メールクライアントとの通信保護 |
| 認証 | ローカルユーザー、PAM、LDAP などの認証経路 |
Dovecot をインストールする
IMAP サーバーとして必要なパッケージをインストールします。
sudo apt update
sudo apt install -y dovecot-core dovecot-imapdサービス状態を確認します。
systemctl status dovecot.service --no-pagerMaildir を使う
Postfix 側で home_mailbox = Maildir/ を使う場合、Dovecot 側も Maildir を参照するように設定します。
sudo cp /etc/dovecot/conf.d/10-mail.conf /etc/dovecot/conf.d/10-mail.conf.bak.$(date +%Y%m%d%H%M%S)
sudo sed -i 's|^#\?mail_location =.*|mail_location = maildir:~/Maildir|' /etc/dovecot/conf.d/10-mail.conf
grep '^mail_location' /etc/dovecot/conf.d/10-mail.confユーザーのホームディレクトリ配下に Maildir が作成され、Postfix がそこへ配送する構成を想定します。
postconf home_mailboxIMAP の待ち受けを確認する
Dovecot が IMAP / IMAPS で待ち受けているか確認します。
sudo ss -ltnp | grep dovecot || true通常、IMAP は TCP 143、IMAPS は TCP 993 を使います。内部向けであっても、平文認証を避けるため IMAPS を使う構成を基本にします。
TLS を設定する
証明書と秘密鍵のパスは /etc/dovecot/conf.d/10-ssl.conf で指定します。ここでは内部 CA や自己署名証明書を使う例として、証明書ファイルを配置済みとします。
sudo cp /etc/dovecot/conf.d/10-ssl.conf /etc/dovecot/conf.d/10-ssl.conf.bak.$(date +%Y%m%d%H%M%S)
sudo postconf -n >/dev/null || truesudo tee /etc/dovecot/conf.d/10-ssl.conf >/dev/null <<'EOF'
ssl = required
ssl_cert = </etc/ssl/certs/mail.example.internal.crt
ssl_key = </etc/ssl/private/mail.example.internal.key
EOF認証方式を確認する
Ubuntu の標準的な Dovecot では、PAM を使ってローカルユーザー認証を行う構成が基本になります。
grep -R '^auth_mechanisms' /etc/dovecot/conf.d/10-auth.conf
grep -R 'passdb' -n /etc/dovecot/conf.d/auth-*.conf | head内部認証基盤に LDAP や SSSD を使う場合は、PAM 側で認証を寄せるか、Dovecot から LDAP を直接参照するかを設計します。この記事では、まずローカルユーザー / PAM 前提の基本構成に留めます。
設定を確認して再起動する
Dovecot の設定を確認してから再起動します。
sudo doveconf -n
sudo systemctl restart dovecot.service
systemctl status dovecot.service --no-pagerIMAP 接続を確認する
IMAPS の疎通は openssl s_client で確認できます。
openssl s_client -connect mail.example.internal:993 -servername mail.example.internal証明書チェーン、接続先名、ポート到達性をここで確認します。認証まで含めて確認する場合は、メールクライアントまたは IMAP テストツールを使います。
Postfix から配送されたメールを確認する
Postfix から対象ユーザーの Maildir にメールが配送されているか確認します。
sudo -u myuser find /home/myuser/Maildir -maxdepth 2 -type f | headメールが見えない場合は、Postfix 側の配送先、Dovecot 側の mail_location、ユーザーのホームディレクトリ、ファイル権限を確認します。
sudo journalctl -u dovecot -n 100 --no-pager
sudo journalctl -u postfix -n 100 --no-pager運用上の注意
- SMTP の配送は Postfix、IMAP の閲覧は Dovecot と分ける
Maildirの保存場所を Postfix と Dovecot で一致させる- IMAPS を使い、平文認証を避ける
- 証明書の SAN と接続名を一致させる
- メールボックスの権限と容量を監視する
- 認証基盤を LDAP / SSSD に寄せる場合は責務を分けて設計する
まとめ
Ubuntu 22.04 で Dovecot を使うと、Postfix が配送した Maildir のメールを IMAP / IMAPS で閲覧できます。Postfix は SMTP の配送、Dovecot はメールボックスの閲覧という役割で分けて考えると、構成が分かりやすくなります。
基本は mail_location = maildir:~/Maildir を Postfix 側の配送先と一致させ、IMAPS、TLS 証明書、認証方式、ログ確認まで含めて動作を確認します。内部向けのメール基盤でも、証明書、認証、権限、ログを分けて確認することが重要です。





