InfraAcademy

InfraAcademy Blog

Dovecotとは?UbuntuでIMAPメールサーバーを構築する方法を初心者向けに解説

| #Linux #Linux初心者 #Linux入門
Linuxをブラウザで試してみる

Linux・ネットワーク・AWSを、環境構築なしで実践学習できます

こんにちは、インフラエンジニアの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

dovecot設定画面

~は、ログインしたユーザーのホームディレクトリです。ユーザーが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

plainloginという名前でも、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

newcurディレクトリ内にメールファイルがあれば、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を別途設定する必要があります。

メーラー詳細設定2

掲載している画像は旧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を通してメールソフトから閲覧できる流れを確認してみましょう。

Next Action

記事で読んだ内容を、講座で実装してみましょう

InfraAcademyでは、ブラウザ上でLinuxやネットワークの実践環境を使いながら学習できます。無料で始められる講座から、学習の流れを試せます。

この記事を書いた人

ryu

InfraAcademy運営 / エンジニア

エンジニア歴10年。Linux、ネットワーク、クラウドを中心に、実務で役立つインフラ技術を初心者にもわかりやすく解説しています。

X: @ryu63614894

Related

関連記事

ブログ一覧へ

Roadmap

まずはこの4講座から

ログインすれば無料で始められる講座です。気になったテーマから手を動かして学べます。

講座一覧を見る