arinux

Linux サーバー設定備忘録
<< openLDAP 構築(47) - メール管理(Postfix + Dovecot) | main | openLDAP 構築(49) - メール管理(Postfix + Dovecot + SMTP AUTH + openldap) >>
openLDAP 構築(48) - メール管理(Postfix + Dovecot + openldap)


ここでは、Dovecot に必要な情報(アカウント、パスワード、メールボックス)を、LDAP から取り出す方法を説明します。なお、この記事は、以下を参考にしています。



今回は、OS のアカウントとは別に SMTP/POP3 用の LDAP ツリーとエントリーを作成します。つまり、OS へのログインや FTP をさせず、メールのみを利用させるアカウントを作成します。また、メール用アカウントだけに POP3 サービスを提供します。


メモ Postfix 用スキーマの追加


Postfix 用のスキーマとして、「postLdapAdmin.schema」 を使用します。


  1. http://sourceforge.jp/projects/postldapadmin/ から、
    「postLdapAdmin-1.0.tar.gz」 をダウンロードして、「/usr/local/src」 に置きます。


  2. 解凍します。
    [root]# cd /usr/local/src
    [root]# tar zxvf postLdapAdmin-1.0.tar.gz
    


  3. postLdapAdmin.schema をコピーします。
    [root]# cp postLdapAdmin/postLdapAdmin.schema /usr/local/etc/openldap/schema/.
    


  4. 「slapd.conf」 に以下を追加します。
    [root]# vi /usr/local/etc/openldap/slapd.conf
    
    include         /usr/local/etc/openldap/schema/postLdapAdmin.schema
    


  5. 「slapd」 の再起動は、後ほどします。



メモ メール用 LDAP エントリーの作成


  1. メール用の ou(organizationalUnit) の LDIF ファイルを作成します。
    [root]# cd <任意のディレクトリ>
    [root]# vi oudn_mail.ldif
    
    dn: ou=Mail,dc=examples,dc=com
    objectClass: organizationalUnit
    ou: Mail
    


  2. エントリーを追加します。
    [root]# ldapadd -x -W -D "cn=Manager,dc=examples,dc=com" -f ./oudn_mail.ldif
    Enter LDAP Password:
    adding new entry "ou=Mail,dc=examples,dc=com"
    


  3. メール管理者用の LDIF ファイルを作成します。これは 「ou=Mail」 のサブツリーだけにアクセスさせるために行います。
    [root]# vi mail_admin.ldif
    
    dn: cn=mailadmin,ou=Mail,dc=examples,dc=com
    objectClass: inetOrgPerson
    objectClass: postLdapAdmin
    sn: mailadmin
    cn: mailadmin
    uid: mailadmin
    userPassword: {MD5}5XR2gvum3iWh9L8W5h0V1g==
    mail: mailadmin@test15.examples.net
    mailDirectory: /home/mail
    


  4. エントリーを追加します。
    [root]# ldapadd -x -W -D "cn=Manager,dc=examples,dc=com" -f ./mail_admin.ldif
    Enter LDAP Password:
    adding new entry "cn=mailadmin,ou=Mail,dc=examples,dc=com"
    


  5. メールアカウントの LDIF ファイルを作成します。
    [root]# vi mail_gamba.ldif
    
    dn: cn=gamba osaka,ou=Mail,dc=examples,dc=com
    objectClass: inetOrgPerson
    objectClass: postLdapAdmin
    sn: osaka
    cn: gamba osaka
    uid: gamba.osaka
    userPassword: {MD5}VJKW9qrhOmOo3z5IIUSOrg==
    mail: gamba.osaka@test15.examples.net
    mailDirectory: /home/mail/gamba.osaka/Maildir/  #最後の / を忘れないように
    

    [root]# vi mail_sanga.ldif
    
    dn: cn=sanga kyoto,ou=Mail,dc=examples,dc=com
    objectClass: inetOrgPerson
    objectClass: postLdapAdmin
    sn: kyoto
    cn: sanga kyoto
    uid: sanga.kyoto
    userPassword: {MD5}VJKW9qrhOmOo3z5IIUSOrg==
    mail: sanga.kyoto@test15.examples.net
    mailDirectory: /home/mail/sanga.kyoto/Maildir/  #最後の / を忘れないように
    


  6. エントリーを追加します。
    [root]# ldapadd -x -W -D "cn=Manager,dc=examples,dc=com" -f ./mail_gamba.ldif
    Enter LDAP Password:
    adding new entry "cn=gamba osaka,ou=Mail,dc=examples,dc=com"
    
    [root]# ldapadd -x -W -D "cn=Manager,dc=examples,dc=com" -f ./mail_sanga.ldif
    Enter LDAP Password:
    adding new entry "cn=sanga kyoto,ou=Mail,dc=examples,dc=com"
    


  7. 「slapd.conf」 にアクセス制御とインデックスを追加します。
    [root]# vi /usr/local/etc/openldap/slapd.conf
    (赤字の部分を追加)
    
    access to dn.subtree="ou=Mail,dc=examples,dc=com" attrs=userPassword
            by dn="cn=mailadmin,ou=Mail,dc=examples,dc=com" read
            by anonymous auth
            by * none
    
    access to attrs=userPassword
            by self write
            by dn="cn=Manager,dc=examples,dc=com" write
            by anonymous auth
            by * none
    
    access to *
            by self write
            by dn="cn=Manager,dc=examples,dc=com" write
            by * read
    
    (省略)
    
    index objectClass pres,eq
    index ou,cn eq,pres,sub
    index uid,mail,uidNumber,gidNumber,loginShell eq,pres
    index entryCSN,entryUUID eq
    


  8. slapd を停止します。
    [root]# /etc/rc.d/init.d/slapd stop
    Stopping slapd
    


  9. インデックスを再生成します。
    [root]# slapindex
    bdb_db_open: database "dc=examples,dc=com": unclean shutdown detected; attempting recovery.
    bdb_monitor_db_open: monitoring disabled; configure monitor database to enable
    


  10. slapd を起動します。
    [root]# /etc/rc.d/init.d/slapd start
    Starting slapd
    



