オープンソース

一覧へ

6. Appendix

6.1. LDAPサーバの設定例

LDAPサーバは、次の例にしたがって設定を行ってください。

  • LDAPサーバの基本設定
  • LDAPの基本構造の作成

LDAPサーバの設定については、次のサイトを参考にしてください。

  • OpenLDAPホームページ

http://www.openldap.org/

6.1.1. LDAPサーバの基本設定例

LDAPサーバの設定は、ldapadd,ldapmodify,ldapsearchコマンドを使用して設定、確認を行うことができます。環境に合わせて設定を行ってください。少なくとも、suffix、rootdn、rootpwの項目は設定します。

slapdの設定例
# ldapmodify -Y EXTERNAL -H ldapi:///<CR>
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
dn: olcDatabase={2}hdb,cn=config<CR>
changetype: modify<CR>
replace: olcSuffix<CR>
olcSuffix: dc=designet,dc=jp<CR>
-<CR>
replace: olcRootDN<CR>
olcRootDN: cn=Manager,dc=designet,dc=jp<CR>
-<CR>
replace: olcRootPW<CR>
olcRootPW: {SSHA}H55wd4urFefNKQWc1Qc+jWKapTKMuBqg<CR>
-<CR>
<CR>
modifying entry "olcDatabase={2}hdb,cn=config"
<CTRL+D>
※上記の例では、サフィックス、RootDN、RootDNのパスワードを変更しています。
※<CR>はEnterキーの入力、<CTRL+D>はCTRLキー + Dキーの入力を示しています。

slapdの設定確認例
# ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b olcDatabase={2}hdb,cn=config<CR>
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
dn: olcDatabase={2}hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {2}hdb
olcDbDirectory: /var/lib/ldap
olcSuffix: dc=designet,dc=jp
olcRootDN: cn=Manager,dc=designet,dc=jp
olcRootPW: {SSHA}BviUnbZ6FRbHBUwK34Be02BJpy82Uko9
olcDbIndex: objectClass eq,pres
olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub
olcDbIndex: uid eq,sub

6.1.2. LDAPの基本構造の作成

LDAPの基本構造を準備します。LDAPの基本構造は、2.2で紹介したLDAPの基本構造の例のように作成することをお勧めします。

OpenLDAPの場合は、LDAPの基本構造を作成するために次のようなファイル(init.ldif)を用意します。

LDAPの初期設定例(init.ldif)
# designet.jp                               ← トップのDNのデータ
dn: dc=designet,dc=jp
objectClass: organization
objectClass: dcObject
o: DesigNET, INC.
dc: designet

# test.designet.jp                          ← 管理する仮想ドメインの階層
dn: dc=test,dc=designet,dc=jp
dc: test
objectClass: domain
objectClass: top

# User, test.designet.jp                    ← メールアカウントを管理する階層
dn: ou=User,dc=test,dc=designet,dc=jp
objectClass: organizationalUnit
objectClass: top
ou: User

# List, test.designet.jp                    ← メーリングリストを管理する階層
dn: ou=List,dc=test,dc=designet,dc=jp
objectClass: organizationalUnit
objectClass: top
ou: List

LDIFファイルが用意できましたら、次のようにldapaddコマンドで登録します。

$ ldapadd -x -D "cn=Manager,dc=designet,dc=jp" -f init.ldif -W

6.2. メールサーバーの設定例

本章では、MTAのひとつとしてPostfixの設定方法を紹介します。

postLDAPadminでは、仮想ユーザごとのクォータ値を管理することができます。仮想ユーザごとのクォータ機能は、VDAパッチを適用したPostfixをインストールすることで利用することができます。VDAパッチを適用したPostfixのインストール、設定方法は、以下のサイトを参考にして行ってください。

本書の執筆時点での最新バージョンは、2.4版のパッチレベル5です。

6.2.1. LDAPによる仮想ユーザ管理

PostfixでLDAPを利用した仮想ユーザ管理を行うには、Postfix検索テーブルでLDAPを参照するように設定する必要があります。
次の設定例にしたがって、以下の項目の設定を行ってください。

  • Postfix設定ファイルの準備
    • 仮想メールボックスに配送するドメインの設定
    • 仮想別名テーブルの設定
    • 仮想メールボックスの配送先の設定
    • 仮想メールボックス容量の設定
    • メール保管アカウントの設定

