SlideShare a Scribd company logo
1 of 7
Copyright © 2014 Open Source Solution Technology, Corp. 1
振り分け先バックエンドサーバー固定化による
共有ファイルシステム上の
メールボックスアクセスの最適化
Dovecot Director 概要
Copyright © 2014 Open Source Solution Technology, Corp. 2
共有ファイルシステム上のメール
ボックスの同時アクセス問題
● 問題点
➢ ホストごとのキャッシュによりファイルデータの不整合が発生
➢ 最悪はメールボックス破壊
 maildir であればメールメッセージ自身が破壊・消失する可能性は皆無
 Dovecot の場合は付随するデータファイルで問題となる
(メッセージ識別子管理、インデックス、クォータ情報)
● 解決方法
➢ キャッシュ無効化
 メールボックスアクセス性能が低下してしまう
➢ 複数ホストからの同一メールボックスの同時アクセスを避ける
 Dovecot Director で実現可能
 プロクシーサーバーとして動作し、ユーザーごとに特定の単一ホストへアクセ
スを振り分ける
Copyright © 2014 Open Source Solution Technology, Corp. 3
ソフトウェア構成
●
フロントエンド: Dovecot Director
➢ LMTP/POP3/IMAP/ManageSieve プロクシー
➢ ユーザーごとに特定の単一バックエンドサーバーにプ
ロクシーする
●
バックエンド: Dovecot
➢ LMTP/POP3/IMAP/ManageSieve サーバー
➢ Doveadm サーバーを有効化することで Director からの
doveadm コマンドの受け付けも可能
●
バックエンド死活監視: poolmon
Copyright © 2014 Open Source Solution Technology, Corp. 4
Dovecot Director によるユーザー振り分け
構成図
Dovecot
Director
poolmon
Postfix
LMTP
(ユーザーA/B)
バックエンド
有効/無効
切替え
メールサーバー2
Dovecot
バックエンド
LMTP
POP3
IMAP
ManageSieve
(ユーザーB)
Dovecot
Director
Postfix
poolmon
バックエンド
有効・無効
切替え
ユーザーB
メールサーバー1
SMTP
(ユーザーA/B)
Dovecot
バックエンド
LMTP
POP3
IMAP
ManageSieve
(ユーザーA)
負荷分散装置
POP3
IMAP
ManageSieve
(ユーザーA/B)
死活
監視
共有ストレージ
メールボックス
ユーザーA
SMTP
POP3
IMAP
ManageSieve
SMTP
POP3
IMAP
ManageSieve
死活
監視
LMTP
POP3
IMAP
ManageSieve
(ユーザーA)
LMTP
POP3
IMAP
ManageSieve
(ユーザーB)
SMTP
(ユーザーA/B)
LMTP
(ユーザーA/B)
共有ファイルシステム
(NFS,GFS,HSFS 等)
バッファキャッシュ
共有ファイルシステム
(NFS,GFS,HSFS 等)
バッファキャッシュ
メールボックス
アクセス
(ユーザーA)
メールボックス
アクセス
(ユーザーB)
ユーザー→バックエンド
振り分け情報の複製
ストレージ
アクセス
ストレージ
アクセス
Copyright © 2014 Open Source Solution Technology, Corp. 5
振り分け先バックエンド決定処理
●ユーザーを識別
●
ユーザーの振り分け先バックエンドは過去に決定済み?
• 決定済みならばそのバックエンドに振り分け開始(完了)
• 決定済みでなければ以下に継続
●ユーザー名のハッシュ値を計算
●ユーザー名のハッシュ値と有効なバックエンドから振り分け先
バックエンドを決定
• ユーザー名、ハッシュ、振り分け先バックエンド情報を保存
• ほかの Director に振り分け情報を複製
• バックエンドに振り分け開始(完了)
Copyright © 2014 Open Source Solution Technology, Corp. 6
既知の問題点
●
Director (9090/TCP), LMTP (24/TCP) のアクセス制限機能
がない
➢ ユーザー認証機能もクライアント認証機能(IP アドレス制限など)も
ない
➢ OS のパケットフィルター機能 (Linux iptables) での制限が必要
●
doveadm fts が動作しない
➢ バックエンドの doveadm サーバーでエラー発生
 Error: doveadm: Client sent unknown command: fts rescan
➢ 調査中
●
poolmon が ManageSieve の死活監視に非対応
➢ Sieve ユーザーは少ないため致命的ではない?
Copyright © 2014 Open Source Solution Technology, Corp. 6
既知の問題点
●
Director (9090/TCP), LMTP (24/TCP) のアクセス制限機能
がない
➢ ユーザー認証機能もクライアント認証機能(IP アドレス制限など)も
ない
➢ OS のパケットフィルター機能 (Linux iptables) での制限が必要
●
doveadm fts が動作しない
➢ バックエンドの doveadm サーバーでエラー発生
 Error: doveadm: Client sent unknown command: fts rescan
➢ 調査中
●
poolmon が ManageSieve の死活監視に非対応
➢ Sieve ユーザーは少ないため致命的ではない?

More Related Content

What's hot

