[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[postfix-jp:03195] SMTPから の応答が帰ってきません( POSTFIX+ LDAP + Cyrus SASL)





はじめまして。メーリングリストに入会した竹内と申します。
以後宜しく御願い致します。

さて、SoftwareDesignに掲載していた中満さんの記事からPostfixに惚れ込みました
。
今回、新規でメールサーバを構築する依頼があり、REDHAT 9で構築することとなっ
たのですが
暗礁に乗り上げてしました。インストールの経緯を下記に記します。
(ドメイン、ユーザ、パスワードは架空のドメインですのでご了承下さい。)

<環境>
OS:Redhat Linux 9
POSTFIX + LDAP + Cyrus SASL + Courier-IMAP で構築中です。

(症状)
TelnetよりSMTPに接続試験を行いますと、応答が帰ってこなくなります。

[root@www sbin]# telnet localhost smtp
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.          ← ここで止まってしまいます。”220”が帰
ってきません。

mail.log、messege.logともエラーは吐かれておりません。何かを待っている模様で
す。

main.cf のLDAP関連の設定をコメントすると、下記のように応答が帰ってきます。

telnet localhost smtp
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 www.example.jp ESMTP Postfix

私としての見解ですが、POSTFIXがLDAPを見つけられていないのではと思っておりま
す。
DNSにまだドメインを登録していませんので、LDAPがドメインを探せずにいるのかも
しれません。

このような現象をご経験された方がいらっしゃいましたら、ご指導頂ければ幸いで
す。

下記にセットアップの内容を記します。

**************** インストールの概要 *************************

(各ソフトウェア)
Berkeley DB         4.0.14-20      *Redhat 9 標準rpm使用
OpenLDAP            2.0.27-8       *Redhat 9 標準rpm使用
Cyrus SASL          2.1.10-4       *Redhat 9 標準rpm使用
POSTFIX                  2.0.14
Courier-IMAP   2.1.0

(インストール)
・POSTFIX
%tar zxvf postfix-2.0.14.tar.gz
%cd postfix-2.0.14
%make tidy
%make makefiles CCARGS="-I/usr/include/sasl -I/usr/include -DHAS_LDAP
-DUSE_SASL_AUTH" AUXLIBS="-L/usr/local/lib -R/usr/local/lib -lldap -llber
-lsasl2 -lz"
#make
#make install

<main.cfの編集>
myhostname = www.example.jp
mydomain = example.jp
relay_domains = $mydomain, $myhostname
mynetworks = 172.17.21.0/24, 127.0.0.0/24, 127.0.0.1/8

inet_interfaces = all
myorigin = $mydomain
alias_maps = hash:/etc/aliases

smtpd_sasl_local_domain = $myhostname
smtpd_sasl_auth_enable= yes
smtpd_sasl_security_options = noanonymous

virtual_mailbox_base = /
virtual_mailbox_maps = ldap:mbox
virtual_minimum_uid = 10012
virtual_uid_maps = static:10012
virtual_gid_maps = static:10012

transport_maps = ldap:transport
transport_server_host = localhost
transport_search_base = o=mailuser, dc=example, dc=jp
transport_query_filter = (domainName=%s)
transport_result_attribute = transport

virtual_mailbox_base = /
virtual_mailbox_maps = ldap:mbox
virtual_minimum_uid = 10012
virtual_uid_maps = static:10012
virtual_gid_maps = static:10012

virtual_mailbox_maps = ldap:mbox
mbox_server_host = localhost
mbox_search_base = o=mailuser, dc=example, dc=jp
mbox_query_filter = (&(|(mail=%s)(mailAlias=%s))(mailActive=TRUE))
mbox_result_attribute = mailDir

virtual_maps = ldap:deliver
deliver_server_host = localhost
deliver_search_base = o=mailuser, dc=example, dc=jp
deliver_query_filter = (&(|(mail=%s)(mailAlias=%s))(mailActive=TRUE))
deliver_result_attribute = mail, mailForward


smtpd_recipient_restrictions =
 permit_mynetworks,
 permit_auth_destination,
 permit_sasl_authenticated,
 check_relay_domains,
 reject

<postconf -nの結果>

./postconf -n
alias_maps = hash:/etc/aliases
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
debug_peer_level = 2
inet_interfaces = all
mail_owner = postfix
mailq_path = /usr/bin/mailq
manpage_directory = /usr/local/man
mydomain = example.jp
myhostname = www.example.jp
mynetworks = 172.17.21.0/24, 127.0.0.0/24, 127.0.0.1/8
myorigin = $mydomain
newaliases_path = /usr/bin/newaliases
queue_directory = /var/spool/postfix
readme_directory = no
relay_domains = $mydomain, $myhostname
sample_directory = /etc/postfix
sendmail_path = /usr/sbin/sendmail
setgid_group = postdrop
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
transport_maps = ldap:transport
unknown_local_recipient_reject_code = 450
virtual_gid_maps = static:10012
virtual_mailbox_base = /
virtual_mailbox_maps = ldap:mbox
virtual_minimum_uid = 10012
virtual_uid_maps = static:10012

<postconf-m の結果>

./postconf -m
static
nis
regexp
environ
proxy
ldap
btree
unix
hash


・LDAPの設定
</etc/openldap/slap.conf の編集>

include         /etc/openldap/schema/core.schema
include         /etc/openldap/schema/cosine.schema
include         /etc/openldap/schema/corba.schema
include         /etc/openldap/schema/inetorgperson.schema
include         /etc/openldap/schema/java.schema
include         /etc/openldap/schema/misc.schema
include         /etc/openldap/schema/nis.schema
include         /etc/openldap/schema/openldap.schema
#include        /etc/openldap/schema/redhat/rfc822-MailMember.schema
include         /etc/openldap/schema/redhat/autofs.schema
include         /etc/openldap/schema/redhat/kerberosobject.schema
include         /etc/openldap/schema/postfix.schema

pidfile         /var/run/slapd.pid
argsfile        /var/run/slapd.args

database        ldbm
suffix          "dc=example, dc=jp"
rootdn          "cn=Manager, dc=example, dc=jp"
rootpw          select
directory       /var/lib/ldap
index           objectClass     eq


<postfix.schema の登録>

attributetype ( 1.3.6.1.4.1.12461.1.1.1
        NAME 'mailForward'
        DESC 'forword address'
        EQUALITY caseExactIA5Match
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26)

attributetype ( 1.3.6.1.4.1.12461.1.1.2
        NAME 'mailAlias'
        DESC 'alias address'
        EQUALITY caseExactIA5Match
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26)

attributetype ( 1.3.6.1.4.1.12461.1.1.3
        NAME 'mailDir'
        DESC 'path of maildir'
        EQUALITY caseExactIA5Match
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
        SINGLE-VALUE )

attributetype ( 1.3.6.1.4.1.12461.1.1.4
        NAME 'mailActive'
        DESC 'active or not'
        EQUALITY booleanMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
        SINGLE-VALUE )

attributetype ( 1.3.6.1.4.1.12461.1.1.5
        NAME 'transport'
        DESC 'transport'
        EQUALITY caseIgnoreIA5Match
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26)

attributetype ( 1.3.6.1.4.1.12461.1.1.6
        NAME 'domainName'
        DESC 'domain name'
        EQUALITY caseIgnoreIA5Match
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
        SINGLE-VALUE )

attributetype ( 1.3.6.1.4.1.12461.1.1.7
        NAME 'mailGroup'
        DESC 'mail group'
        EQUALITY caseExactIA5Match
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
        SINGLE-VALUE )

attributetype ( 1.3.6.1.4.1.12461.1.1.8
        NAME 'domainDirectory'
        DESC 'top directory of this domain'
        EQUALITY caseExactIA5Match
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
        SINGLE-VALUE )

objectclass ( 1.3.6.1.4.1.12461.1.2.1
        NAME 'mailAccount'
        DESC 'user object'
        SUP inetOrgPerson
     MUST ( mailDir $ homeDirectory $ mailActive $ domainName $ mailGroup )
     MAY  ( mailForward $ mailAlias ))

objectclass ( 1.3.6.1.4.1.12461.1.2.2
        NAME 'adminAccount'
        DESC 'admin object'
        SUP inetOrgPerson
     MUST ( domainName $ domainDirectory $ transport $ mailGroup ))

objectclass ( 1.3.6.1.4.1.12461.1.2.3
        NAME 'superAccount'
        DESC 'sitemanager object'
        SUP inetOrgPerson
     MUST ( mailGroup ))


<ldifファイルの登録> *ほとんど中満さんの手順を踏襲しています

リスト first.ldif

#Top Tree of DataBase
dn: dc=example,dc=jp
o: root
objectClass: organization

#Top tree of virtual mail environment
dn: o=mailuser,dc=example,dc=jp
objectClass: organization
o: mailuser

#For virtual domain TLD1
dn: dc=jp,o=mailuser,dc=example,dc=jp
objectClass: organization
o: mailuser


リスト sitemanager.ldif

dn: cn=sitemanager, o=mailuser, dc=example, dc=jp
objectClass: inetOrgPerson
objectClass: superAccount
cn: sitemanager
sn: sitemanager
givenName: sitemanager
userPassword:sitemanager
mailGroup: sitemanager

リスト admin.ldif

dn: dc=kitchen-tomato, dc=jp, o=mailuser, dc=example, dc=jp
objectClass: organization
o: mailuser

dn: cn=admin, dc=kitchen-tomato, dc=jp, o=mailuser, dc=example, dc=jp
objectClass: adminAccount
objectClass: inetOrgPerson
cn: admin
sn: admin
givenName: admin
userPassword:admin
domainName: example.jp
domainDirectory: /home/mailuser/example.jp
transport: virtual
mailGroup: admin

リスト test.ldif

dn: cn=test, dc=example,dc=jp, o=mailuser, dc=example,dc=jp
objectClass: top
objectClass: mailAccount
objectClass: inetOrgPerson
cn: test
sn: TEST Account
givenName: TEST
userPassword:test
homeDirectory: /home/mailuser/example.jp/test
mail: test@example.jp
mailAlias: test@example.jp
mailDir: /home/mailuser/example.jp/test/Maildir/
mailActive: TRUE
domainName: example.jp
mailForward:test@example.co.jp
mailGroup: user

・Cyrus SASLをLDAPで利用する

#saslauthd -a ldap

このコマンドを実行すると、「LDAPは使えません」という旨のメッセージが表示し
ましたので、
cyrus-sasl-2.1.10-4.src.rpm をダウンロードにパッケージを修正して再構成しま
した。

#vi cyrus-sasl.spec

     pushd cyrus-sasl-%{cs1_version}
     %configure \
        --enable-static --with-pic --enable-shared \
        --with-plugindir=%{_plugindir} \
        --disable-krb4 \
        --enable-gssapi=/usr/kerberos \
        --with-rc4 \
        --with-ldap \                         ← これ追加
        --with-dblib=gdbm \
        --enable-anon \
        --enable-cram \
        --enable-digest \
        --enable-plain \
        --enable-login
     make sasldir=%{_plugindir}
     popd

     pushd cyrus-sasl-%{version}
     LIBS=-lcrypt; export LIBS
     %configure \
        --enable-static --with-pic --enable-shared --disable-java \
        --with-plugindir=%{_plugindir2} \
        --disable-krb4 \
        --enable-gssapi=/usr/kerberos \
        --with-rc4 \
        --with-ldap \                         ← これ追加
        --with-dblib=berkeley \
        --with-saslauthd=/var/run/saslauthd --without-pwcheck \
        --enable-anon \
        --enable-cram \
        --enable-digest \
        --enable-plain \
        --enable-login
        # --enable-auth-sasldb -- EXPERIMENTAL

<jail環境で動いているPOSTFIXが、cyrus SASL を参照できるようにする>

#vi /etc/init.d/saslauthd

==============================================
# Source our configuration file for these variables.
#SOCKET=/var/run/saslauthd/mux
                    ← コメント
SOCKET="/var/spool/postfix/var/state/saslauthd/mux"               ← 追加
#MECH=shadow
                                              ← コメント
MECH=ldap
                                                   ← 追加
FLAGS=

Follow-Ups
[postfix-jp:03196] Re: SMTPか らの応答が帰ってきません (POSTFIX+ LDAP + Cyrus SASL), Hideo NAKAMITSU
[postfix-jp:03202] Re: SMTPか らの応答が帰ってきません (POSTFIX+ LDAP + Cyrus SASL), ARAKI Yasuhiro

[検索ページ] [Postfix-JP ML Home]