6.2.1.1. Postfix設定ファイルの準備

main.cfに次の項目を設定します。

main.cfの設定例(追加行)
# 仮想メールボックスに配送するドメインの設定
virtual_mailbox_domains = test.designet.jp

# 仮想メールボックスの配送先の設定
virtual_mailbox_base = /
virtual_mailbox_maps = ldap:/etc/postfix/ldap-account.cf

# 仮想別名テーブルの設定
virtual_alias_maps = ldap:/etc/postfix/ldap-forward.cf

# 仮想メールボックス容量の設定(クォータ制御機能を利用するとき)
virtual_mailbox_limit = 0
virtual_mailbox_limit_maps = ldap:/etc/postfix/ldap-quota.cf
virtual_mailbox_limit_override = yes

# メール保管アカウントの設定
virtual_uid_maps = static:400
virtual_gid_maps = static:400

6.2.1.2. Postfix検索テーブルのLDAP設定ファイルの準備

次に、「virtual_mailbox_maps」「virtual_alias_maps」「virtual_mailbox_limit_maps」で指定したPostfix検索テーブルのLDAP設定ファイルにLDAPの検索条件を設定します。

ldap-account.cfの設定例
server_host = 127.0.0.1
server_port = 389
bind = yes
bind_dn = cn=Manager,dc=designet,dc=jp
bind_pw = secret
scope = sub
search_base = dc=designet,dc=jp
query_filter = (|(mail=%s)(mailAlias=%s))
result_attribute = mailDirectory
result_format = %s/Maildir/
ldap-forward.cfの設定例
server_host = 127.0.0.1
server_port = 389
bind = yes
bind_dn = cn=Manager,dc=designet,dc=jp
bind_pw = secret
scope = sub
search_base = dc=designet,dc=jp
query_filter = (|(mail=%s)(mailAlias=%s))
result_attribute = mailForwardingAddr
ldap-quota.cfの設定例(クォータ機能利用時)
server_host = 127.0.0.1
server_port = 389
bind = yes
bind_dn = cn=Manager,dc=designet,dc=jp
bind_pw = secret
scope = sub
search_base = dc= designet,dc=jp
query_filter = (|(mail=%s)(mailAlias=%s))
result_attribute = quotaSize

Postfix検索テーブルのLDAP設定ファイルの設定項目は、表のとおりです。

Postfix検索テーブルのLDAP設定ファイル
項目 解説
server_host LDAPサーバのホスト名またはIPアドレスを設定します。
server_port LDAPサーバのポート番号を設定します。
timeout LDAP検索がタイムアウトする秒数を設定します。
search_base LDAP検索のときに使用するベースDNを指定します。
query_filter LDAP検索で使用する検索フィルタを設定します。
result_attribute LDAP検索の結果として取得すべき属性を指定します。複数の属性が必要な場合には、「,(コンマ)」で区切って並べることができます。
result_format Postfix検索テーブルの結果として返す結果を、指定したLDAP検索の結果から作成する文字列を指定します。
scope
LDAP検索を行う場合の検索範囲を指定します。
sub: ベースDNで指定したLDAPディレクトリ配下全体を検索します。

base: ベースDNで指定したLDAPエントリだけを検索します。

one: ベースDNで指定したLDAPエントリのサブエントリ(直下のエントリ)のみを検索します。

bind LDAPサーバへの接続で、バインド処理を行うかどうかを指定します。noを指定すると、anonymous(匿名)モードで接続を行います。
bind_dn LDAPサーバにバインドするDNを指定します。
bind_pw bind_dnに対応するDNに対応するパスワードを指定します。

6.3. POP/IMAPサーバの設定例

メールソフトウェアからメールを読むために、POP/IMAPサーバの設定を行ってください。本書では、POP/IMAPサーバとしてcourier-imapを利用する場合を例として解説をします。

courier-imapの設定は次のサイトを参考にしてください。

6.3.1. postLDAPadminのweb.confの設定

postfix、courier-imapはbyte単位でクォータを参照するため、web.confのQuotaUnitの項目はbを設定してください。

6.3.2. LDAPによる仮想ユーザ管理