TIME_WAITに関する話
TIME_WAITに関する話TIME_WAITに関する話
TIME_WAITに関する話Takanori Sejima
 
ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装infinite_loop
 
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-Yuta Imai
 
ゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますinfinite_loop
 
SR-IOV Networking in OpenStack - OpenStack最新情報セミナー 2016年3月
SR-IOV Networking in OpenStack - OpenStack最新情報セミナー 2016年3月SR-IOV Networking in OpenStack - OpenStack最新情報セミナー 2016年3月
SR-IOV Networking in OpenStack - OpenStack最新情報セミナー 2016年3月VirtualTech Japan Inc.
 
IETF111 RATS: Remote Attestation ProcedureS 報告
IETF111 RATS: Remote Attestation ProcedureS 報告IETF111 RATS: Remote Attestation ProcedureS 報告
IETF111 RATS: Remote Attestation ProcedureS 報告Kuniyasu Suzaki
 
忙しい人の5分で分かるMesos入門 - Mesos って何だ?
忙しい人の5分で分かるMesos入門 - Mesos って何だ?忙しい人の5分で分かるMesos入門 - Mesos って何だ?
忙しい人の5分で分かるMesos入門 - Mesos って何だ?Masahito Zembutsu
 
SFUの話
SFUの話SFUの話
SFUの話tnoho
 
ITサービスマネジメントとSRE
ITサービスマネジメントとSREITサービスマネジメントとSRE
ITサービスマネジメントとSRE真吾 吉田
 
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーKubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーToru Makabe
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれKumazaki Hiroki
 
ZabbixのAPIを使って運用を楽しくする話
ZabbixのAPIを使って運用を楽しくする話ZabbixのAPIを使って運用を楽しくする話
ZabbixのAPIを使って運用を楽しくする話Masahito Zembutsu
 
Ingressの概要とLoadBalancerとの比較
Ingressの概要とLoadBalancerとの比較Ingressの概要とLoadBalancerとの比較
Ingressの概要とLoadBalancerとの比較Mei Nakamura
 
シングルサインオンの歴史とSAMLへの道のり
シングルサインオンの歴史とSAMLへの道のりシングルサインオンの歴史とSAMLへの道のり
シングルサインオンの歴史とSAMLへの道のりShinichi Tomita
 
webエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのrediswebエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのredisnasa9084
 
フィッシングとドメイン名・DNS
フィッシングとドメイン名・DNSフィッシングとドメイン名・DNS
フィッシングとドメイン名・DNSShiojiri Ohhara
 

What's hot (20)

Redis at LINE
Redis at LINERedis at LINE
Redis at LINE
 
TIME_WAITに関する話
TIME_WAITに関する話TIME_WAITに関する話
TIME_WAITに関する話
 
ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装
 
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-
 
ゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せます
 
SR-IOV Networking in OpenStack - OpenStack最新情報セミナー 2016年3月
SR-IOV Networking in OpenStack - OpenStack最新情報セミナー 2016年3月SR-IOV Networking in OpenStack - OpenStack最新情報セミナー 2016年3月
SR-IOV Networking in OpenStack - OpenStack最新情報セミナー 2016年3月
 
SSH力をつけよう
SSH力をつけようSSH力をつけよう
SSH力をつけよう
 
IETF111 RATS: Remote Attestation ProcedureS 報告
IETF111 RATS: Remote Attestation ProcedureS 報告IETF111 RATS: Remote Attestation ProcedureS 報告
IETF111 RATS: Remote Attestation ProcedureS 報告
 
忙しい人の5分で分かるMesos入門 - Mesos って何だ?
忙しい人の5分で分かるMesos入門 - Mesos って何だ?忙しい人の5分で分かるMesos入門 - Mesos って何だ?
忙しい人の5分で分かるMesos入門 - Mesos って何だ?
 
SFUの話
SFUの話SFUの話
SFUの話
 
ITサービスマネジメントとSRE
ITサービスマネジメントとSREITサービスマネジメントとSRE
ITサービスマネジメントとSRE
 
Apache Hadoopの新機能Ozoneの現状
Apache Hadoopの新機能Ozoneの現状Apache Hadoopの新機能Ozoneの現状
Apache Hadoopの新機能Ozoneの現状
 
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーKubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
 
Vacuum徹底解説
Vacuum徹底解説Vacuum徹底解説
Vacuum徹底解説
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれ
 
ZabbixのAPIを使って運用を楽しくする話
ZabbixのAPIを使って運用を楽しくする話ZabbixのAPIを使って運用を楽しくする話
ZabbixのAPIを使って運用を楽しくする話
 
Ingressの概要とLoadBalancerとの比較
Ingressの概要とLoadBalancerとの比較Ingressの概要とLoadBalancerとの比較
Ingressの概要とLoadBalancerとの比較
 
シングルサインオンの歴史とSAMLへの道のり
シングルサインオンの歴史とSAMLへの道のりシングルサインオンの歴史とSAMLへの道のり
シングルサインオンの歴史とSAMLへの道のり
 
webエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのrediswebエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのredis
 
