作者 主題: Postfix + Ldap + Active Directory整合  (閱讀 69353 次)

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

chiehleo

  • 可愛的小學生
  • *
  • 文章數: 14
    • 檢視個人資料
Postfix + Ldap + Active Directory整合
« 回覆 #30 於: 2005-05-14 19:10 »
說明一下安裝方式(Fedora OS)
1.openldap的tar 安裝,參考這篇文章zoob學長的說明
2.用apt安裝postfix
3.postfix 的 main,也是參考zoob學長的

kuosu

  • 可愛的小學生
  • *
  • 文章數: 5
    • 檢視個人資料
Re: Postfix + Ldap + Active Directory整合
« 回覆 #31 於: 2005-06-10 09:20 »
DEAR zoob兄:

不知如果以這樣的架構,可否做到,當Exchange Server出問題時,以Postfix 來當
Mail Server,並且User以現有的Outlook收發信件,(當然,認證的部分由LDAP與AD溝通)client User再以Pop3以原帳號去收發??
另,有最大的一個困難點是,如果當作臨時備援的主機,信件都進了Postfix後,
修復Exchange 後,沒連上Postfix收信的USER怎麼辦??
有無同學有這樣的需求???要做exchange的 備援??在不買其他軟體與新購主機的狀況下~


引述: "zoob"
Postfix + Ldap + Active Directory整合

作者: zoob (vincent@myunix.idv.tw)

版權聲明:可以任意轉載,轉載時請務必標明原始出處和作者資訊

[前言]

首先先講我的Mail架構(圖1),由於公司要求對內、對外傳送郵件要快速,故在公司的mail System採用了Postfix + Exchange 2000 Server
但這架構有一缺點,就是在Inbound Mail的流程中,Postfix無法辨識在Exchange 2000 Server上有哪些E-mail address是有效並且存在的,故只要是在relay_domains裡面設定的domain list均會被一五一十的傳送至Exchange 2000 Server,直到Exchange 2000 Server檢查無此信箱時,才會將信件退回
如此一來,就會浪費了許多頻寬,為了將頻寬做有效應用,所以將在Postfix那一端使用LDAP來向LDAP Server(DC)來做LDAP查詢,查詢哪些e-mail address是有效的,無效的e-mail address就直接在postfix的header check中就做filter了。可大量的減少internet bandwidth 和 mail system loading,但會增加LDAP Server的loading(反正DC平常閒閒沒事做,沒關係  ^_^ )

在實做此文章之前,請務必要先瞭解LDAP的功能及流程,免得遭遇許多問題困擾....

    outbound mail

    Client  ---------> Exchange ---------> Postfix ---------> Internet


    Inbound mail

    Internet ---------> Postfix ---------> Exchange ---------> Client

圖1


環境
Postfix(postfix.myunix.idv.tw)
OS:Redhat 8.0
OpenLdap 2.1.12 (20030107)
Postfix 1.1.11-20020918

Exchange(exchange.myunix.idv.tw)
OS:Win2K + Ex2K

LDAP:Domain Controller(dc.myunix.idv.tw)
OS:Win2k



