はじめに
LPIC202 のトピック 211「電子メールサービス」より、メールボックスアクセスの管理についての学習メモをまとめる。
シラバスは公式サイトを参照。
Dovecot とは(MRA/配送フローでの位置)
Dovecot は Linux で広く使われる POP3 / IMAP サーバ。メール配送の用語でいう MRA(Mail Retrieval Agent=メール受信エージェント) にあたり、「サーバに届いて溜まっているメールを、ユーザーのメールソフト(MUA)が取りに来られるようにする」のが役割。
参考になるサイト:Linux超入門部【Linux】MTA、MDA、MRA、MUAの違いと役割
[送信者MUA] --SMTP--> [MTA: Postfix/sendmail] --> [MDA: procmail等] --配送--> メールボックス
(Maildir/mbox)
│
[受信者MUA] <--POP3/IMAP-- [MRA: Dovecot] <-------------読み出し------------------┘
- MTA(Postfix/sendmail)が「送る・運ぶ」、Dovecot(MRA)が「受信者に渡す」 という分業
- 対応プロトコルは IMAP / IMAPS / POP3 / POP3S
- SMTP は非対応(送信は MTA の仕事で、Dovecot の守備範囲外)
- 設定ファイルは
/etc/dovecot/dovecot.conf
メールボックス形式(mbox vs Maildir)
メールの保存形式には2方式がある。
| 形式 | 格納方法 | 特徴 |
|---|---|---|
| mbox | 1ファイルに全メールを連結 | 古典的。ロック競合・破損に弱い |
| Maildir | 1メール = 1ファイル でディレクトリ管理 | ロック不要で堅牢・並行アクセスに強い |
- Dovecot は mbox と Maildir の両方に対応
- Courier-IMAP は Maildir のみ対応(mbox 非対応)
dovecot.conf の主要設定項目
| 設定項目 | 役割 | 記述例 |
|---|---|---|
listen | 待ち受けIPアドレス | listen = *, :: |
protocols | 使用プロトコル | protocols = imap pop3 |
mail_location | メールの格納形式・場所 | mail_location = maildir:~/Maildir |
mechanisms | 認証方式(SASLメカニズム)※2.x は auth_mechanisms | mechanisms = plain login |
mail_max_userip_connections | 同一IP・同一ユーザの最大同時接続数 | mail_max_userip_connections = 10 |
TLS設定(ssl_ 接頭辞・= < 書式)
Dovecot 2.x で TLS を有効にする設定は次の3行が基本。
ssl = yes # TLSを有効化
ssl_cert = </etc/ssl/certs/dovecot.pem # サーバ証明書
ssl_key = </etc/ssl/private/dovecot.pem # サーバ秘密鍵
押さえるべきルールは2つ。
(1) 接頭辞は ssl_(tls_ ではない)
Dovecot は TLS 関連の項目名もすべて ssl_ で始める。
- 有効化:
ssl = yes - 証明書:
ssl_cert - 秘密鍵:
ssl_key
(2) 証明書・鍵は = <ファイルパス(< が必須)
< は「そのファイルの中身を値として読み込む」演算子。ssl_key = </etc/ssl/private/dovecot.pem は「このファイルの中身(PEM形式の鍵データ)を値にせよ」という意味で、= と < の両方が必要。
運用コマンド(doveconf / doveadm / verbose_proctitle)
doveconf — 設定の「確認」
設定内容を読み取って表示する専用コマンド。
| コマンド | 動作 |
|---|---|
doveconf | 全設定をダンプ |
doveconf -n | デフォルトから変更した項目だけ表示(トラブル相談で頻出) |
doveconf -a | デフォルト含め全項目を表示 |
doveconf <項目> | 特定項目の値だけ表示 |
doveconf -c <file> | 別の設定ファイルを指定して確認 |
doveadm — 管理・運用「操作」
Dovecot の総合管理コマンド。doveadm <サブコマンド> の形で使う。
| サブコマンド | 動作 |
|---|---|
doveadm who | ログイン中ユーザとIPを表示 |
doveadm pw | パスワードハッシュを生成 |
doveadm config | 設定内容を表示 |
doveadm mailbox | メールボックスの管理 |
doveadm stop | Dovecot を停止 |
doveadm reload | 設定を再読み込み |
verbose_proctitle — ps で接続を見る
dovecot.conf に verbose_proctitle = yes を書くと、Dovecot 各プロセスの プロセスタイトル(ps の COMMAND 列)に接続中ユーザ・IP・状態が表示される。
# verbose_proctitle = yes の場合
$ ps aux | grep dovecot
dovecot ... dovecot/imap [takafumi 192.0.2.10 SELECTED INBOX]
# └ユーザ └IPアドレス └接続状態
→ 接続状況の確認は2ルートある: doveadm who(専用コマンド) と verbose_proctitle = yes + ps(OS標準コマンド)。
ポート番号(平文 vs 暗号)
| プロトコル | ポート | 暗号化 | 担当 |
|---|---|---|---|
| SMTP | 25 | なし | 送信(MTA) |
| Submission | 587 | STARTTLS | 送信 |
| SMTPS | 465 | SSL/TLS | 送信 |
| POP3 | 110 | なし | 受信(MRA) |
| POP3S | 995 | SSL/TLS | 受信 |
| IMAP | 143 | なし | 受信(MRA) |
| IMAPS | 993 | SSL/TLS | 受信 |
- 暗号化版(S付き)は 99x 番台: IMAPS 993 / POP3S 995
- 平文の受信は POP3 110 / IMAP 143、送信(SMTP)は 25