2026年10月5日

2026年10月5日

Dovecotのインストールと受信サーバー設定(IMAP/POP3・TLS・Postfix連携)

Dovecot は、サーバーに届いたメールをメールソフトやスマートフォンから読むための IMAP/POP3 サーバーです。この記事では Ubuntu/Debian 系の VPS を例に、Dovecot をインストールし、メールボックスの場所・認証・TLS を設定して、Postfix と連携させ、外部のメールソフトから受信できる状態にするところまでを手順に沿って説明します。

前提として、Postfix などの MTA(送受信を担うメール配送サーバー)が動いていて、MX レコードがそのサーバーを向いていることを想定しています。Postfix 側の導入がまだの場合は、先にそちらを済ませてください。

作業前に決めておくこと

設定ファイルを触る前に、次の3点を決めておくと迷いが減ります。

  • アカウントの種類: Linux のシステムユーザーをそのままメールアカウントにするか、仮想ユーザー(ファイルやDBで管理する、OSにログインできないアカウント)にするか。この記事では構成が単純なシステムユーザー方式で説明します。
  • メールボックス形式: 1通1ファイルの Maildir か、1フォルダ1ファイルの mbox か。同時アクセスやバックアップのしやすさから、新規構築なら Maildir が扱いやすい選択です。
  • 使うプロトコル: 複数端末で既読状態を共有するなら IMAP、1台に取り込んで消すなら POP3。現在は IMAP over TLS(993番ポート)だけを開ける構成が一般的です。

本番サーバーで作業する場合は、/etc/dovecot/ と /etc/postfix/ のバックアップを取り、可能ならステージング環境で一度試してから反映してください。

Dovecotのバージョンについて

Dovecot は 2.4 系で設定項目の名前や書き方が大きく変わりました(2026年10月現在)。たとえば 2.4 では設定ファイルの先頭に設定のバージョン宣言が求められ、メールボックスの場所や証明書の指定も別の項目名になっています。Ubuntu 24.04 LTS の標準パッケージは 2.3 系、より新しいディストリビューションでは 2.4 系が入ることがあります。

以下の設定例は 2.3 系の書き方です。まず次のコマンドで手元のバージョンを確認し、2.4 系だった場合は公式ドキュメントの移行ガイドで項目名を読み替えてください。

dovecot --version

インストール

Ubuntu/Debian ではパッケージが機能ごとに分かれています。IMAP と、Postfix からの配送に使う LMTP を入れる例です。POP3 が必要なら dovecot-pop3d も追加します。

sudo apt update
sudo apt install dovecot-core dovecot-imapd dovecot-lmtpd
sudo systemctl enable --now dovecot

設定は /etc/dovecot/dovecot.conf から conf.d/ 配下のファイルを読み込む形になっています。変更は目的ごとのファイルに書くと、後から見返したときに追いやすくなります。現在有効な設定(既定値から変えた部分)は次のコマンドで一覧できます。

sudo doveconf -n

メールボックスの場所を指定する(10-mail.conf)

/etc/dovecot/conf.d/10-mail.conf で、各ユーザーのホームディレクトリ配下の Maildir を使うよう指定します。

mail_location = maildir:~/Maildir

ここで指定した場所と、Postfix がメールを書き込む場所が食い違うと「届いているのにメールソフトに表示されない」状態になります。後述の LMTP 連携を使えば、書き込みも Dovecot が行うため、この食い違いが起きにくくなります。

認証の設定(10-auth.conf)

/etc/dovecot/conf.d/10-auth.conf では、暗号化されていない接続でのパスワード送信を禁止します。

disable_plaintext_auth = yes
auth_mechanisms = plain login

plain はパスワードをそのまま送る方式ですが、TLS で暗号化された経路の上でだけ許可されるため、上の設定と組み合わせれば安全に使えます。login は古いメールソフト向けです。2.4 系では disable_plaintext_auth に相当する項目名が変わっているため、バージョンに合わせて確認してください。

システムユーザー方式では、PAM 経由で Linux のパスワードを使って認証します。メール専用のユーザーには、シェルログインできないよう /usr/sbin/nologin を指定しておくと、メールのパスワードが漏れたときに SSH まで乗っ取られる事態を避けられます。

TLSの設定(10-ssl.conf)

/etc/dovecot/conf.d/10-ssl.conf で証明書を指定し、TLS を必須にします。Let's Encrypt で mail.example.com の証明書を取得済みの例です。

ssl = required
ssl_cert = </etc/letsencrypt/live/mail.example.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.example.com/privkey.pem
ssl_min_protocol = TLSv1.2

パスの前の < は「このファイルの中身を読み込む」という意味で、付け忘れるとエラーになります。メールソフトに設定するサーバー名は、証明書に含まれるホスト名と一致させてください。IP アドレスや別名で接続すると証明書の警告が出ます。

