|
||
|
ActiveDirectoryと連携するメールサーバ(WinbindとMailDir)LinuxのメールアカウントをActiveDirectoryで管理する方式です。1.メールサーバのアカウントをAD上のユーザーと連携できる 2.メールのパスワードをActiveDirectoryで統一管理。 などが主なメリットです。 複雑なことに思えますが、やっていることはシンプルで、Linuxのユーザー認証のときローカルユーザーに加えて、ActiveDirectory上もチェックする。ということです。 認証の仕組み 必要なものは3つ。 ・構築済みのActiveDirectory ・意図した通りに動作するメールサーバ (SMTP・POP) ・Sambaに含まれているWinbind MailDir形式とは、1メール1ファイルにしてユーザーごとのディレクトリへ格納する形式です。 MailDir形式はMBox形式に比べて簡単です。 他の調整については別ページにて解説しています。 1.メールサーバの構築 (MailDir形式)#yum install postfix (デフォルトで入っている)#yum install dovecot /etc/postfix/main.conf の編集 mydestination = $myhostname, localhost.$mydomain, example.local (追加) inet_interfaces = all inet_protocols = ipv4 mynetworks = localhost #home_mailbox = MailBox (コメントアウト確認) mail_spool_directory = /var/mail/ 末尾へスラッシュを加えてMailDir形式へ設定 /etc/dovecot/dovecot.conf の編集 listen = * :: を削除して*だけに変更 protocols = pop3 imap lmtpを削除してpop3だけに /etc/dovecot/conf.d/10-auth.conf の編集 disable_plaintext_auth = no /etc/dovecot/conf.d/10-mail.conf の編集 mail_location = maildir:/var/mail/%u /etc/dovecot/conf.d/10-ssl.conf の編集 #ssl = required #コメントアウト ディレクトリが自動作成できるよう、メールディレクトリの実体へ書き込み権を追加 (/var/mailはシンボリックリンクのため、パーミッションは設定できない) #chmod o+w /var/spool/mail サービスを再起動します。 #service postfix restart #service dovecot restart #chkconfig postfix on #chkconfig dovecot on テストユーザーを作成し、試験します。 #useradd -s /sbin/nologin user1 #passwd user1 仮メールを1通送っておきます。でないとPOPで失敗します。 #mail -s TestMail user1@example.local test (本文入力) . (ドットで終了) この時点でメールクライアントを接続し、user1@example.localへメールが送受信できるか確認します。 1.サービスが正常に起動していない 2.ファイアウォールが閉まってる 3.テストメール送信に失敗して、まだメールが1通もない 2.AcitveDirectoryへ参加するActiveDirectoryに参加するためにはsambaが必要です。今回の環境ならsamba3で可能です。#yum install samba なお、samba4の場合、後に必要になるwinbindが含まれていない模様。 追加インストールします。 winbind-clientsには、後で使用するwbinfoなどが含まれています。 #yum install samba-winbind samba-winbind-clients DNSがActiveDirectoryのドメインコントローラを向いている必要があります。 コマンドで、現在のDNSがどこに向いているかを確認します。 #cat /etc/resolv.conf /etc/samba/smb.conf の編集 [global] netbios name = mailsv #security = user #コメントアウト security = ads workgroup = EXAMPLE realm = EXAMPLE.LOCAL #注意。ここは大文字で指定 ドメイン参加 #net ads join -U administrator ADの管理者パスワードを入力し、AD上にコンピュータアカウントが生成されていれば成功です。 以下のメッセージも成功です。 Joined 'MAILSV' to dns domain 'example.local' No DNS domain configured for mailsv. Unable to perform DNS Update. DNS update failed! AD側のDNSのアップデートが失敗しているので、netbios nameと同じ名前をADのDNSのAレコードに追加しておきます。 3.Linuxの認証をActiveDirectoryと連携させる/etc/nsswitch.conf の編集password: files winbind shadow: files winbind group: files winbind filesの後にwinbindを続けることで、ローカル認証→次にWinbind経由のAD認証となります。 /etc/samba/smb.conf の編集 [global] security = ads netbios name = mailsv workgroup = EXAMPLE realm = EXAMPLE.LOCAL idmap config * : backend = tdb idmap config * : range=10000-20000 winbind use default domain = yes /etc/krb5.conf の編集 [libdefaults] default_realm = EXAMPLE.LOCAL [realms] EXAMPLE.LOCAL = { kdc=dc1.example.local #ドメインコントローラのFQDN kdc=dc2.example.local #追加のドメインコントローラのFQDN admin_server = dc1.example.local #ドメインコントローラのFQDN } [domain_realm] .example.local = EXAMPLE.LOCAL #大文字で設定 example.local = EXAMPLE.LOCAL PostfixやSSHなどsamba以外からWinbindを利用可能にするためにはpamの設定が必要です。 /etc/pam.d/system-authファイルをコマンドで設定変更すします。 #authconfig --enablewinbindauth --update 8系の場合、以下のようにコマンドを変更します。 #authconfig --enablewinbind --enablewinbindauth --update 設定が完了したら、連携できるようWinbindを起動。(authconfig実行時にwinbindは起動されますが) ActiveDirectoryと連携するだけならsambaのその他サービス(smb、samba、nmbd)は起動する必要ありません。 #service winbind start #chkconfig winbind on 試験 いくつかのコマンドで、ユーザー情報をADから正しく取得できるかを試します。 #wbinfo -p Winbindの起動確認 #wbinfo -t ドメイン接続確認。 root権限がいる #wbinfo -u ADから全てのユーザーを取得する #wbinfo -g ADから全てのグループを取得する #net ads info 接続ドメインコントローラの情報 #getent passwd 'example\winuser1' シングルクォーテーションなことに注意 getentはユーザーのマッピング情報をpasswd形式で表示します。 ここでエラーが出るのなら、nsswitch.confやsmb.confのwinbind系の設定値がミスってます。 getentを使用して成功した場合はユーザーがログインしたものとみなされます。 Linuxが払いだすマッピング用のSID(ここでは10000から20000の間)が1つ消費され、SIDとUIDのマッピング情報がTDBへ書き込まれます。 マッピング用TDB (/var/lib/samba/winbindd_idmap.tdb) は、WindowsのSIDとLinuxのUIDを関連付けたものです。
マッピング用TDBの中身を確認するには #net idmap dump とします。 マッピング用TDBからマッピングエントリを削除する場合は 表示されたWindowsのSIDを使ってdeleteコマンドを使用します。 #net idmap delete S-1-5-21-2659596216-558067740-645703359-10103 次に、ADに対してユーザーのパスワード認証が正しくできるかを確認します。 #wbinfo -a Administrator%P@sswd パスワードの認証テスト。%は区切り文字。root権限がいる #kinit winuser1@EXAMPLE.LOCAL レルムは大文字で指定。チケットの発行テスト kinitはケルベロスチケットの取得を行います。 kinitはパスワード入力に成功すると、なんのメッセージも表示されません。 認証が成功しない場合、以下のようなメッセージが表示されます。 エラー kinit: Cannot find KDC for requested realm while getting initial credentials エラーの場合はkrb5.conf の設定内容をチェックをします。大文字小文字、つづり間違いが考えられます。 4.ActiveDirectory上のユーザー名でメールを送るActiveDirectory上に存在するユーザー名をメールアドレスにして(例えば winuser1@example.local)、メールサーバへ送信します。正しく着信し、winuser1のパスワードでメールが取り出せれば成功です。 5.AD連携のサーバに調整を加える他の調整については別ページにて解説しています。 |
|