1、首先先下載OpenLDAP( http://www.openldap.org )和Postfix( http://www.postfix.org ) tarball file(這裡我是使用openldap-stable-20030107.tgz + postfix-1.1.11-20020918.tar.gz

2、安裝OpenLDAP Client(依下列步驟安裝)
代碼: [選擇]
./configure  --without-kerberos --without-cyrus-sasl --without-tls \
        --without-threads --disable-slapd --disable-slurpd \
        --disable-debug --disable-shared


代碼: [選擇]
make depend

代碼: [選擇]
make

代碼: [選擇]
make test

代碼: [選擇]
make install

3、安裝Postfix with LDAP support(本文章只敘述如何upgrade postfix,如果你是Install new postfix,請再參考其他教學文章)

代碼: [選擇]
make tidy
(make tidy是指你之前已經有安裝過postfix,但未安裝LDAP function時才需要下此command)

代碼: [選擇]
make makefiles CCARGS="-I/usr/local/include -DHAS_LDAP" \
        AUXLIBS="-L/usr/local/lib -lldap -L/usr/local/lib -llber"

(請將/usr/local部份依你OpenLDAP安裝位置做修正)

代碼: [選擇]
make

代碼: [選擇]
make upgrade


4、測試ldap是否正常
(1)首先先修改/usr/local/etc/openldap/ldap.conf,增加下列敘述
代碼: [選擇]
BASE    DC=myunix,DC=idv.DC=tw
URI     ldap://dc.myunix.idv.tw


(2)測試與Ldap Server(DC)之間連線是否正常
代碼: [選擇]
/usr/local/bin/ldapsearch -x -D "cn=administrator,cn=Users,dc=myunix,dc=idv,dc=tw" -W "proxyAddresses=smtp:vincent@myunix.idv.tw"

Enter LDAP Password:

輸入Administrator的Password後,正確的出現你所要查詢的Infomation的話,就代表你和Ldap Server(DC)之間連線正常。

5、修改/etc/main.cf

代碼: [選擇]
mydestination = myunix.idv.tw
#輸入Exchange 2000 Server Domain

#relay_domains = xxx.xxx.xxx.xxx  
#將relay_domains comment

local_recipient_maps = ldap:ldapsource

local_transport = error:local mail delivery is desabled

transport_maps = hash:/etc/postfix/transport

ldapsource_server_host = dc.myunix.idv.tw
ldapsource_server_port = 389
ldapsource_search_base = dc=myunix,dc=idv,dc=tw
ldapsource_ldap_scope = sub

ldapsource_bind = yes
ldapsource_bind_dn = cn=Administrator,cn=Users,dc=myunix,dc=idv,dc=tw
ldapsource_bind_pw = 123
#我沒有將Win2K AD變更為anonymous query,所以我就使用了bind的功能了

ldapsource_query_filter = (proxyAddresses=smtp:%s)
ldapsource_result_attribute = proxyAddresses
#填入查詢條件。%s代表rcpt to:後面的e-mail address

ldapsource_version = 3

#如果你的Win AD為2000者請使用ldapsource_version = 2
#如果你的Win AD為2003者請使用ldapsource_version = 3



6、設定transport檔,將Exchange 2000 Server Domain的信轉向Exchange 2000 Server(exchange.myunix.idv.tw)
代碼: [選擇]
myunix.idv.tw        smtp:exchange.myunix.idv.tw

代碼: [選擇]
postmap transport
(產生transport.db)

7、postfix reload,telnet localhost 25看看E-mail是否有被解析正常,步驟如下:

    telnet localhost 25
    220 postfix.myunix.idv.tw ESMTP
    helo myunix.idv.tw
    250 postfix.myunix.idv.tw


    rcpt to:vincent@myunix.idv.tw
    250 Ok
解析已存在的e-mail address,出現Ok的話,進行下一步

    rcpt to:test@myunix.idv.tw
    450 <test@myunix.idv.tw>: User unknown

測試一個未存在的e-mail address,如果出現User unknow的話
就代表你的Postfix + Ldap query運作正常,恭禧你!!!設定成功了!!!

peteryang

  • 憂鬱的高中生
  • ***
  • 文章數: 105
    • 檢視個人資料
Postfix + Ldap + Active Directory整合
« 回覆 #32 於: 2005-10-06 11:04 »
zoob兄
小弟今天再試了一次AD + LDAP,參考了您的做法,但是還是沒有成功,這次出現找不到LDAP Server,是那裡有問題
代碼: [選擇]
[root@pdcnat etc]# ldapsearch -x -D "cn=administrator,cn=Users,dc=ADSERV,dc=pdc,dc=com" -W "proxyAddress=smtp:administrator@pdc.com"
Enter LDAP Password:
ldap_bind: Can't contact LDAP server (-1)

煩請不吝指教,謝謝

小弟是用FC4

jonathan_lwo

  • 活潑的大學生
  • ***
  • 文章數: 323
    • 檢視個人資料
Postfix + Ldap + Active Directory整合
« 回覆 #33 於: 2007-08-06 16:17 »
請問大大
剛剛做練習,裝openldap client 後,

第二步:
"Postfix with LDAP support" 的程式在那下載?
文件中好像都沒說呢?


還有不用Exchange 行嗎?Postfix 用2003 AD帳號驗證,如下:
outbound mail
Client ---------> Postfix ---------> Internet

Inbound mail
Internet ---------> Postfix  ---------> Client

acty

  • 鑽研的研究生
  • *****
  • 文章數: 694
    • 檢視個人資料
    • UNIX 管理者的學習紀錄
回覆: Postfix + Ldap + Active Directory整合
« 回覆 #34 於: 2008-02-24 19:58 »
其實應該不用每次透過 LDAP 檢查有沒有收件者
透過程式每天將 AD 上的使用者清單寫到 recipients 即可

以下為 MailScanner  Wiki 的範例
http://wiki.mailscanner.info/doku.php?id=documentation:configuration:mta:postfix:how_to:reject_non_existent_users

程式下載
http://www-personal.umich.edu/~malth/gaptuning/postfix/
« 上次編輯: 2008-02-24 20:08 由 acty »
~~破窗計畫來囉~~~

學習與挑戰是我的樂趣... HIT!!
我知道的不多  但歡迎大家以起來討論

UNIX 管理者的學習紀錄 - http://actychen.wordpress.com