PostfixとDovecotとOpenLADP(その3/4)

セキュアなメールサーバーをLDAPを絡めて構築する。

PostfixとDovecotの稼働環境:

CentOS release 6.5 (Final)
Linux version 2.6.32-279.14.1.el6.x86_64 (mockbuild@c6b8.bsys.dev.centos.org) (gcc version 4.4.6 20120305 (Red Hat 4.4.6-4) (GCC) ) #1 SMP Tue Nov 6 23:43:09 UTC 2012
Dovecot Version 2.0.9
Postfix mail_version = 2.6.6

前回までで、openLDAP2.4へのmail.schemaの追加は完了したつもりなので、今回はその続きのデータ投入から始める。 (気軽に始めたつもりなのに、思いのほかハマりつつある。)

引き続きPostfix+Dovecot+OpenLDAPでメールサーバ | UNIXLifeのページに従って行う。

OpenLDAPへの登録データの作成

参考にしているページでは、「TOPツリーデータの作成(top.ldif)」や「ドメインのデータ作成(domain.ldif)」と解りやすく手順を解説してますが、既にdc=ramuda,dc=co,dc=jpのディレクトリーツリーが存在している為、ここの手順は不要となります。

ユーザデータの作成(user.ldif)

この手順では、既存エントリー「dn: uid=xxxxx, ou=xxxx, dc=ramuda,dc=co,dc=jp」にobjectClassのmailUserを追加し、必要な属性を追加&設定する作業になります。
ここまで来てちょっとズルイのですが、phpLDAPadminにてこの作業を実施します。コマンドラインでの作業なんてかったるくてやってられません。

phpLDAPadminにアクセスし、自分のエントリーの詳細画面を表示します。
001
objectClassのところにある”(add value)”をクリックする。
002
mailUserを選択状態にして、[Add new ObjectClass]ボタンをクリックする。
003
必須のattributeを入力して、[Add ObjectClass and Attributes]ボタンをクリックする。
007
確認画面となるので問題無ければ[Update Object]ボタンをクリックする。
008
正しく追加されたみたいです。
006

バーチャル環境の配送ユーザと配送先ディレクトリの作成

メール配送ユーザの作成

バーチャル環境で、メール配送する為のメール配送用アカウントとメールの配送先ディレクトリを先に作成します。

[root]# groupadd -g 500 vmail                                                               
[root]# useradd -g 500 -s /sbin/nologin -u 500 -d /home/mailbox vmail

配送先ディレクトリの作成

各ユーザー毎の配信ディレクトリーは、前の手順で作成した/home/mailbox以下に作成される仕組みです。その為に、各ユーザーのmailDirectory属性には、「/home/mailbox/(ユーザ名)」を設定する必要があります。

Postfixの設定

Postfixの各種設定ファイルを編集、追加する。

/etc/postfix/main.cf

下記のように編集

#inet_interfaces = localhost <---コメントにする
myhostname = www.ramuda.co.jp
mydomain = ramuda.co.jp
mynetworks = 127.0.0.0/8
mydestination = $myhostname, localhost.$mydomain, localhost, ldap:/etc/postfix/vdomain.cf<-処理ドメインをLDAPから取得

message_size_limit = 10240000 <---1メッセージの最大容量(10MB)
mailbox_size_limit = 512000000 <---メールボックスの最大容量(500MB)

dovecot_destination_recipient_limit = 1 <---Dovecot deliverを利用する場合に指定
transport_maps = ldap:/etc/postfix/transport.cf <---LDAPから取得、通常はdovecot
virtual_alias_maps = ldap:/etc/postfix/account.cf,ldap:/etc/postfix/group.cf <---LDAPからメールアドレスを取得

local_transport = local
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

unknown_local_recipient_reject_code = 550

# SASL Enable <---Dovecot-SASLの有効化
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes

# Relay Settings <---アクセス制限
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination

/etc/postfix/master.cf

  (省略)
qmgr      fifo  n       -       n       300     1       qmgr
#qmgr     fifo  n       -       n       300     1       oqmgr
tlsmgr    unix  -       -       n       1000?   1       tlsmgr

# maildrop. See the Postfix MAILDROP_README file for details.
# Also specify in main.cf: maildrop_destination_recipient_limit=1
#
dovecot unix    -       n       n       -       -       pipe
  flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${recipient}

rewrite   unix  -       -       n       -       -       trivial-rewrite
bounce    unix  -       -       n       -       0       bounce
  (省略)

OpenLDAPからデータを取得するための設定ファイルを作成していきます。

main.cf内には、OpenLDAPよりデータを取得するための設定ファイルが読み込まれています。
このファイルの書式は以下の通りです。
server_host = OpenLDAPのホストを指定
search_base = 検索dn:を指定
query_filter = 検索条件を指定(%sはメールアドレス)
result_attribute = 検索後に取得したい値を持つ、属性を指定

トランスポート値の取得

/etc/postfix/transport.cfを作成する。

