[Howto]Postfix+Cyrus-SASL+Cyrus-IMAP+MySQL for FreeBS4.

发表于:2007-06-09来源:作者:点击数: 标签:
[Howto]Postfix+Cyrus-SASL+Cyrus-IMAP+ MySQL forFreeBSD4.x/5.x 呼,終於到一個段落了,花了近一個星期的時間編輯這份Howto,但在做最後測試的同時發現ports裡頭的Cyrus-IMAP版本有更新了,且多了一些新名詞及新功能不知什東西來著@@,也不知新版本如何跟M

[Howto] Postfix + Cyrus-SASL + Cyrus-IMAP + MySQL for FreeBSD 4.x/5.x

呼,終於到一個段落了,花了近一個星期的時間編輯這份 Howto,但在做最後測試的同時發現 ports 裡頭的 Cyrus-IMAP 版本有更新了,且多了一些新名詞及新功能不知什東西來著 @@,也不知新版本如何跟 MySQL 連接,看來又是一場耗劫,所以小弟決定這篇 Howto 就先到此告個段落,待小弟測試完新功能時再行補上,如有任何意見及說明補充,請不吝惜指教,謝謝

*********************************************************************************
作者:獨蠍 (LanceLoTest) 
Mail: LanceLoTest@hotmail.com
Msn: LanceLoTest@hotmail.com

版權宣告:
這是篇共享的文件,任何人都歡迎轉載,請 保持文章的完整性 以及 出處連結,
好讓後來讀這篇 Howto 的人可以尋線找到這篇 Howto 的最新版本,僅供學術用途,謝謝。