フィッシングとドメイン名・DNS
フィッシングとドメイン名・DNSフィッシングとドメイン名・DNS
フィッシングとドメイン名・DNS
 

Dovecot Director 概要

  • 1. Copyright © 2014 Open Source Solution Technology, Corp. 1 振り分け先バックエンドサーバー固定化による 共有ファイルシステム上の メールボックスアクセスの最適化 Dovecot Director 概要
  • 2. Copyright © 2014 Open Source Solution Technology, Corp. 2 共有ファイルシステム上のメール ボックスの同時アクセス問題 ● 問題点 ➢ ホストごとのキャッシュによりファイルデータの不整合が発生 ➢ 最悪はメールボックス破壊  maildir であればメールメッセージ自身が破壊・消失する可能性は皆無  Dovecot の場合は付随するデータファイルで問題となる (メッセージ識別子管理、インデックス、クォータ情報) ● 解決方法 ➢ キャッシュ無効化  メールボックスアクセス性能が低下してしまう ➢ 複数ホストからの同一メールボックスの同時アクセスを避ける  Dovecot Director で実現可能  プロクシーサーバーとして動作し、ユーザーごとに特定の単一ホストへアクセ スを振り分ける
  • 3. Copyright © 2014 Open Source Solution Technology, Corp. 3 ソフトウェア構成 ● フロントエンド: Dovecot Director ➢ LMTP/POP3/IMAP/ManageSieve プロクシー ➢ ユーザーごとに特定の単一バックエンドサーバーにプ ロクシーする ● バックエンド: Dovecot ➢ LMTP/POP3/IMAP/ManageSieve サーバー ➢ Doveadm サーバーを有効化することで Director からの doveadm コマンドの受け付けも可能 ● バックエンド死活監視: poolmon
  • 4. Copyright © 2014 Open Source Solution Technology, Corp. 4 Dovecot Director によるユーザー振り分け 構成図 Dovecot Director poolmon Postfix LMTP (ユーザーA/B) バックエンド 有効/無効 切替え メールサーバー2 Dovecot バックエンド LMTP POP3 IMAP ManageSieve (ユーザーB) Dovecot Director Postfix poolmon バックエンド 有効・無効 切替え ユーザーB メールサーバー1 SMTP (ユーザーA/B) Dovecot バックエンド LMTP POP3 IMAP ManageSieve (ユーザーA) 負荷分散装置 POP3 IMAP ManageSieve (ユーザーA/B) 死活 監視 共有ストレージ メールボックス ユーザーA SMTP POP3 IMAP ManageSieve SMTP POP3 IMAP ManageSieve 死活 監視 LMTP POP3 IMAP ManageSieve (ユーザーA) LMTP POP3 IMAP ManageSieve (ユーザーB) SMTP (ユーザーA/B) LMTP (ユーザーA/B) 共有ファイルシステム (NFS,GFS,HSFS 等) バッファキャッシュ 共有ファイルシステム (NFS,GFS,HSFS 等) バッファキャッシュ メールボックス アクセス (ユーザーA) メールボックス アクセス (ユーザーB) ユーザー→バックエンド 振り分け情報の複製 ストレージ アクセス ストレージ アクセス
  • 5. Copyright © 2014 Open Source Solution Technology, Corp. 5 振り分け先バックエンド決定処理 ●ユーザーを識別 ● ユーザーの振り分け先バックエンドは過去に決定済み? • 決定済みならばそのバックエンドに振り分け開始(完了) • 決定済みでなければ以下に継続 ●ユーザー名のハッシュ値を計算 ●ユーザー名のハッシュ値と有効なバックエンドから振り分け先 バックエンドを決定 • ユーザー名、ハッシュ、振り分け先バックエンド情報を保存 • ほかの Director に振り分け情報を複製 • バックエンドに振り分け開始(完了)
  • 6. Copyright © 2014 Open Source Solution Technology, Corp. 6 既知の問題点 ● Director (9090/TCP), LMTP (24/TCP) のアクセス制限機能 がない ➢ ユーザー認証機能もクライアント認証機能(IP アドレス制限など)も ない ➢ OS のパケットフィルター機能 (Linux iptables) での制限が必要 ● doveadm fts が動作しない ➢ バックエンドの doveadm サーバーでエラー発生  Error: doveadm: Client sent unknown command: fts rescan ➢ 調査中 ● poolmon が ManageSieve の死活監視に非対応 ➢ Sieve ユーザーは少ないため致命的ではない?
  • 7. Copyright © 2014 Open Source Solution Technology, Corp. 6 既知の問題点 ● Director (9090/TCP), LMTP (24/TCP) のアクセス制限機能 がない ➢ ユーザー認証機能もクライアント認証機能(IP アドレス制限など)も ない ➢ OS のパケットフィルター機能 (Linux iptables) での制限が必要 ● doveadm fts が動作しない ➢ バックエンドの doveadm サーバーでエラー発生  Error: doveadm: Client sent unknown command: fts rescan ➢ 調査中 ● poolmon が ManageSieve の死活監視に非対応 ➢ Sieve ユーザーは少ないため致命的ではない?