IT pass HikiWiki - [Memo2022][ITPASS]Dovecot のインストールと設定 Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

{{toc}}

[((<[ITPASS2022]2022年度サーバ構築マニュアル>)) へ戻る]

= dovecot のインストールと設定

== dovecot の取得

dovecot をパッケージからインストール.

  # apt-get install dovecot-imapd

== dovecotの設定

dovecot の設定は /etc/dovecot/conf.d 以下のファイルで行う.
以下のように各ファイルにおいて設定する. 必要な部分のコメントアウトを外して設定する (なお, 初めからコメントアウトされている値はデフォルトの値となっている).

  # cd /etc/dovecot/conf.d

具体的には以下の通り.

10-auth.conf

  disable_plaintext_auth = no   #平文でのログインを許す

  auth_mechanisms = plain cram-md5

  #include auth-system.conf.ext (コメントアウトする)

  !include auth-passwdfile.conf.ext

10-mail.conf

  mail_location = mbox:~/:INBOX=~/Mailbox   #保存形式

  mail_privileged_group =mail

  mbox_read_locks = flock

  mbox_write_locks = dotlock flock

10-master.conf

  service imap-login

  port = 143




  service imap

  process_limit = 256



  service auth-worker

  user = root

10-logging.conf

  log_timestamp = "%Y-%m-%d %H:%M:%S "

auth-passwdfile.conf.ext

  passdb
  args = scheme=CRAM-MD5 username_format=%u /etc/dovecot.cram-md5   #パスワードの認証方法. dovecot.crma-md5というパスワードファイルからパスワードを読み込む

  userdb
  args = username_format=%u /etc/dovecot.cram-md5   #ユーザの認証方法. dovecot.cram-md5というパスワードファイルから読み込む

dovecot を再起動.

  # service dovecot restart

dovecot の動作を確認.

  # service dovecot status

== 認証データベースファイルの作成

