一.安裝 postfix 郵件服務器所需的軟件列表:(一下軟件用新點版本也行)
RedHat as 4.0
RedHat 高級服務器操做系統
二、Postfix
這一個是天然少不了的,郵件服務器系統的 smtp 服務器,在郵件服務器系統中充當MTA角色。軟件版本:postfix-2.4.5
下載地址:
http://www.postfix.org/download.html
三、mysql
最優秀的開源數據庫之一,用於存儲虛擬域、虛擬帳戶信息。使用的版本: mysql-5.0.45
下載地址:
http://dev.mysql.com/downloads/mysql/5.0.html
四、apache
最優秀的 web 服務器軟件之一,用於 extman 的後臺管理,extmail 的 web 郵件收發。
軟件版本:httpd-2.2.4
下載地址:
http://www.apache.org
五、php
Extman & extmail 須要使用 php.做用版本:php-5.2.3
下載地址:
http://www.php.net
六、cyrus-sasl
用於實現身份驗證的smtp 服務器,使用版本:cyrus-sasl-2.1.22
下載地址:
http://download.chinaunix.net/download/0001000/71.shtml
七、courier-authlib
實現帶驗證的 pop3 服務器,使用版本:courier-authlib-0.58
下載地址:
http://download.chinaunix.net/download/0002000/1788.shtml
八、courier-imap
用於實現 pop三、imap 收郵件功能,使用版本: courier-imap-4.1.0
下載地址:
http://download.chinaunix.net/do ...6&Resourceid=77
九、openssl
提供安全的郵件服務器鏈接,使用版本:openssl-0.9.8e
下載地址:
http://www.openssl.org/source
十、extman
用於郵件服務器的後臺管理,使用版本:extman-0[1].2.2
下載地址:
http://www.extmail.org
十一、extmail
用於實現 webmail.使用版本:extmail-1[1].0.2
下載地址:
http://www.extmail.org
十二、DBD-Mysql
用於解決依賴關係,extmail 將會用到,使用版本:DBD-Mysql-3.0002_4
下載地址:
http://search.cpan.org
1三、Unix-Syslog
用於解決依賴關係,extmail 將會用到,使用版本:Unix-Syslog-0.100
下載地址:
http://search.cpan.org
1四、BerkeleyDB
使用版本:BerkeleyDB-4.5.20
下載地址:
http://www.Oracle.com/technology ...keley-db/index.html php
二.郵件服務器系統的安裝
本文約定:默認狀況下,本文中的全部軟件的壓縮安裝文件都放在 /root 目錄下,除非特別說明的狀況下。 html
禁用 selinux
[root @ www.codesky.net root]# vi /etc/selinux/conifg
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy isenforced.
# permissive - SELinux prints warnings instead ofenforcing.
# disabled - SELinux is fully disabled.
將 SELINUX=enforcing
改爲
SELINUX=disabled
# SELINUXTYPE= type of policy in use. Possible values are:
# targeted - Only targeted network daemons areprotected.
# strict - Full SELinux protection.
SELINUXTYPE=targeted
Selinux 是 linux 系統中一個強制性的安全機制,但也帶來了很多麻煩,爲了不沒必要要的麻煩,仍是先關了吧。我以前在Fedora cora 5 上安裝郵件服務器時就由於沒有關掉 selinux ,而苦惱了一段時間。 mysql
1.安裝 mysql服務器(這纔是真正的數據庫) linux
下載一個MySQL-server-community-5.1.44-1.rhel5.i386.rpm
[root @ www.codesky.net root]#rpm -vihMySQL-server-community-5.1.44-1.rhel5.i386.rpm web
安裝 mysql客戶端(提供mysql等命令和庫文件的)
添加虛賬戶mysql 並同時產生一個 mysql 組。注:若是系統中已有就沒必要添加了。
[root @ www.codesky.net root]#groupadd mysql
[root @ www.codesky.net root]# useradd -g mysql mysql
解壓縮mysql 安裝文件
[root @ www.codesky.netlocal]#tar xvzf mysql-5.0.45-linux-i686.tar.gz
[root @ www.codesky.netlocal]#cd mysql-5.0.45
[root @ www.codesky.netlocal]# ./configure --prefix=/usr/local/mysql sql
[root @ www.codesky.netlocal]# make 數據庫
[root @ www.codesky.netlocal]# make install apache
[root @ www.codesky.netlocal]# chown -R mysql:mysql /var/lib/mysql
初始化 mysql 數據庫
[root @testlocal]#./script/mysql_install_db —user=mysql&
修改目錄全部權限爲mysql 全部
[root @ www.codesky.netlocal]#chown -R root .
[root @ www.codesky.netlocal]#chown -R mysql:mysql data
[root @ www.codesky.netlocal]#chgrp -R mysql .
注:將/var/lib/mysql/mysql.sock連接到 /tmp 目錄下,並保持名稱不變,若是不這樣作的話,有時候可能mysql 啓動時會報錯,如 ERROR 200:Can’tconnect to local MYSQL server throuht socket /tmp/mysql.sock.
[root @ www.codesky.netlocal]#ln -s /var/lib/mysql/mysql.sock /tmp/
啓動測試mysql
[root @ www.codesky.netlocal]#/usr/local/mysql/bin/safe_mysqld —user= mysql&
複製一個編譯目錄的腳本,以使 mysql 每次啓動時都能自動運行
[root @ www.codesky.netlocal]#cp support-files/mysql.server/etc/rc.d/init.d/mysqld
[root @ www.codesky.netlocal]#chmod 700 /etc/init.d/mysqld
[root @ www.codesky.netlocal]#chkconfig —add mysqld
[root @ www.codesky.netlocal]#chkconfig —level 35 mysqld on
[root @ www.codesky.netlocal] # echo 「/usr/local/mysql/lib/mysql」>> /etc/ls.so.conf
[root @ www.codesky.netlocal] # ldconfig
說明:在用 /usr/local/mysql/bin/mysqld_safe —user=mysql& 命令啓動測試 mysql 時,老是沒法啓動mysql ,天然也沒法進入 mysql,開始還覺得是本身操做失誤,而後又從新解壓mysql安裝文件,從新安裝,依然如此,甚是鬱悶,最後查看日誌/var/log/mysqld.log,顯示:
070829 9:04:08 [ERROR]/usr/local/mysql/bin/mysqld: Can't create/write tofile'/var/run/mysqld/mysqld.pid' (Errcode: 13)
070829 9:04:08 [ERROR] Can'tstart server: can't create PID file: Permission denied
070829 09:04:08 mysqldended
根據日誌提示,查看/var/run/mysqld 目錄,發現該目錄下並無mysqld.pid文件,查看該目錄的文件權限,發現用戶全部者即不屬於root ,也不屬於mysql ,文件全部者顯示爲27。據此推斷,多是mysql啓動時會向此文件夾內寫一些東西,但 mysql 的進程用戶mysql 卻沒有權限寫,致使mysql 沒法啓動,用touch/var/run/mysqld/mysqld.pid 命令建立mysql 所須要文件,chown -Rmysql:mysql/var/run/mysqld將/var/run/mysqld 的目錄權限轉給mysql。再次用/usr/local/mysql/bin/mysqld_safe —user=mysql& 啓動mysql ,沒有再報錯,用netatst -tlnup 命令,查看mysql的端口號3306是否啓動,已經能夠看到3306端口處於監聽狀態,mysql啓動成功,用/usr/lcoal/mysql/bin/mysql 進入mysql 數據庫,沒問題。至此 mysql安裝成功。此問題只在 Fedora cora 5 中發現,我在 RHEL5.4 中安裝 mysql 沒有發現這個問題。 vim
二、安裝 openssl
[root @ www.codesky.net root] # tar zxvf openssl-0.9.8e.tar.gz
[root @ www.codesky.net root] # cd openssl-0.9.8e
[root @ www.codesky.netopenssl-0.9.8e] # ./config shared zlib
[root @ www.codesky.netopenssl-0.9.8e] # make
[root @ www.codesky.netopenssl-0.9.8e] # make test
[root @ www.codesky.netopenssl-0.9.8e] # make install
[root @ www.codesky.netopenssl-0.9.8e] # mv /usr/bin/openssl/usr/bin/openssl.OFF
[root @ www.codesky.netopenssl-0.9.8e] # mv /usr/include/openssl/usr/include/openssl.OFF
[root @ www.codesky.netopenssl-0.9.8e] # rm /usr/lib/libssl.so
[root @ www.codesky.netopenssl-0.9.8e] # ln -s /usr/local/ssl/bin/openssl/usr/bin/openssl
[root @ www.codesky.netopenssl-0.9.8e] #ln -s /usr/local/ssl/include/openssl/usr/include/openssl
[root @ www.codesky.netopenssl-0.9.8e] # ln -sv/usr/local/ssl/lib/libssl.so.0.9.8 /usr/lib/libssl.so
配置庫文件搜索路徑
[root @ www.codesky.netopenssl-0.9.8e] #echo "/usr/local/ssl/lib">> /etc/ld.so.conf
[root @ www.codesky.netopenssl-0.9.8e] # lconfig
檢查是否安裝 openssl
[root @ www.codesky.netopenssl-0.9.8e] # openssl version
OpenSSL 0.9.8e 23 Feb 2007 api
三、安裝 cyrus-sasl
[root @ www.codesky.net root] # tar cyrus-sasl-2.1.22.tar.gz
[root @ www.codesky.net root] # cd cyrus-sasl-2.1.22
[root @ www.codesky.netcyrus-sasl-2.1.22] #./configure--prefix=/usr/local/sasl2 --disable-gssapi --disable-anon--disable-sample --disable-digest --enable-plain --enable-login--enable-sql --with-mysql=/usr/local/mysql--with-mysql-includes=/usr/local/mysql/include/mysql--with-mysql-libs=/usr/local/mysql/lib/mysql --with-authdaemond=/usr/local/courier-authlib/var/spool/authdaemon/socket
[root @ www.codesky.netcyrus-sasl-2.1.22] # make
[root @ www.codesky.netcyrus-sasl-2.1.22] # make install
關閉原有的 sasl
[root @ www.codesky.netcyrus-sasl-2.1.22] # mv/usr/lib/libsasl2.a /usr/lib/libsasl2.a.OFF
[root @ www.codesky.netcyrus-sasl-2.1.22] # mv/usr/lib/libsasl2.la /usr/lib/libsasl2.la.OFF(無)
[root @ www.codesky.netcyrus-sasl-2.1.22] # mv/usr/lib/libsasl2.so.2.0.19 /usr/lib/libsasl2.so.2.0.19.OFF
[root @ www.codesky.netcyrus-sasl-2.1.22] # mv/usr/lib/sasl2 /usr/lib/sasl2.OFF
[root @ www.codesky.netcyrus-sasl-2.1.22] # rm /usr/lib/libsasl2.so
[root @ www.codesky.netcyrus-sasl-2.1.22] # rm /usr/lib/libsasl2.so.2
[root @ www.codesky.netcyrus-sasl-2.1.22] # ln -s/usr/local/sasl2/lib/* /usr/lib
postfix2.3之後的版本會分別在/usr/local/lib和/usr/local/include中搜索sasl庫文件及頭文件,故還須將其連接至此目錄中:
[root @ www.codesky.netcyrus-sasl-2.1.22] # ln -sv/usr/local/sasl2/lib/* /usr/local/lib
[root @ www.codesky.netcyrus-sasl-2.1.22] # ln -sv/usr/local/sasl2/include/sasl/* /usr/local/include
建立運行時須要的目錄並調試啓動
[root @ www.codesky.netcyrus-sasl-2.1.22] # mkdir -pv/var/state/saslauthd
[root @ www.codesky.netcyrus-sasl-2.1.22] #/usr/local/sasl2/sbin/saslauthd -a shadow pam -d
啓動並測試
[root @ www.codesky.netcyrus-sasl-2.1.22] # /usr/local/sasl2/sbin/saslauthd-a shadow pam
[root @ www.codesky.netcyrus-sasl-2.1.22] #
配置庫文件搜索路徑
[root @ www.codesky.netcyrus-sasl-2.1.22] # echo "/usr/local/sasl2/lib">> /etc/ld.so.conf
[root @ www.codesky.netcyrus-sasl-2.1.22] # echo "/usr/local/sasl2/lib/sasl2">> /etc/ld.so.conf
[root @ www.codesky.netcyrus-sasl-2.1.22] # ldconfig
開機自動啓動
[root @ www.codesky.netcyrus-sasl-2.1.22] # echo"/usr/local/sasl2/sbin/saslauthd -a shadowpam">>/etc/rc.local
四、安裝 Berkeley-DB
[root @ www.codesky.net root] # tar zxvf db-4.5.20.tar.gz
[root @ www.codesky.net root] # cd db-4.5.20/build_unix
[root @ www.codesky.netbuild_unix] #../dist/configure--prefix=/usr/local/BerkeleyDB
[root @ www.codesky.netbuild_unix] #make
[root @ www.codesky.netbuild_unix] #make install
修改相應的頭文件指向
[root @ www.codesky.netbuild_unix] #mv /usr/inculde/db4 /usr/inculde/db4.OFF
[root @ www.codesky.netbuild_unix] #rm /usr/inculde/db_cxx.h
[root @ www.codesky.netbuild_unix] #rm /usr/inculde/db.h
[root @ www.codesky.netbuild_unix] #rm /usr/inculde/db_185.h
[root @ www.codesky.netbuild_unix] # ln -sv/usr/local/BerkeleyDB/include /usr/include/db4
[root @ www.codesky.netbuild_unix] # ln -sv/usr/local/BerkeleyDB/include/db.h /usr/include/db.h
[root @ www.codesky.netbuild_unix] # ln -sv/usr/local/BerkeleyDB/include/db_cxx.h /usr/include/db_cxx.h
配置庫文件搜索路徑
[root @ www.codesky.netbuild_unix] # echo "/usr/local/BerkeleyDB/lib">> /etc/ld.so.conf
[root @ www.codesky.netbuild_unix] # ldconfig
五、安裝httpd-2.2.4
[root @ www.codesky.net root] # tar jxvf httpd-2.2.4.tar.bz2
[root @ www.codesky.net root] # cd httpd-2.2.4
[root @ www.codesky.nethttpd-2.2.4] #./configure --prefix=/usr/local/apache--sysconfdir=/etc/httpd --enable-so --enable-ssl--with-ssl=/usr/local/ssl --enable-track-vars --enable-rewrite--with-zlib --enable-mods-shared=most --enable-suexec --with-suexec-caller=daemon
[root @ www.codesky.nethttpd-2.2.4] # make
[root @ www.codesky.nethttpd-2.2.4] # echo "/usr/local/apache/bin/apachectlstart" >>/etc/rc.local(系統啓動時服務自動啓動)
六、安裝php-5.2.3
[root @ www.codesky.net root] # tar -zvxf php-5.2.3.tar.gz
[root @ www.codesky.net root] # mkdir -p /usr/local/php
[root @ www.codesky.net root] # cd php-5.2.3
[root @ www.codesky.netphp-5.2.3] # ./configure--prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql--with-mysqli=/usr/local/mysql/bin/mysql_config --with-xml --with-png--with-jpeg --with-zlib --with-freetype --with-gd --enable-track-vars --enable-mbstring=all
[root @ www.codesky.netphp-5.2.3] # make
[root @ www.codesky.netphp-5.2.3] # make install
[root @ www.codesky.netphp-5.2.3] # cpphp.ini-dist /usr/local/php/lib/php.ini
注:編輯apache配置文件httpd.conf,以apache支持php
[root @ www.codesky.netphp-5.2.3] # vi /etc/httpd/httpd.conf
# 添加以下二行
AddTypeapplication/x-httpd-php .php
AddTypeapplication/x-httpd-php-source .phps
# 定位至DirectoryIndex index.html
修改成:
DirectoryIndex index.php index.html
七、安裝 postfix
[root @ www.codesky.net root] # groupadd -g 2525 postfix
[root @ www.codesky.net root] # useradd -g postfix -u 2525 -s /sbin/nologin -Mpostfix
[root @ www.codesky.net root] # groupadd -g 2526 postdrop
[root @ www.codesky.net root] # useradd -g postdrop -u 2526 -s /bin/false -Mpostdrop
[root @ www.codesky.net root] # tar zxvf postfix-2.4.5.tar.gz
[root @ www.codesky.net root] #cd postfix-2.4.5
[root @ www.codesky.netpostfix-2.4.5] # make makefiles 'CCARGS=-DHAS_MYSQL-I/usr/local/mysql/include/mysql -DUSE_SASL_AUTH -DUSE_CYRUS_SASL-I/usr/local/sasl2/include/sasl-I/usr/local/BerkeleyDB/include -DUSE_TLS-I/usr/local/ssl/include/openssl ''AUXLIBS=-L/usr/local/mysql/lib/mysql -lmysqlclient -lz -lm-L/usr/local/sasl2/lib -lsasl2 -L/usr/local/BerkeleyDB/lib-L/usr/local/ssl/lib -lssl -lcrypto'
[root @ www.codesky.netpostfix-2.4.5] # make
[root @ www.codesky.netpostfix-2.4.5] # make install
Install_root: [/]
tempdir: [/usr/local/src/ postfix-2.4.5]
config_directory: [/etc/postfix]
daemon_directory: [/usr/libexec/postfix]
command_directory: [/usr/sbin]
queue_directory: [/var/spool/postfix]
sendmail_path: [/usr/sbin/sendmail]
newaliases_path: [/usr/bin/newaliases]
mailq_path: [/usr/bin/mailq]
mail_owner: [postfix]
setgid_group: [postdrop]
html_directory: [no]
manpages: [/usr/local/man]
readme_directory: [no]
上面的選項所有保持默認,直接回車便可。
注:以上幾步可能會說找不到libmysqlclient.so.15,只要在postfix目錄下搜索libmysqlclient.so.15,把libmysqlclient.so.15拷一個放/usr/lib或者把libmysqlclient.so.15的路徑加到ld.so.conf裏ldconfig下就OK生成別名二進制文件,這個步驟若是忽略,會形成postfix效率極低:
[root @ www.codesky.netpostfix-2.4.5]# newaliases
配置 postfix
[root @ www.codesky.netpostfix-2.4.5] # vi /etc/postfix/main.cf(編輯)
myhostname = mail.linuxidc.com
mydomain = linuxidc.com
myorigin = $mydomain
inet_interfaces = all
mynetworks = 59.64.0.0/16, 127.0.0.0/8
#================Virtual Setting ====================
virtual_mailbox_base = /var/mailbox/
virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql_virtual_mailbox_maps.cf
virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql_virtual_domains_maps.cf
virtual_alias_domains =
virtual_alias_maps =mysql:/etc/postfix/mysql/mysql_virtual_alias_maps.cf
virtual_uid_maps = static:2525
virtual_gid_maps = static:2525
virtual_transport = virtual
maildrop_destination_recipient_limit = 1
maildrop_destination_concurrency_limit = 1
#=================Quota Setting ====================
message_size_limit = 14336000
virtual_mailbox_limit = 20971520
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps =mysql:/etc/postfix/mysql/mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = Sorry,the user's maildir hasoverdrawn his diskspace quota,please Tidy your mailbox and tryagain later.
virtual_overquota_bounce = yes
#=================== Cyrus-sasl=====================
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_invalid_hostname,reject_non_fqdn_hostname,reject_unknown_sender_domain,reject_non_fqdn_sender,reject_non_fqdn_recipient,reject_unknown_recipient_domain,reject_unauth_pipelining, reject_unauth_destination, permit
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
smtpd_sasl_application_name = smtpd
smtpd_banner = Welcome to our $myhostname ESMTP, Warning:Versionnot Available!
[root @ www.codesky.netpostfix-2.4.5] # mkdir -p /etc/postfix/mysql
[root @ www.codesky.netpostfix-2.4.5] # cd /etc/postfix/mysql
[root @ www.codesky.netmysql] # vi mysql_virtual_alias_maps.cf(新建)
user = extmail
password = extmail
hosts = localhost
dbname = extmail
table = alias
select_field = goto
where_field = address
[root @ www.codesky.netmysql] # vimysql_virtual_mailbox_limit_maps.cf(新建)
user = extmail
password = extmail
hosts = localhost
dbname = extmail
table = mailbox
select_field = quota
where_field = username
[root @ www.codesky.netmysql] # vi mysql_virtual_domains_maps.cf(新建)
user = extmail
password = extmail
hosts = localhost
dbname = extmail
table = domain
select_field = description
where_field = domain
[root @ www.codesky.netmysql] # vi mysql_virtual_mailbox_maps.cf(新建)
user = extmail
password = extmail
hosts = localhost
dbname = extmail
table = mailbox
select_field = maildir
where_field = username
八、安裝 courier-authlib(要用新版本,不然下一步出錯)
[root @ www.codesky.net root] # tar jxvfcourier-authlib-0.58.tar.bz2
[root @ www.codesky.net root] # cdcourier-authlib-0.58
[root @ www.codesky.netcourier-authlib-0.58]#./configure --prefix=/usr/local/courier-authlib --sysconfdir=/etc --without-authpam --without-authldap--without-authpwd --without-authshadow --without-authvchkpw --without-authpgsql--with-authmysql --with-mysql-libs=/usr/local/mysql/lib/mysql--with-mysql-includes=/usr/local/mysql/inculde/mysql --with-RedHatCFLAGS="-march=i686 -O2 -fexpensive-optimizations"CXXFLAGS="-march=i686 -O2 -fexpensive-optimizations"--with-authmysql=/usr/local/mysql/lib/mysql
[root @ www.codesky.netcourier-authlib-0.58] # make
[root @ www.codesky.netcourier-authlib-0.58] # make install
[root @ www.codesky.netcourier-authlib-0.58] # chmod 755/usr/local/courier-authlib/var/spool/authdaemon
[root @ www.codesky.netcourier-authlib-0.58] # cp/usr/localcourier-authlib/etc/authdaemonrc.dist /usr/localcourier-authlib/etc/authdaemonrc
# cp/usr/localcourier-authlib/etc/authmysqlrc.dist /usr/localcourier-authlib/etc/authmysqlrc
修改/etc/authdaemonrc 文件
[root @ www.codesky.netcourier-authlib-0.58] # vi/usr/localcourier-authlib/etc/authlib/authdaemonrc
authmodulelist="authmysql"
authmodulelistorig="authmysql"
daemons=10
編輯/etc/authmysqlrc 爲如下內容,其中2525,2525 爲postfix 用戶的UID和GID。
[root @ www.codesky.netcourier-authlib-0.58] # vi/usr/localcourier-authlib/etc/authlib/authdaemonrc
MYSQL_SERVER localhost
MYSQL_PORT 3306 (指定你的mysql監聽的端口,這裏使用默認的3306)
MYSQL_USERNAME extmail (這時爲後文要用的數據庫的全部者的用戶名)
MYSQL_PASSWORD extmail (密碼)
MYSQL_SOCKET /tmp/mysql.sock
MYSQL_DATABASE extmail
MYSQL_USER_TABLE mailbox
MYSQL_CRYPT_PWFIELD password
MYSQL_UID_FIELD '2525'
MYSQL_GID_FIELD '2525'
MYSQL_LOGIN_FIELD username
MYSQL_HOME_FIELD concat('/var/mailbox/',homedir)
MYSQL_NAME_FIELD name
MYSQL_MAILDIR_FIELD concat('/var/mailbox/',maildir)
注:這個文件中不能出現空格,或者會出現 FAQ 中的示例4 中的錯誤。
設置 courier-authlib 自啓動
[root @ www.codesky.netcourier-authlib-0.58] # cp courier-authlib.sysvinit/etc/init.d/courier-authlib
[root @ www.codesky.netcourier-authlib-0.58] # chmod 755/etc/init.d/courier-authlib
[root @ www.codesky.netcourier-authlib-0.58] # chkconfig —addcourier-authlib
[root @ www.codesky.netcourier-authlib-0.58] # chkconfig —level 2345courier-authlib on
[root @ www.codesky.netcourier-authlib-0.58] #echo"/usr/local/courier-authlib/lib/courier-authlib">> /etc/ld.so.conf
[root @ www.codesky.netcourier-authlib-0.58] # ldconfig
[root @ www.codesky.netcourier-authlib-0.58] # service courier-authlibstart (啓動服務)
九、安裝Courier-IMAP
[root @ www.codesky.net root] # tar jxvf courier-imap-4.1.3.tar.bz2
[root @ www.codesky.net root] # cd courier-imap-4.1.3
[root @ www.codesky.netcourier-imap-4.1.3]#./configure --prefix=/usr/local/imap --with-RedHat --enable-unicode --disable-root-check --with-trashquota CPPFLAGS='-I/usr/local/ssl/include/openssl -I/usr/local/courier-uthlib/include' LDFLAGS='-L/usr/local/courier-authlib/lib/courier-authlib' COURIERAUTHCONFIG='/usr/local/courier-authlib/bin/courierauthconfig'CFLAGS='-I/usr/local/courier-authlib/include'
[root @ www.codesky.netcourier-imap-4.1.3] # make
[root @ www.codesky.netcourier-imap-4.1.3] # make install
[root @ www.codesky.netcourier-imap-4.1.3] # cp/usr/local/imap/etc/imapd.dist /usr/local/imap/etc/imapd
[root @ www.codesky.netcourier-imap-4.1.3] # cp/usr/local/imap/etc/imapd-ssl.dist/usr/local/imap/etc/imapd-ssl
[root @ www.codesky.netcourier-imap-4.1.3] # cp/usr/local/imap/etc/pop3d.dist /usr/local/imap/etc/pop3d
[root @ www.codesky.netcourier-imap-4.1.3] # cp/usr/local/imap/etc/pop3d-ssl.dist/usr/local/map/etc/pop3d-ssl
配置Courier-IMAP,爲用戶提供pop3服務:
[root @ testcourier-imap-4.1.3] # vi/usr/local/imap/etc/pop3d
POP3DSTART=YES
注:若是你想爲用戶提供IMAP服務,則需在"/usr/local/imap/etc/imapd"文件中設置"IMAPDSTART=yes";其它類同;
新建虛擬用戶郵箱所在的目錄,並將其權限賦予postfix用戶:
[root @ testcourier-imap-4.1.3] # mkdir –p/var/mailbox
[root @ testcourier-imap-4.1.3] #chown –Rpostfix /var/mailbox
[root @ testcourier-imap-4.1.3] # cpcourier-imap.sysvinit /etc/rc.d/init.d/courier-imapd
[root @ testcourier-imap-4.1.3] # chmod 755/etc/rc.d/init.d/imapd
[root @ testcourier-imap-4.1.3] # chkconfig—addimapd
[root @ testcourier-imap-4.1.3] # chkconfig—level 2345 imapd on
[root @ testcourier-imap-4.1.3] # servicecourier-imapd start
接下來從新配置SMTP 認證,編輯 /usr/local/lib/sasl2/smtpd.conf ,確保其爲如下內容:
[root @ testcourier-imap-4.1.3] # vi/usr/locla/lib/sasl2/smtpdconf
pwcheck_method: authdaemond
log_level: 3
mech_list:PLAIN LOGIN
authdaemond_path:/usr/local/courier-authlib/var/spool/authdaemon/socket
十、安裝 extmail
[root @ www.codesky.net root] # tar zxvf extmail-1.0.2.tar.gz
[root @ www.codesky.net root] # mkdir -pv /var/www/extsuite
[root @ www.codesky.net root] # mv extmail-1.0.2/var/www/extsuite/extmail
[root @ www.codesky.net root]# cp/var/www/extsuite/extmail/webmail.cf.default /var/www/extsuite/extmail/webmail.cf
修改主配置文件
[root @ www.codesky.net root] # vi /var/www/extsuite/extmailwebmail.cf
部分修改選項的說明:
SYS_MESSAGE_SIZE_LIMIT = 5242880
用戶能夠發送的最大郵件
SYS_USER_LANG = en_US
語言選項,可改做:
SYS_USER_LANG = zh_CN
SYS_MAILDIR_BASE = /home/domains
此處即爲您在前文所設置的用戶郵件的存放目錄,可改做:
SYS_MAILDIR_BASE = /var/mailbox/
SYS_MYSQL_USER = db_user
SYS_MYSQL_PASS = db_pass
以上兩句句用來設置鏈接數據庫服務器所使用用戶名、密碼和郵件服務器用到的數據庫,這裏修改成:
SYS_MYSQL_USER = extmail
SYS_MYSQL_PASS = extmail
SYS_MYSQL_HOST = localhost
指明數據庫服務器主機名,這裏默認便可
SYS_MYSQL_SOCKET = /var/lib/mysql/mysql.sock
鏈接數據庫的sock文件位置,這裏修改成:
SYS_MYSQL_SOCKET = /tmp/mysql.sock
SYS_MYSQL_TABLE = mailbox
SYS_MYSQL_ATTR_USERNAME = username
SYS_MYSQL_ATTR_DOMAIN = domain
SYS_MYSQL_ATTR_PASSWD = password
以上用來指定驗正用戶登陸裏所用到的表,以及用戶名、域名和用戶密碼分別對應的表中列的名稱;這裏默認便可
SYS_AUTHLIB_SOCKET = /var/spool/authdaemon/socket
此句用來指明authdaemo socket文件的位置,這裏修改成:
SYS_AUTHLIB_SOCKET =/usr/local/courier-authlib/var/spool/authdaemon/socket
apache相關配置
[root @ www.codesky.net root] # vi /etc/httpd/httpd.conf
將 User daemon
Groupdaemon
改成
User postfix
Group postfix
將Include conf/extra/httpd-vhosts.conf
前的註釋去掉,打開 apache 的虛擬主機功能。
# virtual hosts
Include conf/extra/httpd-vhosts.conf
編輯虛擬主機配置文件
[root @ www.codesky.net root]# vi/usr/local/apache/conf/extra/vhosts-httpd.conf
ServerName mail.linuxidc.com
DocumentRoot /var/www/extsuite/extmail/html/
ScriptAlias /extmail/cgi /var/www/extsuite/extmail/cgi
Alias /extmail /var/www/extsuite/extmail/html
依賴關係的解決
extmail將會用到perl的DBD::Mysql(不安裝ms也行)和Unix::syslogd功能,DBD::Mysql直接用cpan命令安裝,另外一個能夠您能夠去
http://search.cpan.org
搜索下載原碼包進行安裝。
[root @ www.codesky.net root] # tar zxvfDBD-mysql-3.0002_4.tar.gz
[root @ www.codesky.net root] # cd DBD-mysql-3.0002_4
[root @ www.codesky.netDBD-mysql-3.0002_4] # perlMakefile.PL (此步驟中若是出現類同Can'texec "mysql_config": No such file or directory at Makefile.PL line76.的錯誤是由於您的mysql的bin目錄沒有輸出至$PATH環境變量)
[root @ www.codesky.netDBD-mysql-3.0002_4] # make(又一個錯誤,可是不影響安裝)
[root @ www.codesky.netDBD-mysql-3.0002_4] # make install
好了,到此爲止,您的Webmail已經可使用了,能夠在瀏覽器中輸入指定的虛擬主機的名稱進行訪問,以下:
http://mail.linuxidc.com
注:要在 DNS 服務器已經配置好,並運行正常的狀況下才能夠用域名訪問,若是沒有配置 DNS 服務,直接輸入 IP就好了(經過修改hosts也能夠)
十一、安裝Extman-0.2.2
安裝及基本配置
[root @ www.codesky.net root] #tarzxvf extman-0.2.2.tar.gz
[root @ www.codesky.net root] # mv extman-0.2.2 /var/www/extsuite/extman
修改配置文件以符合本例的須要:
[root @ www.codesky.net root] # vi /var/www/extsuite/extman/webman.cf
SYS_MAILDIR_BASE = /home/domains
此處即爲您在前文所設置的用戶郵件的存放目錄,可改做:
SYS_MAILDIR_BASE = /var/mailbox/
SYS_MYSQL_SOCKET = /var/lib/mysql/mysql.sock
此處修改成:
SYS_MYSQL_SOCKET = /tmp/mysql.sock
使用extman源碼目錄下docs目錄中的extmail.sql和init.sql創建數據庫:
[root @ www.codesky.net root] # cd /var/www/extsuite/extman
[root @ www.codesky.netextman ] # mysql -u root -p<extmail.sql;
[root @ www.codesky.netextman ] # mysql -u root -p<init.sql;
mysql> GRANT all privileges on extmail.* TOwebman@localhost IDENTIFIED BY 'webman';
mysql> GRANT all privileges on extmail.* TO
webman@127.0.0.1
IDENTIFIED BY 'webman';
在apache的虛擬主機配置文件中Extmail的虛擬主機部分,添加以下兩行:
ScriptAlias /extman/cgi /var/www/extsuite/extman/cgi
Alias /extman /var/www/extsuite/extman/html
啓動全部服務:
[root @ www.codesky.net root] # service mysqld start
[root @ www.codesky.net root] # /usr/local/apache/bin/apachectl start
[root @ www.codesky.net root] # service courier-authlib start
[root @ www.codesky.net root] # service imapd start
[root @ www.codesky.net root] # postfix start
在IE 瀏覽器中輸入
http://mail.linuxidc.com/extman
,進入郵件服務器的後臺,添加域與添加用戶郵箱。默認管理賬號爲:
root@extmail.org
密碼爲:extmail*123*。我這裏添加了一個linuxidc.com域和一個用戶郵箱:linuxidc@www.codesky.net。至於開通郵件服務器自動註冊郵箱服務,只須要編輯該域,將「容許自由註冊郵箱」前面打上勾便可。
說明:
(1)若是您安裝後沒法正常顯示校驗碼,安裝perl-GD模塊會解決這個問題。經過cpan命令安裝便可。也能夠到如下地址下載適合您的平臺的rpm包:
http://dries.ulyssis.org/rpm/packages/perl-GD/info.html
(2)不知爲何,extman登陸時,總是提示驗證碼錯誤,我搜了一下,把驗證碼去掉了
extmail 後臺管理驗證碼解決
vi /var/www/extsuite/extman/webman.cf
不要驗證碼:
將:SYS_CAPTCHA_ON = 1
改成:SYS_CAPTCHA_ON = 0
更改驗證碼位數:
將:SYS_CAPTCHA_LEN = 6
改成:SYS_CAPTCHA_LEN = 2
更改驗證碼鍵值:
SYS_CAPTCHA_KEY = kjjas!23#$#5xSw (此處順便輸入)
(3)extman-0.2.2自帶了圖形化顯示日誌的功能;此功能須要rrdtool的支持,您須要安裝此些模塊纔可能正常顯示圖形日誌。
接下來安裝圖形日誌的運行所須要的軟件包Time::HiRes、File::Tail和rrdtool,其中前兩個包能夠經過cpan命令安裝,後一個包您能夠到
http://oss.oetiker.ch/rrdtool/pub/?M=D
在安裝 rrdtool 以前,就肯定你的系統中是否已經安裝tcl、tcl-devel、libart、libart-devel,用下面的命令檢查是否已經安裝
[root @ www.codesky.netFile-Tail-0.99.3] # rpm -qa | grep tcl
[root @ www.codesky.netFile-Tail-0.99.3] # rpm -qa | grep libart
若是沒有安裝,將 RedHat AS 4.0 光碟放入光驅,掛載安裝。注:相關的安裝包在第3張碟和第4張碟中。
安裝rrdtool-1.2.23
[root @ www.codesky.netFile-Tail-0.99.3]#tar zxvf rrdtool-1.2.23.tar.gz
[root @ www.codesky.netFile-Tail-0.99.3]#cd rrdtool-1.2.23
[root @ www.codesky.netFile-Tail-0.99.3]#./configure--prefix=/usr/local/rrdtool
[root @ www.codesky.netFile-Tail-0.99.3]#make
[root @ www.codesky.netFile-Tail-0.99.3]#make install
建立必要的符號連接(Extman會到這些路徑下找相關的庫文件)
[root @ www.codesky.netFile-Tail-0.99.3]#ln -sv/usr/local/rrdtool/lib/perl/5.8.5/i386-linux-thread-[root @testFile-Tail-0.99.3]multi/auto/RRDs/RRDs.so /usr/lib/perl5/5.8.5/i386-linux-thread-multi/
[root @ www.codesky.netFile-Tail-0.99.3]#ln -sv/usr/local/rrdtool/lib/perl/5.8.5/RRDp.pm /usr/lib/perl5/5.8.5
[root @ www.codesky.netFile-Tail-0.99.3]#ln -sv/usr/local/rrdtool/lib/perl/5.8.5/i386-linux-thread-multi/RRDs.pm /usr/lib/perl5/5.8.5
複製mailgraph_ext到/usr/local,並啓動之
[root @ www.codesky.netFile-Tail-0.99.3]# cp -r/var/www/extsuite/extman/addon/mailgraph_ext /usr/local
[root @ www.codesky.netFile-Tail-0.99.3]# /usr/local/mailgraph_ext/mailgraph-init start
[root @ www.codesky.netFile-Tail-0.99.3]#/usr/local/mailgraph_ext/qmonitor-init start
添加到自動啓動隊列
[root @ www.codesky.netFile-Tail-0.99.3]# echo"/usr/local/mailgraph_ext/mailgraph-init start">> /etc/rc.local
[root @ www.codesky.netFile-Tail-0.99.3]# echo"/usr/local/mailgraph_ext/qmonitor-init start">> /etc/rc.local
好了,接下來您就能夠到extman的後臺查看圖表日誌了。局部效果以下圖:
測試 smtp
經過如下命令得到
linuxidc@www.codesky.net
的用戶名和密碼的BASE64 編碼
得到用戶名BASE64編碼
[root @ www.codesky.net root] # perl -e 'use MIME::Base64; printencode_base64("test@linuxidc.com")'
dGVzdEB0ZXN0LmNvbQ==
得到密碼BASE64編碼
[root @ www.codesky.net root] # perl -e 'use MIME::Base64; printencode_base64("test")'
dGVzdA==
[root @ www.codesky.net root] # telnet localhost 25
3Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 Welcome to our mail.linuxidc.com ESMTP, Warning:Version notAvailable!
ehlo mail.linuxidc.com
250-mail.linuxidc.com
250-PIPELINING
250-SIZE 14336000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
auth login
334 VXNlcm5hbWU6
dGVzdEB0ZXN0LmNvbQ==
334 UGFzc3dvcmQ6
dGVzdA==
235 2.0.0 Authentication successful
quit
221 2.0.0 Bye
Connection closed by foreign host.
測試 pop3
[root @ www.codesky.net root] # telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
+OK Hello there.
user
linuxidc@www.codesky.net
+OK Password required.
pass test
+OK logged in.
quit
+OK Bye-bye.
Connection closed by foreign host.
注:以上藍色部分是本身輸入的命令。
測試 authlib
[root @ www.codesky.net root] # /usr/local/courier-authlib/sbin/authtest -slogin
linuxidc@www.codesky.net
test
Authentication succeeded.
Authenticated:
linuxidc@www.codesky.net
(uid 2525, gid 2525)
Home Directory:/var/mailbox/linuxidc.com/test/Maildir/
Maildir:/var/mailbox/linuxidc.com/test/Maildir/
Quota:(none)
Encrypted Password: $1$OAWXcOO7$RrcGgF8UkY0MdjUaIYvdr.
Cleartext Password: test
Options:(none)
啓動全部服務:
[root @ www.codesky.net root] # service mysqld start
[root @ www.codesky.net root] # /usr/local/apache/bin/apachectl start
[root @ www.codesky.net root] # service courier-authlib start
[root @ www.codesky.net root] # service imapd start
[root @ www.codesky.net root] # postfix start
至此,郵件系統算是基本成型,已經能夠用郵件服務器收發郵件啦.
FAQ:
查看 /var/log/maillog.出現authentication error: Input/outputerror錯誤的時候
Sep 17 22:06:45 RedHat pop3d: authentication error: Input/outputerror
Sep 17 22:06:47 RedHat pop3d: Connection, ip=[192.168.0.145]
Sep 17 22:06:47 RedHat pop3d: LOGIN FAILED, user=linuxidc@www.codesky.net,ip=[192.168.0.145]
Sep 17 22:06:47 RedHat pop3d: authentication error: Input/outputerror
Sep 17 22:06:47 RedHat pop3d: Connection, ip=[192.168.0.145]
Sep 17 22:06:47 RedHat pop3d: LOGIN FAILED, user=linuxidc@www.codesky.net,ip=[192.168.0.145]
Sep 17 22:06:47 RedHat pop3d: authentication error: Input/outputerror
Sep 17 22:06:48 RedHat pop3d: Connection, ip=[192.168.0.145]
Sep 17 22:06:48 RedHat pop3d: LOGIN FAILED, user=test@yoyo.com,ip=[192.168.0.145]
Sep 17 22:06:48 RedHat pop3d: authentication error: Input/outputerror
解決方法:估計是查詢mysql時,authdaemond出錯了。具體要打開authdaemonrc裏的:
DEBUG_LOGIN=2 原來默認是0
而後看看/var/log/message或/var/log/maillog在認證失敗時有什麼提示。根據提示去檢查問題到底出在哪兒
2.warning: SASL authentication failure: cannot connect to Courierauthdaemond: Permission denied
解決方法:檢查authdaemond的socket所在目錄及其父目錄的屬性是否對smtpd可讀。若是不可讀則出現這個問題(permission的問題)。
3.warning: SASL authentication failure: cannot connect to Courierauthdaemond: No such file or directory
解決方法:檢查/usr/local/lib/sasl2/smtpd.conf,看看是否有多寫一個空格,通常空格很難直觀的發現.
四、查看 /var/log/maillog ,報以下錯誤:
Sep 17 16:04:56 RedHat pop3d: chdir Maildir: No such file ordirectory
Sep 17 16:04:57 RedHat pop3d: Connection, ip=[192.168.0.145]
Sep 17 16:04:57 RedHat pop3d: chdir Maildir: No such file ordirectory
Sep 17 16:17:40 RedHat postfix/smtpd[4481]: connect fromunknown[192.168.0.145]
Sep 17 16:17:40 RedHat postfix/smtpd[4481]: 434823F583:client=unknown[192.168.0.145], sasl_method=LOGIN,sasl_username=linuxidc@www.codesky.net
Sep 17 16:17:40 RedHat postfix/cleanup[4488]: 434823F583:message-id=
Sep 17 16:17:40 RedHat postfix/qmgr[4275]: 434823F583: from=,size=1395, nrcpt=1 (queue active)
Sep 17 16:17:40 RedHat postfix/smtpd[4481]: disconnect fromunknown[192.168.0.145]
Sep 17 16:17:40 RedHat postfix/virtual[4490]: 434823F583: to=,relay=virtual, delay=0.22, delays=0.15/0.05/0/0.02, dsn=2.0.0,status=sent (delivered to maildir)
Sep 17 16:17:40 RedHat postfix/qmgr[4275]: 434823F583:removed
Sep 17 16:04:56 RedHat pop3d: chdir Maildir: No such file ordirectory
Sep 17 16:04:57 RedHat pop3d: Connection, ip=[192.168.0.145]
Sep 17 16:04:57 RedHat pop3d: chdir Maildir: No such file ordirectory
解決方法:authmysqlrc 文件裏 MYSQL_MAILDIR_FIELD 字段有空格。
五、錯誤提示以下
Sep 17 14:24:40 RedHat postfix/trivial-rewrite[3378]: warning: donot list domain linuxidc.com in BOTH mydestination andvirtual_mailbox_domains
解決方法:將 mydestination 設置爲空便可,或徹底註釋也行
附錄: DNS 服務器的配置 DNS服務器採用的是系統自帶的,若是在安裝系統的時候沒有選中安裝的話,如今能夠將 RedHat AS4.0的安裝光碟拿出來(具體哪一張光碟我也不知道,我我的用的系統都是在安裝的時候全選。),mount 上去,而後rpm.安裝過程這裏就免了 首先修改 /etc/named.conf 文件 [root @ www.codesky.net root] # vi /etc/named.conf 其它的不用改,在文件中添加以下幾行 zone "linuxidc.com" IN { typemaster; file"test.zone"; allow-update{ none; }; }; zone "98.168.192.in-addr.arpa" IN { typemaster; file"test.local"; allow-update{ none; }; }; 而後保存退出 在 /var/named/chroot/var/named/目錄下建立 test.zone & test.lcoal 文件,而後編輯,test.zone文件內容以下: $TTL 86400 @ INSOA bv-diannao-004.linuxidc.com. root.linuxidc.com.( 42 ; serial (d.adams) 3H ;refresh 15M ;retry 1W ;expiry 1D) ;minimum INNS bv-diannao-004.linuxidc.com. INA 192.168.98.204 linuxidc.com. INMX 10mail.linuxidc.com. bv-diannao-004 INA 192.168.98.204 mail INA 192.168.98.204 cf-test INA 192.168.101.224 www INCNAME bv-diannao-004.linuxidc.com. test.local 文件內容以下: $TTL 86400 @ INSOA bv-diannao-004.linuxidc.com. root.linuxidc.com.( 42 ; serial (d.adams) 3H ;refresh 15M ;retry 1W ;expiry 1D) ;minimum INNS bv-diannao-004.linuxidc.com. 204 INPTR mail.linuxidc.com. 204 INPTR bv-diannao-004.linuxidc.com. 224.101.168.192 INPTR cf-test.linuxidc.com. 注:具體的值可根據本身的實際狀況進行更改,這裏我就不一一介紹了。若是不明白的地方,你們能夠參考相關的 DNS 的資料。 而後將這兩個文件連接到 /var/named 目錄下 [root @ www.codesky.net root] # ln -s /var/named/chroot/var/named/test.zone/var/named/test.zone [root @ www.codesky.net root] # ln -s /var/named/chroot/var/named/test.local/var/named/test.local 啓動 DNS 服務 [root @ www.codesky.net root] # servicenamed start 查看 DNS 端口是否處於監聽狀態,若是看到端口 53處於監聽狀態,就代表 DNS 服務正常啓動。 [root @ www.codesky.net root] # netstat -tlunp 用 nslookup 測試 DNS 服務是否正常 [root @ www.codesky.net root] # nslookup mail.linuxidc.com Server: 192.168.98.204 Address: 192.168.98.204#53 Name: mail.linuxidc.com Address: 192.168.98.204 以上輸出顯示正常,mail.linuxidc.com 的 ip 地址就是 192.168.98.204