習うより慣れるtcpdump 3.3ウェイハンドシェイクを目視する
以下のエントリの続きです。
Cent OS6.5で以下の2ゲストOSを立ち上げています。
fe01 "Front End01" 192.168.33.11 telnetコマンドを使用して、TCPクライアントとして使用。 be01 "Back End01" 192.168.33.21 ncコマンドを使用して、TCPサーバーとして使用。
tcpdumpでの3ウェイハンドシェイクの確認
be01側のホスト上で以下のコマンドを実行します。
$ nc -l 23456
別ターミナルで、be01側のホストで、以下のコマンドを実行します。
$ sudo tcpdump -nn -i eth1 port 23456
fe01側のホスト上で以下のコマンドを実行します。
$ telnet 192.168.33.21 23456 Trying 192.168.33.21... Connected to 192.168.33.21. Escape character is '^]'.
tcpdumpを実行したホストのターミナルの以下の箇所を確認します。
IP 192.168.33.11.44325 > 192.168.33.21.23456: Flags [S] IP 192.168.33.21.23456 > 192.168.33.11.44325: Flags [S.] IP 192.168.33.11.44325 > 192.168.33.21.23456: Flags [.]
上記は、以下の情報を示します。
src > dst: flags src:送信元IP.ポート dst送信先IP.ポート flags:フラグ S (SYN), F (FIN), P (PUSH), R (RST), W (ECN CWR) , E (ECN-Echo), ‘.’ (no flags)の組み合わせ
さらにこの状態でbe01にて以下のコマンドを実行するとコネクションが確立( ESTABLISHED)されていることが確認できます。
$ netstat -n | grep 23456 tcp 0 0 192.168.33.21:23456 192.168.33.11:44325 ESTABLISHED
習うより慣れるtcpdump 2.TCPサーバー・クライアント
習うより慣れるtcpdump 2.TCPサーバー・クライアント
習うより慣れるtcpdump 1.準備 - A MEMORANDUM PAPER LOG
上記エントリの続きです。前回インストールしたncコマンドをtcpサーバーとして、telnetコマンドをtcpクライアントとしてTCP接続を行います。
Cent OS6.5で以下の2ゲストOSを立ち上げています。
- fe01 "Front End01" 192.168.33.11 telnetコマンドを使用して、TCPクライアントとして使用。
- be01 "Back End01" 192.168.33.21 ncコマンドを使用して、TCPサーバーとして使用。
[fe01 TCP Client] <--> [be01 TCP Server]
TCPサーバー起動
be01側のホスト上で以下のコマンドを実行します。
$ nc -l 23456
※ nc: Address already in useの出力があった場合は、port(23456)を変更してください。
TCPサーバーの確認
以下の確認手順は、ncコマンド実行中のターミナルとは別のターミナルで、be01ホストに接続して実行します。
netstatコマンドで先程のncプロセスが23456 portでLISTEN(待ち受け状態)していることを確認します。
$ netstat -anp | grep 23456 tcp 0 0 0.0.0.0:23456 0.0.0.0:* LISTEN 2389/nc $
TCPクライアント接続
fe01側のホスト上で以下のコマンドを実行します。
$ telnet 192.168.33.21 23456 Trying 192.168.33.21... Connected to 192.168.33.21. Escape character is '^]'.
TCPクライアント接続の確認
以下の確認手順は、telnetコマンド実行中のターミナルとは別のターミナルで、fe01ホストに接続して実行します。
netstatコマンドでtelnetプロセスが192.168.33.21の23456 portとESTABLISHED(TCP接続確立状態)になっていることを確認します。
$ netstat -anp | grep 23456 tcp 0 0 192.168.33.11:37243 192.168.33.21:23456 ESTABLISHED 2438/telnet $
be01ホスト上からも同様の確認をします。
$ netstat -anp | grep 23456 tcp 0 0 0.0.0.0:23456 0.0.0.0:* LISTEN 2476/nc tcp 0 0 192.168.33.21:23456 192.168.33.11:37243 ESTABLISHED 2476/nc $
TCP接続の切断。
fe01ホスト上のtelnetをCtrl+]キーでエスケープし、一旦接続を切断します。
$ telnet 192.168.33.21 23456 Trying 192.168.33.21... Connected to 192.168.33.21. Escape character is '^]'. ^] telnet> quit Connection closed. $
次回よりtcpdumpコマンドを実際に使用していきます。
習うより慣れるtcpdump 1.準備
習うより慣れるtcpdump 1.準備 目的
Vagrant MULTI-MACHINE 複数VM - A MEMORANDUM PAPER LOG
上記のエントリで作成したVagrantのMULTI-MACHINE環境で、tcpdumpを実行しながらtcpdumpの使い方を解説していきます。
環境
ソフトウェア | バージョン | 備考 |
---|---|---|
Vagrant | 1.6.3 | - |
VirtualBox | 4.3.12 | - |
Cent OS6.5で以下の2ゲストOSを立ち上げています。
fe01 "Front End01"
- IP: 192.168.33.11
- memory: 512M
be01 "Back End01"
- IP: 192.168.33.21
- memory: 512M
パッケージインストール
準備として、それぞれのホストに以下のパッケージをインストールします。
※ ncはtcp server、telnetはtcp clientとして使用します。
$ sudo yum -y install tcpdump nc telnet
インストールされたことを確認する。
$ rpm -qa | egrep 'tcpdump-|nc-|telnet-' telnet-0.17-47.el6_3.1.x86_64 tcpdump-4.0.0-3.20090921gitdf3cb4.2.el6.x86_64 nc-1.84-22.el6.x86_64 $
iptables 無効化
tcpdumpの使い方の解説にて、任意のportにアクセスするためiptablesを無効化します。
※ 外部からのアクセスの無い検証用等のサーバを想定しています。
$ sudo service iptables stop
無効になったことを確認します。
$ sudo iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
その他使用コマンド
その他以下のコマンドを使用します。
- ip (又はifconfig)
- ss (又はnetstat)
Vagrant MULTI-MACHINE 複数VM
Vagrant MULTI-MACHINE 複数VM
Vagrant boxes作成 Virtualbox Cent OS 6.5 - A MEMORANDUM PAPER LOG
上記のエントリで作成したbaseboxを使ってVagrantでMULTI-MACHINE(複数VM)構成として起動します。
環境
ソフトウェア | バージョン | 備考 |
---|---|---|
Vagrant | 1.6.3 | - |
VirtualBox | 4.3.12 | - |
Vagrantfile
以下はVagrantで一つのbaseboxから、MULTI-MACHINE(複数VM)構成として起動するサンプルです。 本サンプルは、以下の2VMで構成しています。
- fe01 "Front End01"
- IP: 192.168.33.11
- memory: 512M
- be01 "Back End01"
- IP: 192.168.33.21
- memory: 512M
Vagrantfileの各設定の詳細は以下。
- Multi-Machine - Vagrant Documentation
- Private Networks - Networking - Vagrant Documentation
- Configuration - VirtualBox Provider - Vagrant Documentation
MULTI-MACHINE(複数VM)構成のテスト
起動。status確認。sshでのLogin。
$ vagrant up $ vagrant status 以下の出力が確認出来ること。 fe01 running (virtualbox) be01 running (virtual box) $ vagrant ssh fe01 $ vagrant ssh be01 それぞれsshでLogin可能なこと。
Vagrant boxes作成 Virtualbox Cent OS 6.5
Vagrant boxファイル作成 Virtualbox CentOS 6.5
VagrantのCentOS6.5のboxファイルをVirtualboxで作成します。
環境・前提条件
ソフトウェア | バージョン | 備考 |
---|---|---|
Vagrant | 1.6.3 | - |
VirtualBox | 4.3.12 | - |
Cent OS | 6.5 | 最小構成でインストール |
OSイメージの取得サイト例。
- Cent OS 6.5(64bit)http://ftp.riken.jp/Linux/centos/6.5/isos/x86_64/CentOS-6.5-x86_64-minimal.iso
- Cent OS 6.5(32bit) http://ftp.riken.jp/Linux/centos/6.5/isos/i386/CentOS-6.5-i386-minimal.iso
Base Box(CentOS 6.5)作成
以下を参考にBase Boxを作成する。
Virtualbox GUI設定
Virtualboxを起動する。
- 名前とオペレーションシステム: 以下を設定する。
項目 | 値 |
---|---|
名前 | basebox_centos(任意の名前) |
タイプ | Linux |
バージョン | Red Hat(32bit or 64bit) |
- メモリーサイズ: 512MBを設定する。
- ハードドライブ: 仮想ドライブを作成するを選択する。
- ハードドライブのファイルタイプ: VDIを選択する。
- 物理ドライブにあるストレージ: 可変サイズを選択する。
- ファイルの場所とサイズ: 以下を設定する。
項目 | 値 |
---|---|
場所 | basebox_centos(任意のフォルダ) |
サイズ | 8G以上(任意のサイズ) |
- 作成されたbasebox_centosにカーソルを合わせ、メニューから[仮想マシン]->[設定]を選択する。またはツールバーより設定を選択する。
- [ストレージ]->[コントローラー: IDE]->[CD/DVDデバイスの追加]を選択し、OSイメージ(CentOS-6.5-x86_64-minimal.iso)を選択。
- [オーディオ]->[オーディオの有効化]のチェックを外す。
- [ポート]->[USB]->[USBコントローラーの有効化]のチェックを外す。
- [ネットワーク]->[アダプター1]->[ネットワークアダプターを有効化]のチェックを確認。割り当てが”NAT”を確認。高度をクリックし、[ポートフォワーディング]を選択。以下の値で新規ルールを追加する。
項目 | 値 |
---|---|
名前 | ssh |
プロトコル | TCP |
ホストIP | 127.0.0.1 |
ホストポート | 2222 |
ゲストIP | 10.0.2.15 |
ゲストポート | 22 |
Cent OS インストール
- basebox_centosにカーソルを合わせ、メニューから[仮想マシン]->[起動]を選択する。またはツールバーより起動を選択する。ここより先はCent OSインストーラーに従いインストールする。
- “Welcome to CentOS 6.5!”の画面では”Install or upgrade an existing system”を選択する。
- インストレーションメディアのテストは”Skip”を選択する。
- “Welcome to CentOS 6.5!”で”OK”を選択する。
- “Language Selection”で”English”を選択し、”OK”を選択する。
- “Keyboard Selection”で”jp106”を選択し、”OK”を選択する。
- “Warning Error processing drive”で”Re-initialize all”を選択する。
- “Time Zone Selection”で”Asia/Tokyo”を選択し、”OK”を選択する。
- “Root Password”で”vagrant”を入力し”OK”を選択する。
- “Partitioning Type”で”Use entire drive”を選択し、”OK”を選択する。
- “Writing storage configuration to disk”で”Write change to disk”を選択する。
- “Complete”で”Reboot”を選択する。
SSH接続までの初期設定
- VirtualboxコンソールにLoginプロントが表示されるので、root passwordでLoginする。
- eth0の設定ファイルを編集する。
# vi /etc/sysconfig/network-scripts/ifcfg-eth0 --- 以下を編集 ONBOOT=yes # no => yes
- 設定の反映のため、ネットワークの再起動
# service network restart
- eth0のstateがUPであることを確認する。
# ip a
- ターミナルからsshで接続
$ ssh root@127.0.0.1 -p 2222
※ ssh接続が失敗する場合は、Virtualbox GUI設定のネットワークのポートフォワーディング設定を見直す。
vagrant user 設定
- vagrant グループ・ユーザの作成。パスワードの設定。
# groupadd vagrant # useradd -g vagrant vagrant # passwd vagrant
- vagrantユーザをpasswordなしでsudoできるようにし、requirettyを無効化する。
# visudo --- 以下をコメントアウト。 #Defaults requiretty --- 以下を末尾に追記。 vagrant ALL=(ALL) NOPASSWD: ALL
- sudoの確認
# su - vagrant $ whoami vagrant $ sudo whoami root
- vagrant公開鍵設定
$ mkdir ~/.ssh $ chmod 0700 ~/.ssh $ curl -L -o ~/.ssh/authorized_keys https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub $ chmod 0600 ~/.ssh/authorized_keys
VirtualBox Guest Additions インストール
- VirtualBox Guest Additionsに必要なパッケージのインストール
$ sudo yum -y update $ sudo yum -y install gcc kernel-devel perl $ sudo reboot
Virtualboxのメニュー[Devices]->[install Guest Additions CD image]を選択。
VirtualBox Guest Additions インストール
# su - vagrant $ sudo mkdir -p /mnt/cdrom $ sudo mount -r /dev/cdrom /mnt/cdrom $ sudo /mnt/cdrom/VBoxLinuxAdditions.run Verifying archive integrity... All good. Uncompressing VirtualBox 4.3.12 Guest Additions for Linux............ VirtualBox Guest Additions installer Copying additional installer modules ... Installing additional modules ... Removing existing VirtualBox non-DKMS kernel modules [ OK ] Building the VirtualBox Guest Additions kernel modules Building the main Guest Additions module [ OK ] Building the shared folder support module [ OK ] Building the OpenGL support module [ OK ] Doing non-kernel setup of the Guest Additions [ OK ] Starting the VirtualBox Guest Additions [ OK ] Installing the Window System drivers Could not find the X.Org or XFree86 Window System, skipping. $
- shutdown
$ sudo shutdown -h now
boxファイル作成
- HOST OSのVirtualBox VMディレクトリでboxファイルを作成する。
$ cd ~/VirtualBox\ VMs/ $ vagrant package --base basebox_centos --output basebox_centos65.box $ file basebox_centos.box
作成したboxのテスト
- 作成boxファイルを Vagrant に登録する。
$ vagrant box add centos65 basebox_centos65.box
- vagrantでの起動。ログインの確認。
$ vagrant init centos65 $ vagrant up $ vagrant ssh
IMAPコマンド
IMAPコマンド
前回構築したdovecotでIMAPコマンドを確認します。 http://keikmobile.hatenablog.com/entry/2014/05/12/テスト用dovecot_インストール
Any State Commands
以下のコマンドは、いずれの状態でも有効なコマンドです。
CAPABILITY
- サーバがサポートする機能一覧を表示する。
- 引数なし。
a001 CAPABILITY * CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE STARTTLS AUTH=PLAIN a001 OK Capability completed.
NOOP
- 何もしない。サーバのauto logoutタイマーはリセットされます。
- 引数なし。
a001 NOOP a001 OK NOOP completed.
LOGOUT
- ログアウトする。
- 引数なし。
a001 LOGOUT * BYE Logging out a001 OK Logout completed.
Not Authenticated State Commands
以下のコマンドは認証されていない状態で有効なコマンドです。
STARTTLS
- 暗号通信への切り替えを要求する。
- 引数なし
a001 STARTTLS a001 OK Begin TLS negotiation now.
AUTHENTICATE
- 指定した認証方法でログインする。
- 引数: 認証方式名
LOGIN
- ログインする。
- 引数: ユーザ名 パスワード
a login user password 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
Authenticated State Commands
以下のコマンドは認証されている状態で有効なコマンドです。
SELECT
a OK Expunge completed. a001 SELECT INBOX * OK [CLOSED] Previous mailbox closed. * 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 a001 OK [READ-WRITE] Select completed.
EXAMINE
a001 EXAMINE INBOX * OK [CLOSED] Previous mailbox closed. * FLAGS (\Answered \Flagged \Deleted \Seen \Draft) * OK [PERMANENTFLAGS ()] Read-only mailbox. * 0 EXISTS * 0 RECENT * OK [UIDVALIDITY 1399824069] UIDs valid * OK [UIDNEXT 1] Predicted next UID * OK [HIGHESTMODSEQ 1] Highest a001 OK [READ-ONLY] Select completed.
CREATE
a001 CREATE NEW_FOLDER a001 OK Create completed.
DELETE
a001 DELETE NEW_FOLDER a001 OK Delete completed.
RENAME
a001 RENAME FOLDER NEW_FOLDER a001 OK Rename completed.
SUBSCRIBE
a001 SUBSCRIBE FOLDER a001 OK Subscribe completed.
UNSUBSCRIBE
a001 UNSUBSCRIBE FOLDER a001 OK Unsubscribe completed.
LIST
a001 LIST "" "*" * LIST (\HasNoChildren) "." "NEW_FOLDER" * LIST (\HasNoChildren) "." "FOLDER" * LIST (\HasNoChildren) "." "INBOX" a001 OK List completed.
LSUB
a001 LSUB "" "*" * LSUB () "." "FOLDER" a001 OK Lsub completed.
STATUS
a001 STATUS INBOX (MESSAGES) * STATUS "INBOX" (MESSAGES 0) a001 OK Status completed.
APPEND
a001 APPEND INBOX {10} + OK TEST TEST a001 OK [APPENDUID 1399824069 3] Append completed.
Selected State Commands
以下のコマンドはメールボックスが選択されている状態で有効なコマンドです。
CHECK
- 選択中のメールボックスのチェックポイントを要求する。
- 引数なし
a001 CHECK a001 OK Check completed.
CLOSE
- 選択中のメールボックスを閉じる。
- 引数なし
a001 CLOSE a001 OK Close completed.
EXPUNGE
- Deletedフラグがセットされているメッセージ全てを削除する。
- 引数なし
a001 STORE 1 +FLAGS (\Deleted) * 1 FETCH (FLAGS (\Deleted)) a001 OK Store completed. a001 EXPUNGE * 1 EXPUNGE a001 OK Expunge completed.
SEARCH
- 引数の条件にマッチしたメッセージのシーケンス番号を表示する。
- 引数: [キャラクタセット] 検索条件
- 検索条件:
- ALL: メールボックスの全てのメッセージ
- ANSWERED: Answeredフラグがセットされているメッセージ
- BCC
: エンベロープBCCに を含むメッセージ - BEFORE
: よりも前の内部日付のメッセージ - BODY
: メッセージ本文に を含むメッセージ - CC
: エンベロープCCに を含むメッセージ - DELETED: Deletedフラグがセットされているメッセージ
- DRAFT: Draftプラグがセットされているメッセージ
- FLAGGED: Flaggedフラグがセットされているメッセージ
- FROM
: エンベロープFROMに を含むメッセージ - HEADER: <field-name>
: <field-name>ヘッダーに を含むメッセージ - KEYWORD
: フラグがセットされているメッセージ - LARGER
: メッセージサイズが より大きいメッセージ - NEW: Recnetフラグがセットされておりかつ、Seenフラグがセットされていないメッセージ
- NOT <search-key>: <search-key>にマッチしないメッセージ
- OLD: Recnetフラグがセットされていないメッセージ
- ON:
の内部日付のメッセージ - OR <search-key1> <search-key2>: <search-key1>かつ<search-key2>にマッチするメッセージ
- RECENT: Recnetフラグがセットされているメッセージ
- SEEN: Seenフラグがセットされているメッセージ
- SENTBEFORE
: よりも前のDateヘッダーのメッセージ - SENTON
: のDateヘッダーのメッセージ - SENTSINCE
: よりも後のDateヘッダーのメッセージ - SINCE
: よりも後の内部日付のメッセージ - SMALLER
: メッセージサイズが より小さいメッセージ - SUBJECT
: エンベロープSUBJECTに を含むメッセージ - TEXT
: ヘッダー又はメッセージ本文に を含むメッセージ - TO
: エンベロープTOに を含むメッセージ - UID
: で指定されたUIDのメッセージ - UNANSWERED: Answeredフラグがセットされていないメッセージ
- UNDELETED: Deletedフラグがセットされていないメッセージ
- UNDRAFT: Draftフラグがセットされていないメッセージ
- UNFLAGGED: Flaggedフラグがセットされていないメッセージ
- UNKEYWORD
: フラグがセットされていないメッセージ - UNSEEN: Seenフラグがセットされていないメッセージ
a001 SEARCH ALL * SEARCH 1 2 3 4 5 a001 OK Search completed (0.000 secs).
FETCH
- 指定したメッセージ情報を取得する。
- 引数: シーケンス番号 データアイテム名
- データアイテム名:
- ALL: (FLAGS INTERNALDATE RFC822.SIZE ENVELOPE)と同じ。
- FAST: (FLAGS INTERNALDATE RFC822.SIZE)と同じ。
- FULL: (FLAGS INTERNALDATE RFC822.SIZE ENVELOPE BODY)と同じ。
- BODY
- BODY.PEEK
- BODYSTRUCTURE
- ENVELOPE
- FLAGS
- INTERNALDATE
- RFC822
- RFC822.HEADER
- RFC822.SIZE
- RFC822.TEXT
- UID
a001 fetch 1 RFC822 * 1 FETCH (FLAGS (\Seen) RFC822 {9} TEST TEST) a001 OK Fetch completed.
STORE
- メッセージのフラグを変更する。
- 引数: シーケンス番号 フラグ状態 フラグ名
- フラグ状態
- FLAGS
: でフラグを置き換える。 - FLAGS.SILENT
: でフラグを置き換える。表示はしない。 - +FLAGS
: のフラグを追加する。 - +FLAGS.SILENT
: のフラグを追加する。表示はしない。 - -FLAGS
: のフラグを削除する。 - -FLAGS.SILENT
: のフラグを削除する。表示はしない。
- FLAGS
COPY
a001 COPY 1 INBOX * 6 EXISTS * 1 RECENT a001 OK [COPYUID 1399824069 3 8] Copy completed.
UID
- COPY、FETCH、STOREコマンドをUIDを指定で実行する。
- 引数: コマンド コマンド引数(UID)
a001 UID FETCH 3 RFC822 * 1 FETCH (UID 3 RFC822 {9} TEST TEST) a001 OK Fetch completed.
テスト用dovecot インストール
テスト用dovecot インストールの目的
テスト用のpop/imap serverが欲しくなったので、dovecotをインストールします。 本インストールの手順は、CentOS6でのpop/imapコマンド及び、pop/imapクライアントのテスト用pop/imap server構築を目的としています。実用的なpop/imapサーバーの構築は目的としていません。
dovecot 概要
- dovecotは、Linux等のUnix系サーバで動作するオープンソースのPOP/IMAPサーバ。読み方はダヴコット。
- 公式サイト: http://www.dovecot.org
- Dovecot Wiki: http://wiki2.dovecot.org/FrontPage
dovecotのインストール
WikiのDevcot installationに従いインストールします。 今回は、ビルド済みバイナリ(RPM)をインストールします。
Fedora and RHEL (and CentOS/Scientific Linux/...)なのでyumでインストールする。
$ sudo yum install dovecot $ rpm -q dovecot $ dovecot --version
参考: http://wiki2.dovecot.org/FrontPage#Dovecot_installation
メールの配送場所の確認
Maildir形式を使用します。conf.d/10-mail.confに設定します。
$ sudo vi /etc/dovecot/conf.d/10-mail.conf # See doc/wiki/Variables.txt for full list. Some examples: # mail_location = maildir:~/Maildir 上記サンプルに従い、以下を追記。保存して終了。 mail_location = maildir:~/Maildir
テスト用のUnixユーザで、以下のコマンドを実行し、ユーザ用メールディレクトリを作成します。
$ mkdir ~/Maildir
参考: http://wiki2.dovecot.org/FindMailLocation
基本設定
基本設定を行います。以下コマンドでconfigurationファイルを場所を確認します。
doveconf -n | head -n1
認証設定
テスト用のユーザで、以下のコマンドを実行し、usersファイルを作成します。 passwordの箇所は変更を推奨です。
$ echo "$USER:{PLAIN}password:$UID:$GID::$HOME" > users # usersファイルの各値を確認する。環境変数がとれていない場合等は、以下のコマンドを実行。 $ echo "`whoami`:{PLAIN}password:`id -u`:`id -g`::$HOME" $ 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 dovecot
プロセス、ログ、pop port、imap portを確認します。
$ ps auxw | grep dovcot $ sudo tail -f /var/log/maillog $ ss -nl | grep '110' $ ss -nl | grep '143'
参考: http://wiki2.dovecot.org/RunningDovecot,http://wiki2.dovecot.org/Logging
POP/IMAP導通確認
imapの導通
認証設定で作成したユーザで、導通確認します。
- login
- select
- append
- fetch
- logout
$ 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. $
popの導通
認証設定で作成したユーザで、導通確認します。
- user
- pass
- stat
- list
- retr
- quit
$ 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. $
参考: http://wiki2.dovecot.org/TestInstallation
テスト用dovecotインストール完了。