| 導購 | 订阅 | 在线投稿
分享
 
 
 

postfix郵件系統的調試

來源:互聯網  2008-05-31 00:05:14  評論

一般postfix系統基本都是postfix+mysql+sasl+courier-imap+maildrop組成的,其他基本上是加上webmail,mysql的web管理,防垃圾spamassassin,防病毒clamav+amasivd-new等

具體設置可以參照wxy的文章,非常感謝wxy的共享精神。

看到很多fans在配置的時候出現很多問題,卻不知道如何調試,攥寫本文的目的是爲了如何調試postfix系統,作爲wxy文章的補充。

先說幾個基本的概念:

1、postfix的smtp認證是通過sasl library讀取mysql進行認證的,注意是sasl library不是saslauthd,所以通過testsaslauthd並不能正確地調試。

2、courier-imap,courier-maildrop是通過courier-authlib來讀取mysql的信息,所以pop3服務,imap服務,maildrop的投遞都是通過courier-authlib.

3、新版本的sasl2在認證的時候會把用戶名abc@test.com,@後面的當成realm來處理,所以新版本的sasl2通過pam_mysql認證的話將不能支持多域,所以基本都用sasl2的mysql擴展。具體的例子就是wxy的文章postfix_I是通過pam_mysql的,postfix_II是用的sasl2的mysql擴展。

調試postfix系統的時候最好分模塊調試,sasl2 library和mysql進行調試,courier-authlib和mysql進行調試,這樣就可以把故障點縮小。

1、courier-aulib和mysql的調試很簡單,courier-authlib提供了測試程序authtest

# authtest

Usage: authtest [-s service] userid [ password [ newpassword ] ]

# authtest -s smtp xxx@test.com 123456

Authentication succeeded.

Authenticated: xxx@test.com (uid 1001, gid 1001)

Home Directory: /var/mail/

Maildir: test.com/xxx/Maildir/

Quota: (none)

Encrypted Password: (none)

Cleartext Password: 123456

Options: (none)

出現類似這樣的提示表示courier-authlib已經成功了,如不成功,仔細檢查authmysqlrc,authdaemonrc文件和mysql的socket,包括文件的權限。特別要注意authmysqlrc,authdaemonrc裏不能有空格,只能是tab。

2、sasl2 library的調試

sasl2提供了2個測試程序sasl2-sample-server、sasl2-sample-client,一個服務程序,一個客戶程序,如果是rpm安裝的,在cyrus-sasl-devel包中,如果是編譯安裝的,在sample目錄裏。postfix smtp認證是也是通過類似的辦法,現啓動一個sasl_server,然後在啓動一個sasl_client連接sasl_server進行認證。

測試程序sasl2-sample-server、sasl2-sample-client調用的是/usr/lib/sasl2/sample.conf,postfix調用的是smtpd.conf

調試的時候拷貝smtpd.conf成sample.conf

然後運行服務程序sasl2-sample-server

# sasl2-sample-server -s smtpd

trying 10, 1, 6

trying 2, 1, 6

bind: Address already in use

運行客戶程序sasl2-sample-client

# sasl2-sample-client -s smtpd -m LOGIN localhost

receiving capability list... recv: {11}

PLAIN LOGIN

PLAIN LOGIN

send: {5}

LOGIN

send: {1}

N

recv: {9}

Username:

please enter an authentication id: abc@test.com

Password:

send: {16}

abc@test.com

recv: {9}

Password:

send: {6}

123456

successful authentication

closing connection

服務端程序應爲

accepted new connection

send: {11}

PLAIN LOGIN

recv: {5}

LOGIN

recv: {1}

N

send: {9}

Username:

recv: {16}

abc@test.com

send: {9}

Password:

recv: {6}

123456

successful authentication 'abc@test.com'

closing connection

成功之後把sample.conf 拷貝爲smtpd.conf,不成功就檢查sasl2的配置。postfix和sasl2的調試

網上還有個腳本叫saslfinger,可以下載下來查查,當然配置不一樣出來的結果也不一樣,可以作爲參考。postfix的設置比較多,一定要心細。

如果courier-authlib通過了的話,courier-imap基本不會出現問題,調試可以用telnet 110端口,如果出現問題的原因大部分在maildir目錄,檢查目錄存在,目錄權限等。