這份 Howto 的最新版本,可以由此查閱 (不定期更新)
繁體 Howto: [URL=http://doc.uniorg.net/postfix/index.php]http://doc.uniorg.net/postfix/index.php [/URL] 
簡體 Howto: [URL=http://doc.uniorg.net/postfix/index1.php]http://doc.uniorg.net/postfix/index1.php [/URL] 
UO-小築: [URL=http://www.uniorg.net/viewthread.php?tid=14062]http://www.uniorg.net/viewthread.php?tid=14062[/URL]
最後更新日期:August 08, 2004
*********************************************************************************

由於篇幅蠻長的,為了要讓這份 Howto 較容易閱讀,所以把它製作成 html 格式
此 Howto 的最新版本在
繁體Howto: [URL=http://doc.uniorg.net/postfix/index.php]http://doc.uniorg.net/postfix/index.php [/URL] 
簡體Howto: [URL=http://doc.uniorg.net/postfix/index1.php]http://doc.uniorg.net/postfix/index1.php [/URL] 
UO-小築: [URL=http://www.uniorg.net/viewthread.php?tid=14062]http://www.uniorg.net/viewthread.php?tid=14062[/URL]

Note:顏色與標記
紅色:要下的指令
綠色:有兩種可能,一為 系統 output 的訊息 ,二為 要增加至檔案的內容 
黃色:不確定是否可省下的步驟,可以先照做無妨
##:雙井號為註解

 cqliuke 回复于:2004-08-08 21:36:47
感谢您详尽的资料,我也一直想找这样freebsd下用ports安装的资料,也试过n次,没有成功。有几个问题请教:
1)按照你的文章开始操作,是不是先要完成apache,mod_php的安装才行?
2)就是按照你的步骤完成安装,有的时候粘贴过来根本就不能用,还得查资料做。就算非常顺利的情况下也要好几天,有否考虑在freebsd 4.10下打包做成一个文件,一次性搞定,让后来者省不好的时间。

 LanceLoTest 回复于:2004-08-08 22:16:45
[quote:e1e7f40da7="cqliuke"]感谢您详尽的资料,我也一直想找这样freebsd下用ports安装的资料,也试过n次,没有成功。有几个问题请教:
1)按照你的文章开始操作,是不是先要完成apache,mod_php的安装才行?
2)就是按照你的步骤完成安装,有?.........[/quote:e1e7f40da7]

1. 不一定要裝 apache 和 php,howto 中有提到結合 php 是為了方便如 php論壇程式,使用者註冊時可以一併提供信箱給使用者,也就是,關於這個部分可以略過。
2. 按照步驟來做不保持百分之百可以完成,但應該可接近完成,在 FreeBSD 4.x/5.x 上交換測試難免會有疏忽與遺漏的部分,如有問題可以提出來看看,看在坐的眾前輩們or 小弟有無遇過類似問題的經驗,FreeBSD 4.x/5.x 的設定上,只有少許的不同,有差異性的地方,文中都會有記載,所以便把 4.x 和 5.x 寫在一起囉。

祝你成功,耐心是一定要有的,小弟也是花了無數天的熬夜才摸出來這些心得的:P 加油!

 xiaohua 回复于:2004-08-09 07:31:35
楼主的东西不错哦。 :D 

大家也可以看看我写的骗子手册  :em06:  :em06:  :em06: 

http://www.dmail-x.com/doc/qmail-vpopmail.html

 zyme 回复于:2004-08-10 11:01:49
嗯,我做的也是这个。不过你的文章要密码,可不可以转贴过来?

 xiaohua 回复于:2004-08-10 11:40:41
[quote:ad59ad9f4f="zyme"]嗯,我做的也是这个。不过你的文章要密码,可不可以转贴过来?[/quote:ad59ad9f4f]

 :shock:  :shock:

 LanceLoTest 回复于:2004-08-10 18:07:35
[quote:5648d0859e="zyme"]嗯,我做的也是这个。不过你的文章要密码,可不可以转贴过来?[/quote:5648d0859e]


[quote:5648d0859e]
由於篇幅蠻長的,為了要讓這份 Howto 較容易閱讀,所以把它製作成 html 格式 
此 Howto 的最新版本在 http://doc.uniorg.net/postfix/index.php 
[/quote:5648d0859e]

原始文章有提到,共享文件歡迎轉載,直接讀 http://doc.uniorg.net/postfix/index.php 有 html 版,可以得到比較好的瀏覽效果 :)

 LanceLoTest 回复于:2004-08-10 18:33:09
補上了簡體版本 http://doc.uniorg.net/postfix/index1.php 希望對各位有點幫助 ^^

 hdcola 回复于:2004-08-10 21:26:57
不错的好文,加精了。这几日我也正在为这个工作中。

 dennis2 回复于:2004-08-11 12:14:54
才玩邮件系统两个月,就能写出这等好文,厉害厉害。主要是一些很重要的概念很清晰,这一点难能可贵。

不过有一点值得商榷:cyrus-sasl2 从 2.1.15 (好像是这个版本)就可以直接支持 MySQL 了(从 2.1.18 开始直接支持 PostgreSQL),所以我认为用 PAM_MySQL 有些多余,直接用 MySQL 就行了。设置方法就是你文中“ 以下选项还用不到” 后面被注释掉的设置。

 LanceLoTest 回复于:2004-08-11 13:34:08
[quote:34e643f5ad="dennis2"]才玩邮件系统两个月,就能写出这等好文,厉害厉害。主要是一些很重要的概念很清晰,这一点难能可贵。

不过有一点值得商榷:cyrus-sasl2 从 2.1.15 (好像是这个版本)就可以直接支持 MySQL 了(从 2.1.18 开始直?.........[/quote:34e643f5ad]

恩,小弟之前也有在 FreeBSD 的 mailling-list 上聽到這消息,不過確不知道詳細情形,不知前輩是否可以找 cyrus-sasl 其官網or 其它地方 有關 cyrus-sasl 直接支援 MySQL 的資訊給小弟呢 @@? 小弟到處翻查,都沒有找到比較詳細的資訊說明,也曾試著用小弟 howto 中的 被註解掉的那段,但不能 work @@,小弟會再繼續找尋相關資料及測試,如果 cyrus-sasl 直接支援了那是最好,就不用再繞過 pam_mysql 了。另外,howto 中依然有很多地方解釋的不夠明白 (小弟本身有些概念也還不清楚),希望有前輩可以幫忙做補充說明,謝謝 ^^

 dennis2 回复于:2004-08-11 15:17:54
SQL 的设置实际上在 cyrus-sasl2 的 tar ball 里有,是 doc/options.html。我把我的设置给你:

smtpd.conf:

mech_list: plain login
pwcheck_method: auxprop
auxprop_plugin: SQL
sql_engine: pgsql
sql_hostnames: localhost
sql_user: postfix
sql_passwd: postfix
sql_database: postfix
sql_select: SELECT password FROM mailbox WHERE username = '%u@%r'

我用的是 PostgreSQL。如果是 MySQL,把上面 sql_engine 改成 mysql 就行了。

 cqliuke 回复于:2004-08-11 15:31:23
Dear dennis2,
能否把你的配置过程贴出来给大家共享,也多一种参考,谢谢!!

 LanceLoTest 回复于:2004-08-11 23:50:18
hmm,,嘗試不使用 pam_mysql ,但失敗,不知是不是在 compile 的時候有少什麼步驟,
我看別人的 ls /usr/local/lib/sasl2/ 跟我的內容不大一樣,
少了有關 libsql*,any ideas @@?

[code:1:4c5775b220]# ls /usr/local/lib/sasl2/
Sendmail.conf      libdigestmd5.so    libntlm.so    libplain.so
deactivated        libdigestmd5.so.2  libntlm.so.2  libplain.so.2
libanonymous.a     libgssapiv2.a      libotp.a      libsasldb.a
libanonymous.so    libgssapiv2.so     libotp.a_     libsasldb.so
libanonymous.so.2  libgssapiv2.so.2   libotp.so     libsasldb.so.2
libcrammd5.a       liblogin.a         libotp.so.2   libsql.so.2.BAK
libcrammd5.so      liblogin.so        libotp.so.2_  smtpd.conf
libcrammd5.so.2    liblogin.so.2      libotp.so_    smtpd.conf.BAK
libdigestmd5.a     libntlm.a          libplain.a    smtpd.conf.OK
[/code:1:4c5775b220]

 uplinux 回复于:2004-08-26 18:56:37
[quote:f7a85c68b4="LanceLoTest"][/quote:f7a85c68b4]
为什么这个地址打不开呢?

 YIWUTIAN 回复于:2004-08-26 20:40:40
我还是喜欢 postfix+ldap

 zymh_zy 回复于:2004-12-11 12:49:11
俺在执行下面步骤时:
INSERT INTO user (username,password) VALUES ('test','$1$cFT9pmty$ZyZDAy7x0/PJYRKWA8y9f/');

错误提示:error 1054: unknown column 'password' in ' field list'

原以为我建表时出错,将那个USER表DROP掉,再建一个,再执行这个命令,错误提示一样,到底那里出错啊。

 zymh_zy 回复于:2004-12-11 12:56:58
[quote:d0388164c1="zymh_zy"]俺在执行下面步骤时:
INSERT INTO user (username,password) VALUES ('test','$1$cFT9pmty$ZyZDAy7x0/PJYRKWA8y9f/');

错误提示:error 1054: unknown column 'password' in ' field list'

原以为我建表时出..........[/quote:d0388164c1]

俺 describe user  显示如下:


+----------+------------------+------+-----+----------------------------------------+----------------+
| Field    | Type             | Null | Key | Default                                | Extra          |
+----------+------------------+------+-----+----------------------------------------+----------------+
| ID       | int(10) unsigned |      | PRI | NULL                                   | auto_increment |
| username | varchar(128)     |      | UNI | ,password varchar(40) NOT NULL default |                |
| status   | tinyint(4)       |      |     | 1                                      |                |
+----------+------------------+------+-----+----------------------------------------+----------------+
3 rows in set (0.00 sec)

 zymh_zy 回复于:2004-12-11 14:17:11
[quote:0426421fa3="zymh_zy"]

俺 describe user  显示如下:


+----------+------------------+------+-----+----------------------------------------+----------------+
| Field    | Type             | Null | Key | Default       ..........[/quote:0426421fa3]

不知是不是MYSQL语法的错误,俺这样输入才行:insert into user VALUES ('cyrus','$1$TGykKCYx$4lR1zfaI1QSDxgqJ7LTE/','1');

俺查过MYSQL参考手册,原HOWTO所说的那种写法是成立,就不知为何在俺的系统过不了,俺的系统是 freebsd4.10 . MYSQL是4.0.18,是用PORTS安装的。

 zymh_zy 回复于:2004-12-12 21:37:40
[quote:15aba3ec0d="LanceLoTest"]
Note:顏色與標記
紅色:要下的指令
綠色:有兩種可能,一為 系統 output 的訊息 ,二為 要增加至檔案的內容 
黃色:不確定是否可省下的步驟,可以先照做無妨
##:雙井號為註解[/quote:15aba3ec0d]

俺想问下一下,除了HOWTO 作者外,到底有谁根据这篇文章安装配置成功一台邮件服务器?为何俺根据这HOWTO去配,会遇到这么多问题?到现在还没配成功。例如:现在问题就卡在这里:

使用 imtest 此工具来测试 Cyrus-IMAP 的认证是否有正常运作,参数 -a 后接使用者名
# imtest -m login -a test -p imap localhost
S: * OK mydomain.net Cyrus IMAP4 v2.2.8 server ready
C: C01 CAPABILITY
S: * CAPABILITY IMAP4 IMAP4rev1 ACL QUOTA LITERAL+ MAILBOX-REFERRALS NAMESPACE UIDPLUS ID NO_ATOMIC_RENAME UNSELECT CHILDREN MULTIAPPEND BINARY SORT THREAD=ORDEREDSUBJECT THREAD=REFERENCES ANNOTATEMORE IDLE STARTTLS
S: C01 OK Completed
Please enter your password: pass ##在此输入密码 
C: L01 LOGIN star {4}
S: + go ahead
C: <omitted>
S: L01 OK User logged in
Authenticated.
Security strength factor: 0
. logout ##(要登出请输入 . logout,[点 . 后面有空白])
* BYE LOGOUT received
. OK Completed
Connection closed.

每做一个动作后,请查看 log 有无什么错误讯息,用 tail 指令,只会列出最后的几行
# tail /var/log/maillog
# tail /var/log/messages

再次测试 Cyrus-IMAP,参数 -a 后接使用者名
# imtest -t "" -a test localhost
S: * OK mydomain.net Cyrus IMAP4 v2.2.8 server ready
C: C01 CAPABILITY
S: * CAPABILITY IMAP4 IMAP4rev1 ACL QUOTA LITERAL+ MAILBOX-REFERRALS NAMESPACE U
IDPLUS ID NO_ATOMIC_RENAME UNSELECT CHILDREN MULTIAPPEND BINARY SORT THREAD=ORDE
REDSUBJECT THREAD=REFERENCES ANNOTATEMORE IDLE STARTTLS
S: C01 OK Completed
C: S01 STARTTLS
S: S01 OK Begin TLS negotiation now
verify error:num=18:self signed certificate
TLS connection established: TLSv1 with cipher AES256-SHA (256/256 bits) ## TLS 安全连线已建立
C: C01 CAPABILITY
S: * CAPABILITY IMAP4 IMAP4rev1 ACL QUOTA LITERAL+ MAILBOX-REFERRALS NAMESPACE U
IDPLUS ID NO_ATOMIC_RENAME UNSELECT CHILDREN MULTIAPPEND BINARY SORT THREAD=ORDE
REDSUBJECT THREAD=REFERENCES ANNOTATEMORE IDLE AUTH=LOGIN AUTH=PLAIN SASL-IR
S: C01 OK Completed
C: A01 AUTHENTICATE LOGIN
S: + VXNlcm5hbWU6
Please enter your password: testpw ##输入你的密码
C: c3Rhcg==
S: + UGFzc3dvcmQ6
C: c3Rhcg==
S: A01 OK Suclearcase/" target="_blank" >ccess (tls protection) ##在 TLS 安全连线之下成功登入
Authenticated.
Security strength factor: 256 ##这儿应为 256
. logout ##(要登出请输入 . logout,[点 . 后面有空白])
* BYE LOGOUT received
. OK Completed
Connection closed.


在这段HOW TO 说明里,俺输入密码总说认证出错,俺问一下:这test用户的密码是不是就是一开始建那个pass,而cyrus就是pwd,是不是?为什么俺输入密码后总说不能通过认证。

 zymh_zy 回复于:2004-12-12 21:59:11
[quote:a4c7a8e66c="zymh_zy"]嬗锌瞻譣)
* BYE LOGOUT received
. OK Completed
Connection closed.


在这段HOW TO 说明里,俺输入密码总说认证出错,俺问一下:这test用户的密码是不是就是一开始建那个pass,而cyrus就是pwd,是不是?为?.........[/quote:a4c7a8e66c]

不会这么倒霉吧,直接进入:cd /usr/ports/mail/postfix 运行 make install clean 也出错,错误提示如下:

===>  Vulnerability check disabled



Unknown option(s): subwin(dialog,16,73,4,18) failed, maybe wrong dims
*** Error code 1

Stop in /usr/ports/mail/postfix.

 zymh_zy 回复于:2004-12-12 22:07:09
[quote:6d03435b9d="zymh_zy"]嬗锌瞻譣)
* BYE LOGOUT received
. OK Completed
Connection closed.


在这段HOW TO 说明里,俺输入密码总说认证出错,俺问一下:这test用户的密码是不是就是一开始建那个pass,而cyrus就是pwd,是不是?为?.........[/quote:6d03435b9d]

不会这么倒霉吧,直接进入:cd /usr/ports/mail/postfix 运行 make install clean 也出错,错误提示如下:

===>  Vulnerability check disabled



Unknown option(s): subwin(dialog,16,73,4,18) failed, maybe wrong dims
*** Error code 1

Stop in /usr/ports/mail/postfix.

 zymh_zy 回复于:2004-12-12 22:11:16
[quote:0c57ba3c53="zymh_zy"]

不会这么倒霉吧,直接进入:cd /usr/ports/mail/postfix 运行 make install clean 也出错,错误提示如下:

===>  Vulnerability check disabled



Unknown option(s): subwin(dialog,16,73,4,18) fail..........[/quote:0c57ba3c53]


相隔一个小时重复发一模一样的贴,并且时间是22。12分,现在俺的电脑时间:22。10分啊,是俺的错还是论坛的错误?

 zymh_zy 回复于:2004-12-12 23:19:47
[quote:fb165079e3="zymh_zy"]


相隔一个小时重复发一模一样的贴,并且时间是22。12分,现在俺的电脑时间:22。10分啊,是俺的错还是论坛的错误?[/quote:fb165079e3]


决定放弃用这份HOWTO 来建邮件服务器,因为遇到许多跟HOWTO所说不相符的问题。因而放弃。

原文转自:http://www.ltesting.net