作者 主題: about sendmail & Lotus Domino different LDIF problem?  (閱讀 6605 次)

0 會員 與 1 訪客 正在閱讀本文。

codex

  • 懷疑的國中生
  • **
  • 文章數: 60
    • 檢視個人資料
Hi all,

小弟目前打算使用sendmail 來吃Domino上面的ldap帳號;

用ldapsearch -h <ldap_serveri_ip>  -x -b 'cn=codex.chen, o=example.com' '(objectClass=*)'

得出的結果如下:

dn: CN=codex.chen,O=example.com
cn: codex.chen
mail: codex.chen@example.com
objectclass: top
objectclass: person
...
maildomain: example.com
mailserver: CN=mailsrv1,O=example.com
mailfile: mail\1234

但是在sendmail soruce cf/README
裏面有提到:

dn: uid=codex,o=example.com, c=US
objectClass: inetLocalMailRecipient
mailLocalAddress: codex@example.com
mailHost: mailsrv1.example.com

要能從ldap server得到類似這樣的ldif才有辦法
經由LDAP routing送到mailsrv1.example.com這部notes上

我想去修改Domino上面的schema應該是不可能的;
那該如何修改sendmail.cf使它能看懂mailserver
而不是mailHost呢?

是不是schema裏面沒有inetLocalMailRecipient這個
所以sendmail才沒辦法parse 這個ldif,
於是抓不出mailHost/mailserver這個欄位呢?

thanks and with regards,

                                                              Codex

duncanlo

  • SA 苦力組
  • 俺是博士!
  • *****
  • 文章數: 7311
    • 檢視個人資料
re: about sendmail & Lotus Domino different LDIF problem?
« 回覆 #1 於: 2003-04-25 00:22 »
好像可以設alias,
不過我還沒研究到那邊...

天線

  • 榮譽博士
  • 憂鬱的高中生
  • ***
  • 文章數: 155
    • 檢視個人資料
re: about sendmail & Lotus Domino different LDIF problem?
« 回覆 #2 於: 2003-04-27 21:22 »
codex兄...

前幾天答應幫您在postfix上測試,因為有些事要忙,所以可能要黃牛了

抱歉

我大概找了一下sendmail 的 LDAP ROUTING 這篇文章
上面提到