メモ メールおよび POP サーバー設定


  1. メール用アカウントは posixAccount が存在しないため、代わりのユーザーとグループを作成します(nobody ユーザーを使用してもかまいません)。
    [root]# groupadd -g 5000 vmail
    [root]# useradd -g vmail -u 5000 -d /dev/null -s /bin/false vmail
    


  2. man.cf を編集します。
    [root]# vi /usr/local/etc/postfix/main.cf
    
    #default_privs = nobody     (もともとある行)
    default_privs = vmail       (この行を追加)
    
    (alias_maps に ldap_aliases.cf を追加)
    alias_maps = hash:/usr/local/etc/postfix/aliases, ldap:/usr/local/etc/postfix/ldap_aliases.cf
    


  3. ldap_aliases.cf を作成します。
    [root]# vi /usr/local/etc/postfix/ldap_aliases.cf
    
    server_host = localhost
    server_port = 389
    search_base = ou=Mail,dc=examples,dc=com
    query_filter = (uid=%u)
    result_attribute = mailDirectory
    version = 3
    
    虫眼鏡 LDAP ユーザーを alias として処理


    LDAP ユーザーは OS のアカウントとしては存在しないため、「alias」 として処理します。「ldap_aliases.cf」 によって、uid をもとに検索して得た mailDirectory の値をメールボックスのパスとして使用します。


  4. postfix を再起動します。
    [root]# /etc/rc.d/init.d/postfix restart
    Shutting down postfix:                                     [  OK  ]
    Starting postfix:                                          [  OK  ]
    


  5. 設定通りに mailDirectory の値が返ってくるかを確認します。
    [root]# postmap -q "gamba.osaka@test15.examples.net" ldap:/usr/local/etc/postfix/ldap_aliases.cf
    /home/mail/gamba.osaka/Maildir/
    


  6. dovecot.conf を編集します。
    [root]# vi /usr/local/etc/dovecot/dovecot.conf
    
    protocols = pop3 imap
    listen = *
    disable_plaintext_auth = no
    log_path = /var/log/dovecot.log
    log_timestamp = "%b %d %H:%M:%S "
    syslog_facility = mail
    ssl_disable = yes
    mail_location = maildir:~/    #ここは maildir:~/Maildir と書かないように
    lock_method = fcntl
    first_valid_uid = 5000        #先ほど作成した vmail ユーザーの uid を指定
    protocol imap {
    }
    protocol pop3 {
      pop3_uidl_format = %v-%u
    }
    protocol lda {
      postmaster_address = postmaster@test15.examples.net
    }
    auth default {
      mechanisms = plain
      passdb ldap {
        args = /usr/local/etc/dovecot/dovecot-ldap.conf
      }
      userdb ldap {
        args = /usr/local/etc/dovecot/dovecot-ldap.conf
      }
    }
    dict {
    }
    plugin {
    }
    


  7. dovecot-ldap.conf を編集します。
    [root]# vi /usr/local/etc/dovecot/dovecot-ldap.conf
    
    hosts = localhost
    dn = cn=mailadmin,ou=Mail,dc=examples,dc=com
    dnpass = passwd0120           #このパスワードは平文でしか書けません
    ldap_version = 3
    base = ou=Mail,dc=examples,dc=com
    user_attrs = uid=user,mailDirectory=home
    user_filter = (uid=%u)
    pass_attrs = uid=user,userPassword=password
    pass_filter = (uid=%u)
    default_pass_scheme = PLAIN
    user_global_uid = vmail
    user_global_gid = vmail
    


  8. dovecot を再起動します。
    [root]# /etc/rc.d/init.d/dovecot restart
    dovecot を停止中:                                          [  OK  ]
    dovecot を起動中:
    


  9. telnet でログイン認証のテストをします。
    [root]# telnet localhost 110
    Trying 127.0.0.1...
    Connected to localhost.
    Escape character is '^]'.
    +OK Dovecot ready.
    user gamba.osaka
    +OK
    pass gamba0120
    +OK Logged in.
    quit
    +OK Logging out.
    Connection closed by foreign host.
    


  10. メールボックスのディレクトリを作成します。
    [root]# mkdir /home/mail
    [root]# chown vmail:vmail /home/mail
    


  11. メール送信テストをします。
    [root]# echo "postfix test 1302" | mail -s "test 1302" gamba.osaka@test15.examples.net
    


  12. メールが届いたかを確認します。
    [root]# ls /home/mail/gamba.osaka/Maildir/new
    
    1210927204.V808I26eaaM742279.test15.examples.net
    


  13. メール・クライアントから送受信テストをします。以下のように、メール・クライアントで新規メールボックスを作成します(ここでは Becky! を例にしています)。
    Becky! メールボックス 基本設定その2Becky! メールボックス 詳細その2


  14. メールが受信できるかを確認します。
    Becky! メールボックス 受信テストその2


  15. 「返信」 もしくは 「新規メール」 で、メールの送信テストを行います。



つづく

| arinux | openldap | 14:25 | comments(1) | trackbacks(0) | pookmark |
管理者の承認待ちコメントです。
| - | 2018/05/10 12:25 PM |









http://www.arinux.net/trackback/66
      1
2345678
9101112131415
16171819202122
23242526272829
30      
<< September 2018 >>
+ SELECTED ENTRIES
+ RECENT COMMENTS
+ RECENT TRACKBACK
+ CATEGORIES
+ ARCHIVES
+ 掲載予定のタイトル
  • Wordpress
  • Pukiwiki
  • SMTPs/POPs/IMAPs
  • fml
  • Tips
+ CSS Nite
+ MOBILE
qrcode
+ LINKS
+ RECOMMEND
+ PROFILE