courier-imapでLDAP仮想ユーザ管理を行うには、authdaemondのLDAP用の設定ファイルauthldaprcを準備してください。

authldaprcの設定例(コメント行を除く)
LDAP_URI                ldap://127.0.0.1
LDAP_PROTOCOL_VERSION   3
LDAP_BASEDN             dc=designet,dc=jp
LDAP_BINDDN             cn=Manager,dc=designet,dc=jp
LDAP_BINDPW             secret
LDAP_TIMEOUT            5
LDAP_AUTHBIND           1
LDAP_MAIL               uid
LDAP_FILTER             (objectClass=postLDAPadmin)
LDAP_GLOB_UID           vmail
LDAP_GLOB_GID           vmail
LDAP_HOMEDIR            mailDirectory
LDAP_CRYPTPW            userPassword
LDAP_TLS                0

authldaprcの設定項目は表のとおりです。

authldaprc
項目 解説
LDAP_URI LDAPサーバのアドレスをURIの形式で指定します。
LDAP_PROTOCOL_VERSION LDAPサーバへ接続するLDAPのバージョンを指定します。OpenLDAPの場合には3を指定します。
LDAP_BASEDN LDAP検索を行うときに使用するベースDNを指定します。
LDAP_BINDDN LDAPサーバへの接続に使うDNを指定します。
LDAP_BINDPW LDAP_BINDDNで設定したDNに対応するパスワードを指定します。
LDAP_TIMEOUT LDAP処理のタイムアウト時間を設定します。
LDAP_AUTHBIND ユーザ認証の方法を指定します。0(BINDしない)を指定すると、LDAPサーバからパスワードを取得してauthdaemond側でパスワードを検証します。1(BINDする)を指定すると、該当ユーザのDNでLDAPへ接続し、LDAPサーバ側の認証を利用します。
LDAP_MAIL LDAP検索を行ったときに、POP3ログインで指定したユーザと比較する属性を設定します。POP3のログインで、メールアドレスを入力する場合にはmail属性を指定し、ユーザ名を入力する場合にはuidを指定します。
LDAP_FILTER LDAP検索を行うときに、検索対象とするエントリを示す検索フィルタを設定します。authdaemondは、ここで指定した検索フィルタと、LDAP_MAILで設定した属性から作成したフィルタを組み合わせて検索を行います。
LDAP_GLOB_UID ユーザのUIDをサーバ全体で使用する場合に指定します。Postfixの設定ファイルで指定したvirtual_uid_mapsの値にしたがって設定しておく必要があります。
LDAP_GLOB_GID ユーザのGIDをサーバ全体で使用する場合に指定します。Postfixの設定ファイルで指定したvirtual_gid_mapsの値にしたがって設定しておく必要があります。
LDAP_HOMEDIR メール保存ディレクトリ(ホームディレクトリ)の構成要素として取得すべき属性名を設定します。本書では、mailDirectory属性値でディレクトリを設定していましたので、「mailDirectory」を設定します。
LDAP_CRYPTPW LDAPのパスワードが設定されている属性名を指定します。
LDAP_CREARPW LDAP中に平文でパスワードが保管されている場合に属性名を指定します。必ずLDAP_CRYPTPWかLDAP_CREARPWのどちらかを設定しなければいけません。
LDAP_TLS LDAPサーバへ接続するときに、STARTTLSを利用したTLSによる暗号化を行うかどうかを設定します。

6.4. 既にLDAP環境がある場合

既にLDAPの環境が構築されている場合は、次の点に注意してLDAPのユーザのエントリの設定を行ってください。

  • オブジェクトクラスpostLDAPadminが必要であること
  • uid、mail属性が必要であること
  • メール保管ディレクトリのパスを設定すること

6.4.1. postLDAPadminオブジェクトクラス

postLDAPadminのWebインタフェースでは、オブジェクトクラスpostLDAPadminが設定されたエントリだけを編集することができます。postLDAPadminのWebインタフェースを利用する前に、ユーザのエントリにpostLDAPadminオブジェクトクラスを付加してください。

6.4.2. uid属性・mail属性

postLDAPadminでは、ユーザ名にuid属性値、メールアドレスにmail属性値を使用しています。postLDAPadminのWebインタフェースを利用する前に、ユーザのエントリにuid属性・mail属性が設定されていることを確認してください。