[root]# vi /etc/postfix/transport.cf                                                  
server_host = (Your LDAP host)
search_base = dc=ramuda,dc=co,dc=jp
query_filter = (&(objectClass=inetOrgPerson)(|(mail=%s)(mailAlias=%s))(accountActive=TRUE))
result_attribute = transport

メールの配送アドレスを取得

/etc/postfix/account.cfを作成する。

[root]# vi /etc/postfix/account.cf
server_host = (Your LDAP host)
search_base = dc=ramuda,dc=co,dc=jp
query_filter = (&(objectClass=inetOrgPerson)(|(mail=%s))(accountActive=TRUE))
result_attribute = mail, mailForward

メールの所属ドメインを取得

/etc/postfix/vdomain.cfを作成する。

[roo]# vi /etc/postfix/vdomain.cf 
server_host = (Your LDAP host)
search_base = dc=ramuda,dc=co,dc=jp
query_filter = (domainName=%s)
result_attribute = domainName

メールの配送アドレスを取得(グループアドレス用)

/etc/postfix/group.cfを作成する。

[root]# vi /etc/postfix/group.cf 
server_host = (Your LDAP host)
search_base = dc=ramuda,dc=co,dc=jp
query_filter = (&(objectClass=inetOrgPerson)(mail=%s)(accountActive=TRUE))
result_attribute = mailDrop

dovecotインストール

yumでdovecotをインストールします。dovecot-develもついでに入れてしまいます。

[root]# yum install dovecot dovecot-devel
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
 * base: www.ftp.ne.jp
 * epel: ftp.jaist.ac.jp
 * extras: www.ftp.ne.jp
 * updates: www.ftp.ne.jp
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package dovecot.x86_64 1:2.0.9-7.el6 will be installed
---> Package dovecot-devel.x86_64 1:2.0.9-7.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

========================================================================================================
 Package                     Arch                 Version                      Repository          Size
========================================================================================================
Installing:
 dovecot                     x86_64               1:2.0.9-7.el6                base               1.9 M
 dovecot-devel               x86_64               1:2.0.9-7.el6                base               262 k

Transaction Summary
========================================================================================================
Install       2 Package(s)

Total download size: 2.2 M
Installed size: 6.5 M
Is this ok [y/N]: y
Downloading Packages:
(1/2): dovecot-2.0.9-7.el6.x86_64.rpm                                            | 1.9 MB     00:00     
(2/2): dovecot-devel-2.0.9-7.el6.x86_64.rpm                                      | 262 kB     00:00     
--------------------------------------------------------------------------------------------------------
Total                                                                   4.0 MB/s | 2.2 MB     00:00     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : 1:dovecot-2.0.9-7.el6.x86_64                                                         1/2 
  Installing : 1:dovecot-devel-2.0.9-7.el6.x86_64                                                   2/2 
  Verifying  : 1:dovecot-2.0.9-7.el6.x86_64                                                         1/2 
  Verifying  : 1:dovecot-devel-2.0.9-7.el6.x86_64                                                   2/2 

Installed:
  dovecot.x86_64 1:2.0.9-7.el6                    dovecot-devel.x86_64 1:2.0.9-7.el6                   

Complete!

Dovecotの設定

dovecot.conf

/etc/dovecot/doveot.confを編集。赤字を追加

[root]# vi dovecot.conf 
  (省略)