linux系統大部分的出錯提示都可以在log中看到,仔細分析一下log找出錯誤的原因。

一般postfix系統基本都是postfix+mysql+sasl+courier-imap+maildrop組成的,其他基本上是加上webmail,mysql的web管理,防垃圾spamassassin,防病毒clamav+amasivd-new等   具體設置可以參照wxy的文章,非常感謝wxy的共享精神。   看到很多fans在配置的時候出現很多問題,卻不知道如何調試,攥寫本文的目的是爲了如何調試postfix系統,作爲wxy文章的補充。   先說幾個基本的概念:   1、postfix的smtp認證是通過sasl library讀取mysql進行認證的,注意是sasl library不是saslauthd,所以通過testsaslauthd並不能正確地調試。   2、courier-imap,courier-maildrop是通過courier-authlib來讀取mysql的信息,所以pop3服務,imap服務,maildrop的投遞都是通過courier-authlib.   3、新版本的sasl2在認證的時候會把用戶名abc@test.com,@後面的當成realm來處理,所以新版本的sasl2通過pam_mysql認證的話將不能支持多域,所以基本都用sasl2的mysql擴展。具體的例子就是wxy的文章postfix_I是通過pam_mysql的,postfix_II是用的sasl2的mysql擴展。   調試postfix系統的時候最好分模塊調試,sasl2 library和mysql進行調試,courier-authlib和mysql進行調試,這樣就可以把故障點縮小。   1、courier-aulib和mysql的調試很簡單,courier-authlib提供了測試程序authtest   # authtest   Usage: authtest [-s service] userid [ password [ newpassword ] ]   # authtest -s smtp xxx@test.com 123456   Authentication succeeded.   Authenticated: xxx@test.com (uid 1001, gid 1001)   Home Directory: /var/mail/   Maildir: test.com/xxx/Maildir/   Quota: (none)   Encrypted Password: (none)   Cleartext Password: 123456   Options: (none)   出現類似這樣的提示表示courier-authlib已經成功了,如不成功,仔細檢查authmysqlrc,authdaemonrc文件和mysql的socket,包括文件的權限。特別要注意authmysqlrc,authdaemonrc裏不能有空格,只能是tab。   2、sasl2 library的調試   sasl2提供了2個測試程序sasl2-sample-server、sasl2-sample-client,一個服務程序,一個客戶程序,如果是rpm安裝的,在cyrus-sasl-devel包中,如果是編譯安裝的,在sample目錄裏。postfix smtp認證是也是通過類似的辦法,現啓動一個sasl_server,然後在啓動一個sasl_client連接sasl_server進行認證。   測試程序sasl2-sample-server、sasl2-sample-client調用的是/usr/lib/sasl2/sample.conf,postfix調用的是smtpd.conf   調試的時候拷貝smtpd.conf成sample.conf   然後運行服務程序sasl2-sample-server   # sasl2-sample-server -s smtpd   trying 10, 1, 6   trying 2, 1, 6   bind: Address already in use   運行客戶程序sasl2-sample-client   # sasl2-sample-client -s smtpd -m LOGIN localhost   receiving capability list... recv: {11}   PLAIN LOGIN   PLAIN LOGIN   send: {5}   LOGIN   send: {1}   N   recv: {9}   Username:   please enter an authentication id: abc@test.com   Password:   send: {16}   abc@test.com   recv: {9}   Password:   send: {6}   123456   successful authentication   closing connection   服務端程序應爲   accepted new connection   send: {11}   PLAIN LOGIN   recv: {5}   LOGIN   recv: {1}   N   send: {9}   Username:   recv: {16}   abc@test.com   send: {9}   Password:   recv: {6}   123456   successful authentication 'abc@test.com'   closing connection   成功之後把sample.conf 拷貝爲smtpd.conf,不成功就檢查sasl2的配置。  postfix和sasl2的調試   網上還有個腳本叫saslfinger,可以下載下來查查,當然配置不一樣出來的結果也不一樣,可以作爲參考。postfix的設置比較多,一定要心細。   如果courier-authlib通過了的話,courier-imap基本不會出現問題,調試可以用telnet 110端口,如果出現問題的原因大部分在maildir目錄,檢查目錄存在,目錄權限等。   linux系統大部分的出錯提示都可以在log中看到,仔細分析一下log找出錯誤的原因。
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有