6.4.3. メール保管ディレクトリのパスの設定

postLDAPadminでは、LDAPのユーザアカウントのデータからメール保管ディレクトリのパスを取得します。postLDAPadminのWebインタフェースを利用する前に、ユーザのエントリにメール保管ディレクトリのパスを属性値として持つ属性を付加してください。

6.5. dovecot-sieveの設定例

以下の動作設定はCentOS 6.5上にdovecotおよびdovecot-pigeonholeを用いて設定を行っています。
以降の設定は、dovecotおよびdovecot-pigeonholeをインストール後に行なって下さい。

6.5.1. dovecotを利用したローカル配送の設定例

6.5.1.1. postfixの設定例

postfixの設定は、main.cf, master.cfファイルで行います。環境に合わせて設定を行ってください。

/etc/postfix/main.cfの設定例(コメント行を除く)
virtual_transport = dovecot              バーチャルドメインの配送でdovecotを利用するという設定
dovecot_destination_recipient_limit = 1  Dovecotの宛先の受信者の制限
/etc/postfix/master.cfの設定例(コメント行を除く)
dovecot   unix -        n       n       -       -       pipe
  flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${recipient}
※dovecotのdeliverを利用するのに必要な設定

以上の設定後、postfixをrestartします。

6.5.1.2. dovecotの配送設定例

次に、dovecotによるバーチャルドメインの配送設定を行います。環境に合わせて設定してください。

/etc/dovecot/conf.d/10-mail.confの設定例(コメント行を除く)
mail_plugins            = $mail_plugins quota
mail_location           = maildir:~/Maildir
mail_uid                = vmail
mail_gid                = vmail
/etc/dovecot/conf.d/10-master.confの設定例(コメント行を除く)
service auth {
  unix_listener auth-userdb {
    mode                = 0600
    user                = vmail
    group               = vmail
  }
}
/etc/dovecot/conf.d/15-lda.confの設定例(コメント行を除く)
postmaster_address      = root@localhost
protocol lda {
  userdb {
    driver = ldap
    args = /etc/dovecot/ldap/userdb-lda.conf.ext
  }
  mail_plugins = $mail_plugins sieve
}
/etc/dovecot/conf.d/90-quota.confの設定例(コメント行を除く)
plugin {
  quota                   = maildir:User quota
}
/etc/dovecot/ldap/userdb-lda.conf.extの設定例(コメント行を除く)
hosts                   = 127.0.0.1:389
dn                      = cn=Manager,dc=designet,dc=jp
dnpass                  = secret
base                    = dc=designet,dc=jp
scope                   = subtree
user_filter             = (|(mail=%u)(mailAlias=%u))
user_attrs              = mailDirectory=home,quotaSize=quota_rule=*:bytes=%$K

dovecotのLDAP設定ファイルの設定項目は、表のとおりです。

Postfix検索テーブルのLDAP設定ファイル
項目 解説
hosts LDAPサーバのホスト名またはIPアドレスを設定します。
dn LDAP検索の時に使用するベースDNを設定します。
dnpass ベースDNに対応するパスワードを設定します。
auth_bind パスワードの有効性を確認するために認証バインドを使用するかどうかを設定します。
base LDAP検索のときに使用するベースDNを指定します。
scope
LDAP検索を行う場合の検索範囲を指定します。
sub: ベースDNで指定したLDAPディレクトリ配下全体を検索します。

base: ベースDNで指定したLDAPエントリだけを検索します。

one: ベースDNで指定したLDAPエントリのサブエントリ(直下のエントリ)のみを検索します。
user_attrs
userの属性を設定します。
本設定例では以下の設定を行っています。
home: メールディレクトリのPATHを指定しています。

quota_rule: 容量制限のルールをキロバイト単位で指定しています。
user_filter userのフィルターを設定します。

以上の設定後、dovecotをstartします。

6.5.1.3. sieveの設定例

次に、sieveを有効化する設定を行います。環境に合わせて設定してください。

/etc/dovecot/conf.d/90-sieve.confの設定例(コメント行を除く)
sieve = ~/Maildir/dovecot.sieve

以上の設定後、dovecotをrestartします。

6.6. 参考文献

一覧へ