証明書を更新したあとは Dovecot に読み直させる必要があります。certbot の deploy フックで systemctl reload dovecot を実行するようにしておくと、更新後も古い証明書を出し続ける事故を防げます。

Postfixとの連携(10-master.conf)

Postfix と連携させる方法は主に2つあります。1つは Postfix が受け取ったメールを LMTP で Dovecot に渡す方法、もう1つは Postfix の送信認証(SMTP AUTH)に Dovecot の認証機能を使う方法です。どちらも /etc/dovecot/conf.d/10-master.conf で、Postfix から見える場所にソケットを作ります。

service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    mode = 0600
    user = postfix
    group = postfix
  }
}

service auth {
  unix_listener /var/spool/postfix/private/auth {
    mode = 0660
    user = postfix
    group = postfix
  }
}

Postfix 側は postconf -e で設定します。Postfix は chroot で動いていることがあるため、ソケットは /var/spool/postfix/ 配下に置き、Postfix からは private/... という相対パスで指定します。

sudo postconf -e 'mailbox_transport = lmtp:unix:private/dovecot-lmtp'
sudo postconf -e 'smtpd_sasl_type = dovecot'
sudo postconf -e 'smtpd_sasl_path = private/auth'
sudo postconf -e 'smtpd_sasl_auth_enable = yes'
sudo systemctl reload postfix
sudo systemctl restart dovecot

送信認証は、通常 587番(submission)ポートでだけ有効にします。25番ポートで認証を受け付ける設定は、ブルートフォース攻撃の的になりやすいため避けてください。submission の有効化は /etc/postfix/master.cf で行います。

ファイアウォールとポート

IMAP over TLS だけを使う場合は 993番を開けます。POP3 over TLS を使う場合は 995番です。平文で始まる 143番・110番は、使わないなら閉じておくのが無難です。

sudo ufw allow 993/tcp
sudo ufw status

VPS 事業者によっては、OS のファイアウォールとは別に管理画面側のパケットフィルターがあります。両方で許可されているか確認してください。

動作確認

設定を反映したら、外側から順に確認します。

  1. 設定の文法: sudo doveconf -n がエラーなく表示されるか。
  2. 認証: sudo doveadm auth test ユーザー名 でパスワード認証が通るか。成功すれば auth succeeded と表示されます。
  3. TLS 接続: 別のマシンから次のコマンドで接続し、証明書のホスト名と有効期限を確認します。
openssl s_client -connect mail.example.com:993 -servername mail.example.com
  1. 配送: 外部のアドレスからテストメールを送り、~/Maildir/new/ にファイルが増えるか確認します。
  2. メールソフト: 受信サーバーにホスト名、ポート 993、SSL/TLS を指定して接続します。

うまくいかないときは、journalctl -u dovecot やメールログ(Debian/Ubuntu では /var/log/mail.log。rsyslog が入っていない環境では journal のみ)を見ます。よくあるのは次のようなパターンです。

  • auth failed が続く: パスワード違いのほか、disable_plaintext_auth = yes の状態でメールソフトが暗号化なしで接続している。
  • Permission denied: Maildir の所有者がユーザー本人になっていない。root で作ったディレクトリをそのまま使ったときに起きやすい。
  • Postfix 側で connect to private/dovecot-lmtp: No such file or directory: ソケットの場所の指定が Postfix と Dovecot で一致していない。

運用で気をつけること

メールサーバーは公開直後からパスワード総当たりの対象になります。Fail2ban などで、認証失敗が続く IP を一定時間遮断する仕組みを入れておくと負荷と危険を抑えられます。管理者自身が誤って遮断されたときに備えて、SSH 用の許可リストや、VPS 管理画面のコンソールから入れる経路を確保しておいてください。

また、Maildir はメール1通が1ファイルなので、ファイル単位のバックアップと相性がよい一方、容量が増えるとファイル数も膨大になります。quota プラグインで上限を設けるか、ディスク使用量を監視しておくと、ディスクフルによる受信停止を防げます。

まとめ

  • Dovecot は届いたメールを IMAP/POP3 で読ませるサーバー。2.3 系と 2.4 系で設定項目名が違うため、最初にバージョンを確認する。
  • 10-mail.conf でメールボックスの場所、10-auth.conf で平文認証の禁止、10-ssl.conf で TLS 必須を設定する。
  • Postfix とは LMTP と SASL 認証のソケットで連携し、ソケットは /var/spool/postfix/private/ 配下に置く。
  • 確認は doveconf -n、doveadm auth test、openssl s_client の順に外側から。
  • 公開後は総当たり対策と、管理者が締め出されない復旧経路を用意しておく。

お気軽にご相談ください

お見積りへ お問い合わせへ
▲