5. 設定詳細(web.conf) 一覧へ 7. postLDAPadminリリースノート
- 6. Appendix
6. Appendix
6.1. LDAPサーバの設定例
LDAPサーバは、次の例にしたがって設定を行ってください。
- LDAPサーバの基本設定
- LDAPの基本構造の作成
LDAPサーバの設定については、次のサイトを参考にしてください。
- OpenLDAPホームページ
6.1.1. LDAPサーバの基本設定例
LDAPサーバの設定は、ldapadd,ldapmodify,ldapsearchコマンドを使用して設定、確認を行うことができます。環境に合わせて設定を行ってください。少なくとも、suffix、rootdn、rootpwの項目は設定します。
# 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>
# 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)を用意します。
# 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のインストール、設定方法は、以下のサイトを参考にして行ってください。
- Postfixホームページ
- Postfix VDA
本書の執筆時点での最新バージョンは、2.4版のパッチレベル5です。
6.2.1. LDAPによる仮想ユーザ管理
- Postfix設定ファイルの準備
- 仮想メールボックスに配送するドメインの設定
- 仮想別名テーブルの設定
- 仮想メールボックスの配送先の設定
- 仮想メールボックス容量の設定
- メール保管アカウントの設定
6.2.1.1. Postfix設定ファイルの準備
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の検索条件を設定します。
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/
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
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設定ファイルの設定項目は、表のとおりです。
項目 | 解説 |
---|---|
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の設定は次のサイトを参考にしてください。
- Courier-IMAP
- Courier-Authlib
6.3.1. postLDAPadminのweb.confの設定
postfix、courier-imapはbyte単位でクォータを参照するため、web.confのQuotaUnitの項目はbを設定してください。
6.3.2. LDAPによる仮想ユーザ管理
courier-imapでLDAP仮想ユーザ管理を行うには、authdaemondのLDAP用の設定ファイル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の設定項目は表のとおりです。
項目 | 解説 |
---|---|
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の設定例
6.5.1. dovecotを利用したローカル配送の設定例
6.5.1.1. postfixの設定例
postfixの設定は、main.cf, master.cfファイルで行います。環境に合わせて設定を行ってください。
virtual_transport = dovecot バーチャルドメインの配送でdovecotを利用するという設定
dovecot_destination_recipient_limit = 1 Dovecotの宛先の受信者の制限
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によるバーチャルドメインの配送設定を行います。環境に合わせて設定してください。
mail_plugins = $mail_plugins quota
mail_location = maildir:~/Maildir
mail_uid = vmail
mail_gid = vmail
service auth {
unix_listener auth-userdb {
mode = 0600
user = vmail
group = vmail
}
}
postmaster_address = root@localhost
protocol lda {
userdb {
driver = ldap
args = /etc/dovecot/ldap/userdb-lda.conf.ext
}
mail_plugins = $mail_plugins sieve
}
plugin {
quota = maildir:User quota
}
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設定ファイルの設定項目は、表のとおりです。
項目 | 解説 |
---|---|
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を有効化する設定を行います。環境に合わせて設定してください。
sieve = ~/Maildir/dovecot.sieve
以上の設定後、dovecotをrestartします。
6.6. 参考文献
- 『Linuxで作る完全メールシステム構築ガイド』(2007年2月5日第1版第1刷 デージーネット著)
- OpenLDAPホームページ
- Postfixホームページ
- Postfix VDA
- Apache Software Foundation
- Dovecotホームページ