IT pass HikiWiki - [Memo2024][ITPASS]Dovecot のインストールと設定 Diff
- Added parts are displayed like this.
- Deleted parts are displayed
like this.
{{toc}}
[((<[ITPASS2024]2024年度サーバ構築ログ>)) へ戻る]
= 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 にあるものをコピーする.
パーミッションを変更する.
# chmod 755 /etc/cron.daily/dovecotpwdbg
より頻繁にこのデータベースを更新するために cron を用いる.
# export EDITOR=vi
# crontab -e
以下の一行を追加する.
50 * * * * /etc/cron.daily/dovecotpwdbg
また, パスの設定を変更しなくてはならないので, dovecotpwdbg 内の
$usershow = '/usr/local/bin/gate-user-show';
を
$usershow = '/usr/local/gate/bin/gate-user-show';
に書き換える.
パスワードファイル /etc/dovecot.cram-md5 は新しいものにどんどん書き換えられるため, 一定時間でパスワードが消えることに注意(毎時50分)
== テスト
.qmail ファイルの中身を
/home/chikuwa6/Mailbox./Maildir/
から
/home/chikuwa5/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 を書き換え, chikuwa5 のパスワードを登録する.
chikuwa5:{plain}IMAPPPASSWORD:40007:40007::/home/chikuwa5
IMAPPPASSWORD の部分には任意のパスワードを書く.
次に, telnet を使って サーバの 143 番ポートへ接続し, ログイン及びメールの確認が出来るかどうかをテストする.
$ telnet tako-itpass.scitec.kobe-u.ac.jp 143 #tako サーバの 143 番ポートへ接続
1 login chikuwa5 IMAPPASSWORD #ユーザー名とパスワードを入力してアカウントにログイン
2 select Mailbox #ディレクトリを指定
3 fetch 1 body[] #メールを取得
4 logout #ログアウト
各コマンド入力後に OK という応答が戻ってくることを確認する.
また, 情報実験機に接続し, 同様に telnet を用いてアカウントにログイン出来ることを確かめる.
telnet を用いた為, テスト後速やかに /etc/dovecot.cram-md5 に登録された chikuwa5 のデータを削除する.
== ntpdate との関係
dovecot は ntpdate 等で時刻を調節する際に,5 秒ほどずれているとサービスを停止してしまう. そのため,cron.daly でntpdate を実行させる場合にはdovecot が停止しても restart できるようにする.具体的には /etc/cron.daily/ntpdate に以下の行を追加する.
service dovecot restart > /dev/null 2>&1
書き込んだ後, テストとして, 実行後システムログを確認した.
実行コマンドは
# /etc/cron.daily/ntpdate
# cat /var/log/syslog
確認したログは以下の通り,
2024-11-08T18:19:22.123085+09:00 tako-itpass systemd[1]: dovecot.service: Deactivated successfully.
2024-11-08T18:19:22.123336+09:00 tako-itpass systemd[1]: Stopped dovecot.service - Dovecot IMAP/POP3 email server.
2024-11-08T18:19:22.154943+09:00 tako-itpass systemd[1]: Starting dovecot.service - Dovecot IMAP/POP3 email server...
2024-11-08T18:19:22.167057+09:00 tako-itpass dovecot: master: Dovecot v2.3.19.1 (9b53102964) starting up for imap (core dumps disabled)
Dovecot がStopped のあとStarted しており, ちゃんと restart していることが確認できた.
[((<[ITPASS2024]2024年度サーバ構築ログ>)) へ戻る]
= 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 にあるものをコピーする.
パーミッションを変更する.
# chmod 755 /etc/cron.daily/dovecotpwdbg
より頻繁にこのデータベースを更新するために cron を用いる.
# export EDITOR=vi
# crontab -e
以下の一行を追加する.
50 * * * * /etc/cron.daily/dovecotpwdbg
また, パスの設定を変更しなくてはならないので, dovecotpwdbg 内の
$usershow = '/usr/local/bin/gate-user-show';
を
$usershow = '/usr/local/gate/bin/gate-user-show';
に書き換える.
パスワードファイル /etc/dovecot.cram-md5 は新しいものにどんどん書き換えられるため, 一定時間でパスワードが消えることに注意(毎時50分)
== テスト
.qmail ファイルの中身を
/home/chikuwa6/Mailbox./Maildir/
から
/home/chikuwa5/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 を書き換え, chikuwa5 のパスワードを登録する.
chikuwa5:{plain}IMAPPPASSWORD:40007:40007::/home/chikuwa5
IMAPPPASSWORD の部分には任意のパスワードを書く.
次に, telnet を使って サーバの 143 番ポートへ接続し, ログイン及びメールの確認が出来るかどうかをテストする.
$ telnet tako-itpass.scitec.kobe-u.ac.jp 143 #tako サーバの 143 番ポートへ接続
1 login chikuwa5 IMAPPASSWORD #ユーザー名とパスワードを入力してアカウントにログイン
2 select Mailbox
3 fetch 1 body[] #メールを取得
4 logout #ログアウト
各コマンド入力後に OK という応答が戻ってくることを確認する.
また, 情報実験機に接続し, 同様に telnet を用いてアカウントにログイン出来ることを確かめる.
telnet を用いた為, テスト後速やかに /etc/dovecot.cram-md5 に登録された chikuwa5 のデータを削除する.
== ntpdate との関係
dovecot は ntpdate 等で時刻を調節する際に,5 秒ほどずれているとサービスを停止してしまう. そのため,cron.daly でntpdate を実行させる場合にはdovecot が停止しても restart できるようにする.具体的には /etc/cron.daily/ntpdate に以下の行を追加する.
service dovecot restart > /dev/null 2>&1
書き込んだ後, テストとして, 実行後システムログを確認した.
実行コマンドは
# /etc/cron.daily/ntpdate
# cat /var/log/syslog
確認したログは以下の通り,
2024-11-08T18:19:22.123085+09:00 tako-itpass systemd[1]: dovecot.service: Deactivated successfully.
2024-11-08T18:19:22.123336+09:00 tako-itpass systemd[1]: Stopped dovecot.service - Dovecot IMAP/POP3 email server.
2024-11-08T18:19:22.154943+09:00 tako-itpass systemd[1]: Starting dovecot.service - Dovecot IMAP/POP3 email server...
2024-11-08T18:19:22.167057+09:00 tako-itpass dovecot: master: Dovecot v2.3.19.1 (9b53102964) starting up for imap (core dumps disabled)
Dovecot がStopped のあとStarted しており, ちゃんと restart していることが確認できた.