基于SLES9.0+cyrus-imap+sasl+postfix+postgresql+tomcat+apache2+ox的郵件系統(tǒng)
一、安裝環(huán)境
1、操作系統(tǒng)
操作系統(tǒng)采用SuSE Linux企業(yè)版9.0發(fā)行版,沒有打補(bǔ)丁,這個版本包含了除OX以外的所有程序
2、OX
Ox采用0.8.1-6版本,這個版本還不是穩(wěn)定版本,可以選用其穩(wěn)定版本
3、目錄約定
OX源文件在/oxsource下
OX安裝目錄為/data/ox
二、操作系統(tǒng)的安裝
1、要安裝的軟件包
可以使用系統(tǒng)默認(rèn)的安裝,在安裝時把以下軟件包選擇上:
apache2-2.0.46-27.23.3
apache2-prefork-2.0.49-27.24.3
apache2-jarkarta-tomcat-connectors-5.0.19-29.1
jakarta-tomcat-5.0.19-29-1
postgres-7.4.2-36.3
postgresql-server-7.4.2-36.3
postgresql-libs-7.4.2-36.3
postgresql-devel-7.4.2-36.3
postgresql-jdbc 這個包在安裝結(jié)束后要從www.下載一下7.4:http://jdbc./download/pg74.216.jdbc3.jar
IBMjava2-JRE,IBMJava2-SDK; 這個包是默認(rèn)安裝的java包,在安裝是要把它去掉,并選擇上java2-SDK-1.4.2-129.7 和 java2-jre-1.4.2-129.7這兩個包
openldap-2.2.6-37.22
openldap2-client-2.2.6-37.22
openldap2-devel-2.2.6-37.22
perl-IO-Socket-SSL-0.95-28
perl-Authen-SASL-2.06-26
perl-Convert-ASN1-0.18-66.1
perl-XML-LibXML-1.57-32
perl-libxml-perl-0.07-478
perl-CGI-Application-3.22-26
perl-ldap*-0.29-132-1
unzip-5.50-345.1
autoconf-2.59-75.1
automake-1.8.3-23.1
gcc-3.3.3-43-24
gcc-c++-3.3.3-43-24
如果要使用本地的IMAP郵局就要把以下包選擇下,如果使用外部的郵局就不用選擇:
cyrus-imapd-2.2.3-83.5
cyrus-imapd-devel-2.2.3-83.5
cyrus-sasl-2.1.18-33.1
cyrus-devel-2.1.18-33.1
sasl這時候是安裝了但安裝結(jié)束后還要進(jìn)行重新編譯,因為這個編譯過的包是不支持ldap認(rèn)證的,關(guān)于這個包的編譯和安裝會在下面的部分專門說明,但這時候要把這些包選擇上,因為會自動建立相關(guān)的用戶和設(shè)置。
如果要使用本機(jī)的DNS來進(jìn)行MX的解析就還要安裝BIND服務(wù)軟件包:
bind-9.2.3-76.9
bind-devel-9.2.3-76.9
在安裝完成后重啟系統(tǒng),然后要下載一些java包:
jaf:可以從http://java./products/javabeans/glasgow/jaf.html 下載
下載后解壓,把a(bǔ)ctivation.jar復(fù)制到/usr/lib/java/lib/
xerces-J-bin:可以從http://apache./xml/xerces-j/ 下載
下載后解壓,把xercesImpl.jar復(fù)制到/usr/lib/java/lib/
javaMail:可以從http://java./products/javamail/downloads/index.html 下載
下載后解壓,把mail.jar復(fù)制到/usr/lib/java/lib/
jdom-1.0:可以從http://www./dist/binary/ 下載
下載的這個包是要編譯才可以用的,把這個包解壓,然后在解壓后的目錄中用./build.sh進(jìn)行編譯,然后把build目錄下的jdom.jar復(fù)制到/usr/lib/java/lib/
postgres jdbc driver:可以從http://jdbc./download/pg74.216.jdbc3.jar
然后重命名為postgresql.jar后復(fù)制到/usr/lib/java/lib/
由于在編譯OX時還要用到servertapi.jar這個包,在安裝系統(tǒng)結(jié)束后可以建立一下link到/usr/lib/java/lib/下:
ln -s /usr/share/tomcat/common/lib/servlet-api.jar /usr/lib/java/lib/serveletapi5.jar
鏈接名是與下面的OX命令中的是對應(yīng)的,要變都變
2、安裝中的一些相關(guān)注意
用戶認(rèn)證問題:使用LDAP還是本地認(rèn)證?
都可以,這在安裝是用本地用戶認(rèn)證,這樣系統(tǒng)用戶是用本地用戶認(rèn)證,郵件用戶用LDAP認(rèn)證,但在安裝后要自己在LDAP中加入象cyrus這樣的用戶才可以讓cyrus-imapd也用LDAP進(jìn)行用戶認(rèn)證
3、至些操作系統(tǒng)安裝結(jié)束,最好重啟一次
三、postgresql數(shù)據(jù)庫的設(shè)置
1、編輯/etc/sysconfig/postgresql,設(shè)置為:
POSTGRES_OPTIONS=“-I"
然后運(yùn)行 :
rcpostgresql start
2、編輯/var/lib/pgsql/data/pg_hba.conf
把以下兩行前的#去除:
host all all 127.0.0.1 255.255.255.255 trust
local all all trust
并把行中包含::1的行前加上#
3、編輯/var/lib/pgsql/data/postgresql.conf
把 tcpip_socket=true 前的#去除,并設(shè)置為true
然后運(yùn)行:
rcpostgresql restart
4、建立數(shù)據(jù)庫用戶
su postgres
create --pwprompt
Enter name of user to add: openexchange
Enter password for new user: YoUrPaSsWoRd
Enter it again: YoUrPaSsWoRd
Shall the new user be allowed to create databases? (y/n) y
Shall the new user be allowed to create more new users? (y/n) n
5、建立數(shù)據(jù)庫
createdb -O openexchange -E UTF-8 openexchange
如果不建立數(shù)據(jù)庫在后面編譯OX是會出錯
6、退出postgres用戶
exit
四、OX(open-exchange)的安裝
1、下載OX
不穩(wěn)定最新版本: http://mirror./download/open-xchange-0.8.1-6.tar.gz
穩(wěn)定版本: http://mirror./download/archive/open-xchange-0.8.0-6.tar.gz
把OX解壓到一個目錄下如/oxsource/,在安裝完成后就可以刪除了
2、OX的設(shè)置、編譯、安裝
由于在編譯OX時還要用到servertapi.jar這個包,可以建立一下link到/usr/lib/java/lib/下:
ln -s /usr/share/tomcat/common/lib/servlet-api.jar /usr/lib/java/lib/serveletapi5.jar
命令中的/data/ox/是安裝后的ox目錄,你可以變成你自己的目錄如 /opt/ox 等,下面相應(yīng)的也都要變成你自己的目錄
進(jìn)入oxsource目錄:
cd /oxsource
./configure --prefix=/data/ox \
--with-mailjar=/usr/lib/java/lib/mail.jar \
--with-activationjar=/usr/lib/java/lib/activation.jar \
--with-jdomjar=/usr/lib/java/lib/jdom.jar \
--with-xercesjar=/usr/lib/java/lib/xercesImpl.jar \
--with-jsdkjar=/usr/lib/java/lib/servletapi5.jar \
--with-jdbcjar=/usr/lib/java/lib/postgresql.jar \
--with-dbpass=YoUrPaSsWoRd \
--with-domain=domain.com \
--with-basedn=dc=domain,dc=com \
--with-rootdn=uid=mailadmin,dc=domain,dc=com \
--with-organization="your organization" \
--with-runuid=wwwrun \
--with-rungid=tomcat \
--enable-webdav \
--enable-doc
make
make install
cd /data/ox
cp share/perl/* /srv/www/cgi-bin/
cp share/openxchange.schema /etc/openldap/schema/
mkdir -p /srv/www/htdocs/cfintranet/webmail/
cp -r share/groupware/data/css share/groupware/data/images share/groupware/data/javascript /srv/www/htdocs/cfintranet/
cp -r share/webmail/data/css share/webmail/data/images share/webmail/data/javascript /srv/www/htdocs/cfintranet/webmail
cd etc/webmail/
ln -s /etc/openldap/ldap.conf
ln -s /etc/mime.types
cd ../groupware
ln -s /etc/openldap/ldap.conf
ln -s /etc/mime.types
su postgres
psql -U openexchange openexchange < /data/ox/share/init_database.sql
exit
/data/ox/sbin/dbinit_ox
rcpostgresql restart
3、OX的配置
編輯/etc/init.d/ldap,設(shè)置以下一行為:
SLAPD_URLS="ldap://127.0.0.1/"
然后運(yùn)行:
rcldap restart
編輯/data/ox/share/init_ldap.ldif,把其中所有的域換成你自己的域dc=domain,dc=com
仔細(xì)檢查以下文件,把其中的BINDDN或rootdn,BINDPW換成你自己的
/etc/openldap/ldap.conf
/etc/openldap/slapd.conf
/data/ox/etc/admintools.conf
在/etc/slapd.conf中加入一行:include /etc/openldap/schema/openxchange.schema
/etc/openldap/ldap.conf示例:
BASE dc=domain,dc=com
HOST 127.0.0.1
TLS_REQCERT allow
在/etc/openldap 下用
touch acl_ox.conf
建立一acl_ox.conf的文件,并在/etc/openldap/slapd.conf中加入一行:include /etc/openldap/acl_ox.conf
(這一行我沒有加,加了有問題)
下面這一步是出錯最多的地方,請注意,可以是因為OX自動生成的init_ldap.ldif文件有問題,所在要手動找出所在并改正:
rcldap stop
rm /var/lib/ldap/*
rcldap start
ldapadd -x -D "uid=mailadmin,dc=domain,dc=com" -W -f /data/ox/share/init_ldap.ldif
看最后一行出錯的是什么,我的是沒有發(fā)現(xiàn)一個入口,我在出錯的前一行加了一行就解決了。
然后再清空LDAP,重啟一次再導(dǎo)入ldif:
rcldap stop
rm /var/lib/ldap/*
rcldap start
slapadd -l /data/ox/share/init_ldap.ldif
rcldap restart
然后運(yùn)行:
chown wwwrun.tomcat /data/ox/var/filespool -R
chmod g+w /data/ox/var/filespool -R
cp -a /data/ox/etc/init.d/openexchange /etc/init.d/
chkconfig apache2 on
chkconfig tomcat on
chkconfig ldap on
chkconfig postgresql on
chkconfig openexchange on
五、tomcat
cd /srv/www/tomcat/base/
mkdir -p webapps/servlet/WEB-INF/lib
mkdir -p webapps/servlet/WEB-INF/classes
cd /data/ox
cp share/servlets/*.class /srv/www/tomcat/base/webapps/servlet/WEB-INF/classes/
cp lib/* /srv/www/tomcat/base/webapps/servlet/WEB-INF/lib/
cp /oxsource/system/servlet/web.xml /srv/www/tomcat/base/webapps/servlet/WEB-INF/
然后編輯/etc/tomcat/base/tomcat-users.xml,加入:
<user username="yourname" password="YoUrPaSsWoRd" roles="manager,admin" />
重啟tomcat
rctomcat restart
用http://localhost:8080/manager/html/ 打開網(wǎng)頁用yourname/YoUrPaSsWoRd論證后,發(fā)布以下兩個war
/data/ox/lib/umin.war /data/ox/lib/servlet.war
把要保證這幾個文件在/srv/www/tomcat/base/webapps/servlet/WEB-INF/lib/ 下:
activation.jar, comfiretools.jar, intranet.jar, jdom.jar, mail.jar, nas.jar, postgresql.jar and webdav.jar
設(shè)置目錄屬性:
chown tomcat.tomcat /srv/www/tomcat/base/webapps/servlet/WEB-INF/ -R
rctomcat restart
六、apache2
編輯/etc/sysconfig/apache2
在APACHE_MODULES一行最后加入 jk
編輯/etc/apache2/mod_mime-defaults.conf 中把
AddDefaultCharset UTF-8
然后運(yùn)行:
SuSEconfig
在/etc/apache2/config.d/ 下建立jk.conf
<IfModule mod_jk.c>
JkWorkersFile /etc/tomcat/base/workers.properties
JkLogFile /var/log/apache2/mod_jk.log
# Log level to be used by mod_jk
JkLogLevel warn
# webdav
JkMount /servlet/* ajp13
JkMount /servlet/webdav.contacts/* ajp13
JkMount /umin/* ajp13
JkMount /servlet/webdav.documents/* ajp13
# The following line makes apache aware of the location of
# the /servlet
Alias /servlet "/srv/www/tomcat/base/webapps/servlet"
Alias /webdav.documents "/srv/www/tomcat/base/webapps/servlet"
<Directory "/srv/www/tomcat/base/webapps/servlet">
Options Indexes FollowSymLinks
allow from all
</Directory>
#<Directory "/srv/www/tomcat/base/webapps/servlets-examples">
# Options Indexes FollowSymLinks
# allow from all
#</Directory>
# The following line prohibits users from directly accessing WEB-INF
<Location "/servlet/WEB-INF/">
AllowOverride None
deny from all
</Location>
</IfModule>
把/etc/hosts中關(guān)于IPV6的行都去除了
七、增加OX用戶
cd /data/ox/sbin
./adduser_ox --username=test \
--passwd=test \
--name=test \
--sname=test \
--maildomain=yourdomain.com \
--ox_timezone=Europe/Berlin \
--inetmail=TRUE \
--write_global_address=TRUE
And:
./addgroup_ox --group=[Your group]
./addusertogroup_ox --user=[Your user] --group=[Your group]
Thus OX knows which IMAP server it for the user to access:
./changeuserattr_ox --username=mmustermann --attrib=imapServer --value=imap.ox-server.de
If You don‘t do this..You will not have a popup-windows for new incoming emails..;-)
八、啟動全部相關(guān)服務(wù)
rcldap restart
rcpostgresql restart
rcapache2 restart
rctomcat restart
/etc/init.d/openexchange start
九、cyrus-imapd 、cyrus-sasl的設(shè)置
1、cyrus-sasl 編譯,使支持ldap
把cyrus-sasl的源代碼包從第5張CD上復(fù)制到用戶目錄下:
執(zhí)行
rpm -i cyrus-sasl-2.1.18-33.1.src.rpm
cd /usr/src/packages/SPECS
rpmbuild -bp cyrus-sasl.specs 一個和你的軟件包同名的specs文件
cd /usr/src/packages/BUILD/cyrus-sasl-2.1.18/ 一個和你的軟包同名的目錄
./configure 這一步和編譯普通的源碼軟件一樣,可以加上參數(shù)
make
make install
會安裝到/usr/local下,把要相關(guān)的復(fù)制到對應(yīng)目錄下就OK了
2、cyrus ldap 相關(guān)設(shè)置
在/etc/下建立saslauthd.conf,內(nèi)容為
ldap_servers: ldap://127.0.0.1
ldap_bind_dn: uid=mailadmin,dc=domain,dc=com
ldap_password: YoUrPaSsWoRd
ldap_search_base: dc=domain,dc=com
編輯/etc/sysconfig/saslauthd
設(shè)置為ldap 認(rèn)證:
SASLAUTHD_AUTHMECH=ldap
CONFIG_FILE="/etc/saslauthd.conf"
編輯/etc/init.d/saslthd,把啟動進(jìn)程一行變?yōu)椋?br>/sbin/startproc $AUTHD_BIN -a $SASLAUTHD_AUTHMECH -O /etc/saslauthd.conf > /dev/null 2>&1
就是在后面中上 -O /etc/saslauthd.conf
編輯/etc/ldap.conf,設(shè)置以下兩行:
BASE dc=domain,dc=com
HOST server.domain.com
# again, following line not needed, if not using openLDAP with TLS enabled.
TLS_CACERT /etc/ldap/certs/cacert.pem
編輯/etc/imapd.conf為:
allowplaintext: yes
sasl_pwcheck_method: saslauthd
sasl_mech_list: PLAIN
3、在LDAP中增加cyrus這個用戶
cd /data/ox/
./adduser_ox --username=cyrus \
--passwd=YoUrPaSsWoRd \
--name=cyrus \
--sname=admin \
--maildomain=yourdomain.com \
--ox_timezone=Europe/Berlin \
--inetmail=TRUE \
--write_global_address=TRUE
十、postfix ldap 相關(guān)設(shè)置
1、建立/etc/postfix/ldap-settings.cf 這個文件:
version = 3
###################### ALIASES########################
bind_dn= uid=mailadmin,dc=domain,dc=com
bind_pw= YoUrPaSsWoRd
server_host= 127.0.0.1
server_port= 389
bind= yes
timeout= 20
search_base= ou=OxObjects,dc=domain,dc=com
query_filter = (|(mail=%s)(cn=%s))
result_attribute = uid,memberUid
scope= sub
2、編輯/etc/postfix/main.cf
設(shè)置 alias_maps為:
alias_maps = hash:/etc/aliases,ldap:/etc/postfix/ldap-settings.cf
如果出現(xiàn)無法發(fā)郵件,象連接被拒絕和loops to myself 的錯誤,問題主要是出在postfix的設(shè)置上,把main.cf
中的相關(guān)設(shè)置,如主機(jī)、域等設(shè)置好就可以了
十一、增加cyrus-imapd 用戶
用adduser_ox加的只是ox用記,并沒有加入imap的用戶,所以要用webmail還要建立imap用戶,
可以用cyrus-imapd文檔目錄下的腳本來建立