FEATURE(`ldap_routing', <mailHost>, <mailRoutingAddress>, <bounce>, <detail>)

如果直接修改 mailHost ---->>mailserver,不知可否行的通
我猜是可以

那就麻煩您自己動手囉

codex

  • 懷疑的國中生
  • **
  • 文章數: 60
    • 檢視個人資料
about ldap routing between Domino R5 & sendmail
« 回覆 #3 於: 2003-04-28 10:05 »
Hi all

             自問自答.
             再次經由老外的確認, 有人說在sendmail.org的link有相關資料;
不信邪再仔細找一次, 終於找到:

http://www.sendmail.org/~gshapiro/8.10.Training/

裏面有關LDAP的很有用.

目前我的設定如下: (with host.mc)

OSTYPE(linux)dnl
define(confLDAP_DEFAULT_SPEC, -h <your LDAP server IP> -d o=Domain1 -b o=Domain1)dnl
FEATURE(ldap_routing)dnl
FEATURE(`ldap_routing', ldap -1 -T<TMPF> -v mailserver -k (&(objectclass=top)(mail=$0),  ldap -1 -T<TMPF> -v mail -k (&(objectclass=top)(mail=%0)), passthru)dnl
LDAPROUTE_DOMAIN(test.com.tw)dnl
DOMAIN(generic)dnl
MAILER(local)dnl
MAILER(smtp)dnl

上述有關於LDAP server query部份各家可能有差異, 請自行調整
這樣的mc file是可以產生一個sendmail.cf, 可以去:
根據某個email address去找到該帳號在那部notes server上.

可惜, 這樣的config, 抓出來的mailserver/mailHost
是長這樣的:

$@ CN=notes1,O=Domain1
而不是一般的
$@ notes1

所以無法直接relay :(

請問有那位熟sendmail.cf 的ruleset rewriting的呀?
現在我要把notes1這個字從CN=notes1, O=Domain1裏面抓出來...

thanks and with regards,

btw, 天線兄, 在此先感謝您的鼎力幫忙. :)
                                           

                                           Codex bows

codex

  • 懷疑的國中生
  • **
  • 文章數: 60
    • 檢視個人資料
Re: about ldap routing between Domino R5 & sendmail
« 回覆 #4 於: 2003-04-30 09:50 »
引述: "codex"
Hi all

             自問自答.
             再次經由老外的確認, 有人說在sendmail.org的link有相關資料;
不信邪再仔細找一次, 終於找到:

http://www.sendmail.org/~gshapiro/8.10.Training/

裏面有關LDAP的很有用.

目前我的設定如下: (with host.mc)

OSTYPE(linux)dnl
define(confLDAP_DEFAULT_SPEC, -h <your LDAP server IP> -d o=Domain1 -b o=Domain1)dnl
FEATURE(ldap_routing)dnl
FEATURE(`ldap_routing', ldap -1 -T<TMPF> -v mailserver -k (&(objectclass=top)(mail=$0),  ldap -1 -T<TMPF> -v mail -k (&(objectclass=top)(mail=%0)), passthru)dnl
LDAPROUTE_DOMAIN(test.com.tw)dnl
DOMAIN(generic)dnl
MAILER(local)dnl
MAILER(smtp)dnl

上述有關於LDAP server query部份各家可能有差異, 請自行調整
這樣的mc file是可以產生一個sendmail.cf, 可以去:
根據某個email address去找到該帳號在那部notes server上.

可惜, 這樣的config, 抓出來的mailserver/mailHost
是長這樣的:

$@ CN=notes1,O=Domain1
而不是一般的
$@ notes1

所以無法直接relay :(

請問有那位熟sendmail.cf 的ruleset rewriting的呀?
現在我要把notes1這個字從CN=notes1, O=Domain1裏面抓出來...


再自問自答一下:

經過許多天的測試(try & error :( )

如果貴單位的LDAP mailserver該attribute
如下:
mailserver : host1
(or mailHost)

那不必做任何更動;

如果是像敝單位一樣:
mailserver: CN=host1 , O=Domain

這時, 在configure好sendmail.cf之後,
edit sendmail.cf , 找到:

#LDAPExpand ruleset
SLDAPExpand
# do the LDAP lookups

這部份,
在該rule底下加一行:

R< $* > <$+ = $+, $+ = $+ > < $*> <$*>         $# relay $@ $3 $: <$6>

$#前是<tab> space

所以, 看起來會是:

SLDAPExpand
# do the LDAP lookups
R<$+><$+>               $: <$(ldapmra $2 $: $)> <$(ldapmh $2 $: $)> <$1> <$2>
R< $* > <$+ = $+, $+ = $+ > < $*> <$*>          $# relay $@ $3 $: <$6>

這樣的ruleset會把CN=host1,O=Domain裏的host1
取出來當做relay host

furthermore,
如果該ldap user裏的mailserver是noteserver1, 但是要由smtp1收,
可改為:

R< $* > <$+ = noteserver1, $+ = $+ > < $*> <$*>     $# relay $@ smtp1 $: <$5>

其實小弟知道自己這樣改的ruleset蠻拙的,
所以也希望有需求的各位網友, 可以幫忙多測試看看

with regards,

天線

  • 榮譽博士
  • 憂鬱的高中生
  • ***
  • 文章數: 155
    • 檢視個人資料
re: about sendmail & Lotus Domino different LDIF problem?
« 回覆 #5 於: 2003-05-02 20:19 »
哈....老兄成功了喔

Domino上面的ldap 會不會很吃力

不過能裝domino的機器應該都蠻夠power

codex

  • 懷疑的國中生
  • **
  • 文章數: 60
    • 檢視個人資料
about Domino LDAP & sendmail
« 回覆 #6 於: 2003-05-06 16:47 »
引述: "天線"
哈....老兄成功了喔

Domino上面的ldap 會不會很吃力

不過能裝domino的機器應該都蠻夠power


謝謝前輩的鼓勵,
小弟覺得Domino LDAP server應該還好(至少performance &
integration 都比M$ AD容易多啦)
敝公司這邊用的是DELL PE4400 1G RAM 在跑LDAP & Notes
也不知道是不是Server 不夠力的問題
(以前在AMT不會呀?)

另外,
補充上次的rule sets

如果access map & ldap routing一起用,
然後又用access map 來擋SPAM,
這時候"某些"email addresses 可以通過access map 的filter而造成災難

怎麼說呢?

因為, 經過ldap routing這個ruleset之後
如果是一個不存在的email address,
(我們把全公司的email address都寫在/etc/mail/access裏面)
通過ldap routing這個機制, 但又不屬於公司內部的一個帳號,
如此它只會通過ldap routing 這個ruleset,
而不會再跑過access 相關的rulesets
這樣就會透過sendmail 送了一堆不存在的address email
到Notes servers上, 如此會增加Notes server的loading

總結, ldap routing + sendmail
要再改下列幾個部份:

# delimiter (operator) characters (old $o macro)
# modified by Codex
O OperatorChars=.,:%@!^/[]+=
# 多出 , =

找到LDAPExpand

SLDAPExpand
# do the LDAP lookups
R<$+><$+>               $: <$(ldapmra $2 $: $)> <$(ldapmh $2 $: $)> <$1> <$2>
# dispatch rules by Codex
R< $* > <$+ = $+, $+ = $+ > < $*> <$*>         $# relay $@ $3 $: <$6>
R< $* > <$+ = notes1, $+ = $+ > < $*> <$*>     $# relay $@ smtp1 $: <$5>
R< $* > <$+ = notes2, $+ = $+ > < $*> <$*>     $# relay $@ smtp2 $: <$5>
R< $* > <$+ = notes3, $+ = $+ > < $*> <$*>     $# relay $@ smtp3 $: <$5>
R< $* > <$+ = notes4, $+ = $+ > < $*> <$*>     $# relay $@ smtp4 $: <$5>

再找到這個:

# if no mailRoutingAddress and no mailHost and this was a domain attempt,
# return the original address
#R< > < > <$+> <@ $+>           $@ $1
# modified by Codex
R< > < > <$+> <@ $+>            $#error $@ 5.7.1 $: "550 Access denied"

上面這個ruleset雖然不會跑過access 相關rulesets,
但是在LDAPExpand這個ruleset的最後一行改成
$#error, 就是把所有跑進ldap routing ruleset的email address,
而在LDAP server mismatch的, 全部丟一個 error message

*sigh*
這就是自己動手改ruleset的壞處,
總是會東缺一塊西缺一塊的. :(

with regards,