パスワードファイルである /etc/dovecot.cram-md5 を書く.
これが CRAM_MD5 の認証データベースファイルとなる. 以下がその書式.であり, #passwd ファイルと同じ形式で書く.

  [acount]:{パスワードの形式(plainなら平文,CRAM-MD5ならCRAM_MD5で暗号化されたパスワード}[PASSWORD]:[uid]:[gid]::[home]

[acount]には自分のアカウント名.
PASSWORDが imap 用パスワード. そのまえの{}によって書き方が変わる.
[uid] と [gid] にはそれぞれ自分の uid と gid を入れる. /etc/passwd で確認することができる. 最後の[home]は自分のホーム領域のパス.

具体的には以下の通り.
赤く強調されているところが実際のパスワードとユーザ情報である. xxxxxxxはパスワード.

  # CRAM-MD5 authentication database
  # Entries are in form <user>:{plain}<password>:<uid>:>gid<::>Home dir<
  # or <user>:{CRAM-MD5}<cram_md5 password>:<uid>:>gid<::>Home dir<
  # Lines starting with "#" are comments
  chikuwaXX:{plain}xxxxxx:4000X:4000X::/home/chikuwaXX

パーミッション, ファイルの所有者を変更する.

  # chmod 400 /etc/dovecot.cram-md5
  # chown dovecot:dovecot /etc/dovecot.cram-md5

== MD5 認証データベースファイル自動生成

CRAM_MD5 の認証データベースファイル /etc/dovecot.cram-md5 の書き込みには root 権限が要る.
そのため imap 認証のパスワードを各ユーザが編集することはできない.そこで
apop 認証パスワード ~/Maildir/.password を読み出して /etc/dovecot.cram-md5 を生成するスクリプト dovecotpwdbg を置く.
スクリプトは ika の /etc/cron.daily にあるものをコピーする.

  $ sudo -s
  # cp dovecotpwdbg /etc/cron.daily/dovecotpwdbg

パーミッションを変更する.

  # chmod 755 /etc/cron.daily/dovecotpwdbg

より頻繁にこのデータベースを更新するために cron を用いる.

  # export EDITOR=vi
  # crontab -e

以下の一行を追加する.

  50 * * * *   /etc/cron.daily/dovecotpwdbg
また, パスの設定を変更しなくてはならないので,
  $usershow = '/usr/local/bin/gate-user-show';



  $usershow = '/usr/local/gate/bin/gate-user-show';

に書き換える.

パスワードファイル /etc/dovecot.cram-md5 は新しいものにどんどん書き換えられるため, 一定時間でパスワードが消えることに注意(毎時50分)

== テスト

.qmail ファイルの中身を

  /home/chikuwa7/Mailbox./Maildir/

から

  /home/chikuwa7/Mailbox
  ./Maildir/

に書き換える.
tako の外のホストから, imap 対応メーラー(例. Thunderbird)を用いて imap サーバを tako に指定して, tako 上の自分のアカウントあてに届いたメールを確認する. メーラの設定は以下の通り.

    受信サーバ: IMAP
    サーバのホスト名: tako-itpass.scitec.kobe-u.ac.jp
    受信サーバのポート番号: 143
    受信サーバのSSL: 接続の保護なし
    認証方式: 暗号化されたパスワード認証

Thunderbird を用いたimapサーバの接続が上手くいかない場合, telnet を用いてサーバの接続テストを行う.

まず, /etc/dovecot.cram-md5 を書き換え, chikuwa7のパスワードを登録する.

  chikuwa7:{plain}IMAPPPASSWORD:40007:40007::/home/chikuwa7

IMAPPPASSWORD の部分には任意のパスワードを書く.

次に, telnet を使って サーバの 143 番ポートへ接続し, ログイン及びメールの確認が出来るかどうかをテストする.

  $ telnet tako-itpass.scitec.kobe-u.ac.jp 143 #tako サーバの 143 番ポートへ接続
  1 login chikuwa4 IMAPPASSWORD #ユーザー名とパスワードを入力してアカウントにログイン
  2 select INBOX #ディレクトリを指定
  3 fetch 1 body[] #メールを取得
  4 logout #ログアウト

各コマンド入力後に OK という応答が戻ってくることを確認する.

また, 情報実験機に接続し, 同様に telnet を用いてアカウントにログイン出来ることを確かめる.

telnet を用いた為, テスト後速やかに /etc/dovecot.cram-md5 に登録された chikuwa7 のデータを削除する.

== ntpdate との関係

dovecot は ntpdate 等で時刻を調節する際に,5 秒ほどずれているとサービスを停止してしまう. そのため,cron.daly でntpdate を実行させる場合にはdovecot が停止しても restart できるようにする.具体的には /etc/cron.daily/ntpdate に以下の行を追加する.

  service dovecot restart > /dev/null 2>&1

書き込んだ後, テストとして, 実行後システムログを確認した.
実行コマンドは

  # /etc/cron.daily/ntpdate
  # less /var/log/syslog

確認したログは以下の通り,


  Nov  8 12:30:35 tako-itpass systemd[1]: dovecot.service: Succeeded.
  Nov  8 12:30:35 tako-itpass systemd[1]: Stopped Dovecot IMAP/POP3 email
  server.
  Nov  8 12:30:35 tako-itpass systemd[1]: Starting Dovecot IMAP/POP3 email
  server...
  Nov  8 12:30:35 tako-itpass dovecot: master: Dovecot v2.3.13 (89f716dc2)
  starting up for imap (core dumps disabled)


Dovecot がStopped のあとStarted しており, ちゃんと restart していることが確認できた.



== 参考資料

* ((<[ITPASS2018]Dovecot ((<[ITPASS2020]Dovecot のインストールと設定>))

* ((<"メールサーバ構築 (qmil, dovecot) (北大 EPnetFaN)"|URL:http://www.ep.sci.hokudai.ac.jp/~epmail/y2017/dvlop/qmail.html>))


[((<[ITPASS2022]2022年度サーバ構築マニュアル>)) へ戻る]