はじめに

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方式がある。

形式格納方法特徴
mbox1ファイルに全メールを連結古典的。ロック競合・破損に弱い
Maildir1メール = 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_mechanismsmechanisms = 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 stopDovecot を停止
doveadm reload設定を再読み込み

verbose_proctitle — ps で接続を見る

dovecot.confverbose_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 暗号)

プロトコルポート暗号化担当
SMTP25なし送信(MTA)
Submission587STARTTLS送信
SMTPS465SSL/TLS送信
POP3110なし受信(MRA)
POP3S995SSL/TLS受信
IMAP143なし受信(MRA)
IMAPS993SSL/TLS受信
  • 暗号化版(S付き)は 99x 番台: IMAPS 993 / POP3S 995
  • 平文の受信は POP3 110 / IMAP 143、送信(SMTP)は 25