# Most of the actual configuration gets included below. The filenames are
# first sorted by their ASCII value and parsed in that order. The 00-prefixes
# in filenames are intended to make it easier to understand the ordering.
!include conf.d/*.conf

protocols = imap pop3 lmtp

# A config file can also tried to be included without giving an error if
# it's not found:
#!include_try /etc/dovecot/local.conf

dovecot-ldap.conf

dovecot-ldap.confを用意する。

[root]# cp /usr/share/doc/dovecot-2.0.9/example-config/dovecot-ldap.conf.ext /etc/dovecot/dovecot-ldap.conf

編集する。

hosts = (Your LDAP Server)
# LDAP URIs to use. You can use this instead of hosts list. Note that this
# setting isn't supported by all LDAP libraries.
#uris =
auth_bind = yes
# LDAP protocol version to use. Likely 2 or 3.
#ldap_version = 3

# LDAP base. %variables can be used here.
# For example: dc=mail, dc=example, dc=org
base = dc=ramuda,dc=co,dc=jp

#user_attrs = homeDirectory=home,uidNumber=uid,gidNumber=gid
user_attrs = mailDirectory=home , mailQuota=quota_rule=*:bytes=%$M
user_filter = (&(objectClass=inetOrgPerson)(|(uid=%u)(mail=%u))(accountActive=TRUE))

#pass_filter = (&(objectClass=posixAccount)(uid=%u))
pass_filter = (&(objectClass=inetOrgPerson)(|(uid=%u)(mail=%u))(accountActive=TRUE))
#default_pass_scheme = CRYPT
default_pass_scheme = MD5

auth-ldap.conf.ext

[root]# vi /etc/dovecot/conf.d/auth-ldap.conf.ext 
passdb {
  driver = ldap

  # Path for LDAP configuration file, see example-config/dovecot-ldap.conf.ext
  args = /etc/dovecot/dovecot-ldap.conf
}
userdb {
  driver = ldap
  args = /etc/dovecot/dovecot-ldap.conf
}

10-auth.conf

[root@www1346ui ~]# vi /etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = no
auth_cache_size = 10M
auth_mechanisms = plain
#!include auth-system.conf.ext <== コメントアウト
!include auth-ldap.conf.ext

10-logging.conf

[root]# vi /etc/dovecot/conf.d/10-logging.conf                                              
##
## Log destination.
##

# Log file to use for error messages. "syslog" logs to syslog,
# /dev/stderr logs to stderr.
log_path = syslog

# Log file to use for informational messages. Defaults to log_path.
#info_log_path =
# Log file to use for debug messages. Defaults to info_log_path.
#debug_log_path =

# Syslog facility to use if you're logging to syslog. Usually if you don't
# want to use "mail", you'll use local0..local7. Also other standard
# facilities are supported.
syslog_facility = mail

10-mail.conf

[root]# vi /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:%h/Maildir
mail_uid = 500
mail_gid = 500
mail_plugins = $mail_plugins quota
mail_attachment_hash = %{md5}

10-master.conf

[root]# vi /etc/dovecot/conf.d/10-master.conf
service auth {
  # auth_socket_path points to this userdb socket by default. It's typically
  # used by dovecot-lda, doveadm, possibly imap process, etc. Its default
  # permissions make it readable only by root, but you may need to relax these
  # permissions. Users that have access to this socket are able to get a list
  # of all usernames and get results of everyone's userdb lookups.
  unix_listener auth-userdb {
    mode = 0600
    user = vmail
    group = vmail
  }

  # Postfix smtp-auth
  unix_listener /var/spool/postfix/private/auth {
    mode = 0660
    user = postfix
    group = postfix
  }

  # Auth process is run as this user.
  #user = $default_internal_user
}

10-ssl.conf

[root]# vi /etc/dovecot/conf.d/10-ssl.conf
##
## SSL settings
##

# SSL/TLS support: yes, no, required. <doc/wiki/SSL.txt>
ssl = no

15-lda.conf

[root]# vi /etc/dovecot/conf.d/15-lda.conf
##
## LDA specific settings (also used by LMTP)
##

# Address to use when sending rejection mails.
# Default is postmaster@.
postmaster_address = root@localhost

# Hostname to use in various parts of sent mails, eg. in Message-Id.
# Default is the system's real hostname.
hostname = www.ramuda.co.jp
  (中略)
protocol lda {
  # Space separated list of plugins to load (default is global mail_plugins).
  mail_plugins = $mail_plugins quota
}

20-lmtp.conf

[root]# vi /etc/dovecot/conf.d/20-lmtp.conf                                                 
##
## LMTP specific settings
##

# Support proxying to other LMTP/SMTP servers by performing passdb lookups.
#lmtp_proxy = no

# When recipient address includes the detail (e.g. user+detail), try to save
# the mail to the detail mailbox. See also recipient_delimiter and
# lda_mailbox_autocreate settings.
#lmtp_save_to_detail_mailbox = no

protocol lmtp {
  # Space separated list of plugins to load (default is global mail_plugins).
  mail_plugins = $mail_plugins quota
}

20-imap.conf

[root]# vi /etc/dovecot/conf.d/20-imap.conf
##
## IMAP specific settings
##

protocol imap {
  # Maximum IMAP command line length. Some clients generate very long command
  # lines with huge mailboxes, so you may need to raise this if you get
  # "Too long argument" or "IMAP command line too large" errors often.
  #imap_max_line_length = 64k

  # Maximum number of IMAP connections allowed for a user from each IP address.
  # NOTE: The username is compared case-sensitively.
  #mail_max_userip_connections = 10

  # Space separated list of plugins to load (default is global mail_plugins).
  mail_plugins = $mail_plugins imap_quota

20-pop3.conf

[root]# vi /etc/dovecot/conf.d/20-pop3.conf                                                 
  # Space separated list of plugins to load (default is global mail_plugins).
  mail_plugins = $mail_plugins quota

90-quota.conf

[root]# vi /etc/dovecot/conf.d/90-quota.conf
##
## Quota configuration.
##

# Note that you also have to enable quota plugin in mail_plugins setting.
# <doc/wiki/Quota.txt>

##
## Quota limits
##

# Quota limits are set using "quota_rule" parameters. To get per-user quota
# limits, you can set/override them by returning "quota_rule" extra field
# from userdb. It's also possible to give mailbox-specific limits, for example
# to give additional 100 MB when saving to Trash:

plugin {
  #quota_rule = *:storage=1G
  #quota_rule2 = Trash:storage=+100M
  quota = maildir:User quota
}

Dovecotの設定は以上で終わりみたい。

すんません。その4に続きます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>