DovecotのIMAP/POPテスト環境構築メモ
CentOS6上にDovecotのIMAP/POPのテスト環境を構築した際のメモを残します。
Dovecotのメールテスト環境目的
本テスト環境の目的は、環境内部からのIMAP/POPコマンドの動作確認、およびdovecotの動作確認です。実用的なIMAP/POPサーバの構築は目的としていません。
以下の動作が確認可能な環境の構築および動作確認を行います。
- IMAPコマンドによるメールボックスへのアクセス。メッセージの取得。
- POPコマンドによるメールボックスへのアクセス。メッセージの取得。
本エントリでは、以下で構築したOSX上のCentOS6に構築します。
https://qiita.com/keikmobile/items/2c1cec8b875387a83a71
SElinuxは無効とすることを前提としています。
また、以下エントリで構築したpostfixで受信したメールをIMAP/POPで取得します。
https://qiita.com/keikmobile/items/2440ecebdd02adccc6a1
DovecotのIMAP/POPテスト環境構築・動作確認方針
上記目的を実現するためのIMAP/POPテスト環境・動作確認の方針を記述します。
プロセス構成方針
本IMAP/POPテスト環境は以下のプロセス構成をとる方針とします。
- IMAP/POPサーバはDovecotを使用する。
- POP/IMAPクライアントはtelnetおよびコマンドを使用する。
- Postfix他は、以下のエントリで構築したプロセスを使用する。https://qiita.com/keikmobile/items/2440ecebdd02adccc6a1
- 上記のプロセスは全て同一のCent OS上に構成する。
以下は各コンポーネントのイメージ。(http://plantuml.com/)
@startuml
[smtp-source,telnet] -right-> [Postfix] : SMTP
[Postfix] -right-> [smtp-sink] : SMTP (Relay)
[Postfix] -down-> [Local user mailbox Maildir format] : (Deliver)
[Local user mailbox Maildir format] -down->[Dovecot]
[telnet] -right-> [Dovecot] :POP/IMAP
@enduml
Dovecot設定値構成方針
Dovecotの振る舞いを設定する設定値は以下の方針で決定します。
- メールボックスの形式は、Maildir(qmail)形式とする。
- ユーザデータベースはpasswd-file形式とする。
動作確認方針
本テスト環境の動作確認は以下の方針で実施します。
- IMAPサーバの動作の確認を行う。以下の確認観点で行う。
- IMAPクライアントはtelnetコマンドを利用する。
- IMAPクライアントへの応答
- Dovecotのログ(/var/log/maillog)
- POPサーバの動作の確認を行う。以下の確認観点で行う。
- POPクライアントはtelnetコマンドを利用する。
- POPクライアントへの応答
- Dovecotのログ(/var/log/maillog)
Dovecotのメールテスト環境構築手順
Dovecotのインストール
yumでdovecotをインストールし、rpmでインストールされたことを確認します。
chkconfigで起動設定を有効化します。
メールの送信確認で使用するtelnetコマンドもインストールします。
$ sudo yum -y dovecot telnet
...
$ rpm -qa | egrep 'dovecot|telnet'
...
$ chkconfig dovecot on
...
Dovecotの設定
以下を参考ににdovecotの設定を行います。
https://wiki2.dovecot.org/BasicConfiguration
以下のコマンドを実行し、usersファイルを作成します。passwordの箇所は変更を推奨です。
$ echo "`whoami`:{PLAIN}password:`id -u`:`id -g`::$HOME" > users
$ sudo mv users /etc/dovecot/
passwd-fileを使用するようにconf.d/10-auth.confを変更します。
$ sudo vi /etc/dovecot/conf.d/10-auth.conf
# 以下をコメントアウト。
#!include auth-system.conf.ext
# 以下のコメントアウトを削除。
!include auth-passwdfile.conf.ext
conf.d/auth-passwdfile.conf.ext の記述を確認します。
$ cat /etc/dovecot/conf.d/auth-passwdfile.conf.ext
...
passdb {
driver = passwd-file
args = scheme=CRYPT username_format=%u /etc/dovecot/users
}
userdb {
driver = passwd-file
args = username_format=%u /etc/dovecot/users
}
以下のコマンドでも同様の結果を得られる事を確認します。
$ doveconf -n passdb userdb
passdb {
args = scheme=CRYPT username_format=%u /etc/dovecot/users
driver = passwd-file
}
userdb {
args = username_format=%u /etc/dovecot/users
driver = passwd-file
}
参考: http://wiki2.dovecot.org/BasicConfiguration
dovecotの起動
dovecotを起動します。
sudo service dovecot start
参考: https://wiki2.dovecot.org/RunningDovecot
参考: https://wiki2.dovecot.org/Logging
Dovecotのテスト環境動作確認
IMAPの確認
telnetコマンドでdovecotのIMAP Portに接続しIMAPコマンドを発行してdovecotの動作確認を行います。
$ telnet 127.0.0.1 143
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE STARTTLS AUTH=PLAIN] Dovecot ready.
a login USER PASSWORD # 認証設定で作成したユーザでlogin
a OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
b select INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft \*)] Flags permitted.
* 0 EXISTS
* 0 RECENT
* OK [UIDVALIDITY 1399824069] UIDs valid
* OK [UIDNEXT 1] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
b OK [READ-WRITE] Select completed.
c append INBOX {9}
+ OK
TEST MAIL
* 1 EXISTS
* 1 RECENT
c OK [APPENDUID 1399824069 1] Append completed.
d fetch 1 rfc822
* 1 FETCH (FLAGS (\Seen \Recent) RFC822 {9}
TEST MAIL)
d OK Fetch completed.
e close INBOX
e OK Close completed.
f logout
* BYE Logging out
f OK Logout completed.
Connection closed by foreign host.
$
"/var/log/maillog"以下に以下の出力が確認可能です。
Apr 14 15:57:31 centos601 dovecot: imap-login: Login: user=<vagrant>, method=PLAIN, rip=127.0.0.1, lip=127.0.0.1, mpid=3765, secured
Apr 14 15:58:24 centos601 dovecot: imap(vagrant): Disconnected: Logged out bytes=84/829
POPの確認
telnetコマンドでdovecotのPOP Portに接続しPOPコマンドを発行してdovecotの動作確認を行います。
$ telnet 127.0.0.1 110
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Dovecot ready.
user USER # 認証設定で作成したユーザでlogin
+OK
pass PASSWORD # 認証設定で作成したユーザでlogin
+OK Logged in.
stat
+OK 1 9
list
+OK 1 messages:
1 9
.
retr 1
+OK 9 octets
TEST MAIL
.
quit
+OK Logging out.
Connection closed by foreign host.
$
"/var/log/maillog"以下に以下の出力が確認可能です。
Apr 14 16:01:05 centos601 dovecot: pop3-login: Login: user=<vagrant>, method=PLAIN, rip=127.0.0.1, lip=127.0.0.1, mpid=3790, secured
Apr 14 16:01:10 centos601 dovecot: pop3(vagrant): Disconnected: Logged out top=0/0, retr=0/0, del=0/1, size=10