歡迎您光臨本站 註冊首頁

postfix+courier-imap+maildrop+cyrus-sasl+extman搭建mail伺服器

←手機掃碼閱讀     火星人 @ 2014-03-04 , reply:0

postfix+courier-imap+maildrop+cyrus-sasl+extman搭建mail伺服器

本文原址,轉載請註明!
http://bbs.yahunet.com/thread-10482-1-1.html
本文參考了很多google上的文檔,經過實踐測試完成,請大家多多指正。
試驗環境
centos4.5
所用軟體包:
mysql-5.0.67.tar.gz
cyrus-sasl-2.1.22.tar.gz
httpd-2.2.9.tar.gz
php-5.2.6.tar.gz
postfix-2.5.3.tar.gz
courier-authlib-0.61.tar.gz
courier-imap-4.1.0.tar.gz
maildrop-2.0.4.tar.bz2
extman-0.2.5.tar.gz
extmail-1.0.5.tar.gz


開始前請確保您已經配置好指向此郵件伺服器MX記錄及其它DNS設置;本示例中的域名為lin128.cn,郵件伺服器FQDN為mail.lin128.cn,IP地址為192.168.1.66.

1、安裝mysql
# tar -zxvf mysql-5.0.67.tar.gz
# cd mysql-5.0.67
# groupadd mysql
# useradd -g mysql -s /sbin/nologin -M mysql
# ./configure --prefix=/usr/local/mysql --with-charset=gbk--with-extra-charset=all --enable-thread-safe-client--enable-local-infile --with-low-memory
# make && make install
# cp support-files/my-medium.cnf  /etc/my.cnf
# chown -R mysql.mysql /usr/local/mysql/
# /usr/local/mysql/bin/mysql_install_db --user=mysql
# chown -R root.root /usr/local/mysql/
# chown -R mysql.mysql /usr/local/mysql/var/
啟動資料庫服務,並添加到自啟動
# /usr/local/mysql/bin/mysqld_safe --user=mysql &
# cp support-files/mysql.server  /etc/rc.d/init.d/mysqld
# chmod 755 /etc/rc.d/init.d/mysqld
加入自動啟動服務隊列:
# chkconfig --add mysqld
# chkconfig  --level  345  mysqld  on

添加root密碼
# /usr/local/mysql/bin/mysqladmin -u root password "123456"
測試一下:
# /usr/local/mysql/bin/mysql -u root -p
輸入密碼:123456,看能不能進入到資料庫

配置庫文件搜索路徑
# echo "/usr/local/mysql/lib/mysql">>/etc/ld.so.conf
# ldconfig
# ldconfig -v
添加/usr/local/mysql/bin到環境變數PATH中
#echo "export PATH=$PATH:/usr/local/mysql/bin">>/etc/profile
#source /etc/profile
2、安裝apache
安裝Apache有兩個要注意的地方,因為我這裡用的Postfix的後台管理是extman這個程序,而它是通過CGI的方式來進行管理的,所以這裡啟用了suexec的功能,還有一個是關於網站的存放路徑的,如果不指定,那麼在啟用suexec後會出現 suexec-docroot的錯誤.
#tar jxvf httpd-2.2.9.tar.bz2
#cd httpd-2.2.9
#./configure --prefix=/usr/local/www --enable-so --enable-rewrite--enable-mods-shared=all --enable-suexec --with-suexec-caller=daemon--with-suexec-docroot=/var/www   
#make
#make install
#vi /usr/local/www/conf/httpd.conf  
找到DocumentRoot 「/usr/local/apache/htdocs」
修改為:DocumentRoot 「/var/www」(後文中我們還會註釋掉此行,以啟用虛擬主機)

找到<Directory 「/usr/local/apache/htdocs」>
修改為:<Directory 「/var/www」>

找到
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all        //這句改為Allow from all
</Directory>

#mkdir /var/www
#/usr/local/www/bin/apachectl start
添加到自啟動
# cp /usr/local/www/bin/apachectl /etc/rc.d/init.d/httpd
然後 vi /etc/rc.d/init.d/httpd 添加(#!/bin/sh下面)
# chkconfig: 2345 10 90
# description: Activates/Deactivates Apache Web Server
最後,運行chkconfig把Apache添加到系統的啟動服務組裡面:
# chkconfig --add httpd
# chkconfig httpd on
3、安裝PHP
# tar -zxvf php-5.2.6.tar.gz
# cd php-5.2.6
# ./configure --prefix=/usr/local/php--with-apxs2=/usr/local/www/bin/apxs --with-mysql=/usr/local/mysql/--with-mysqli=/usr/local/mysql/bin/mysql_config--with-config-file-path=/usr/local/php --with-zlib--enable-mbstring=all
# make && make install
# cp php.ini-dist /usr/local/php/php.ini
# vi /usr/local/www/conf/httpd.conf
添加一句
AddType application/x-httpd-php .php .phtml
找到DirectoryIndex index.html
在後面添加index.php

4、安裝courier-authlib
需要先安裝一下expect包
#groupadd -g 1000 vmail
#useradd -g 1000 -u 1000 -M -s /sbin/nologin vmail
# tar -jxvf courier-authlib-0.61.0.tar.bz2
# cd courier-authlib-0.61
#./configure --prefix=/usr/local/courier-authlib --without-stdheaderdir--sysconfdir=/etc --without-authuserdb --without-authpam--without-authldap --without-authpwd --without-authshadow--without-authvchkpw --without-authpgsql --without-authcustom--with-authmysql --with-mysql-libs=/usr/local/mysql/lib/mysql--with-mysql-includes=/usr/local/mysql/inculde/mysql --with-redhat--with-mailuser=vmail --with-mailgroup=vmail
# make && make install
# make install-migrate
# make install-configure
更新lib庫文件搜索路徑
# echo "/usr/local/courier-authlib/lib/courier-authlib/">>/etc/ld.so.conf
# ldconfig
# ldconfig -v
# vi /etc/authlib/authdaemonrc
authmodulelist="authmysql"
authmodulelistorig="authmysql"
daemons=10
DEBUG_LOGIN=2
# vi  /etc/authlib/authmysqlrc
修改以下內容
MYSQL_SERVER            localhost
MYSQL_USERNAME          extmail
MYSQL_PASSWORD          extmail
MYSQL_SOCKET            /tmp/mysql.sock  
MYSQL_PORT              3306
MYSQL_DATABASE          extmail
MYSQL_USER_TABLE        mailbox
MYSQL_CRYPT_PWFIELD     password
MYSQL_UID_FIELD         "1000"
MYSQL_GID_FIELD         "1000"
MYSQL_LOGIN_FIELD       username
MYSQL_HOME_FIELD  concat("/var/mailbox/",homedir)
MYSQL_MAILDIR_FIELD     concat("/var/mailbox/",maildir)
MYSQL_QUOTA_FIELD    concat(quota,"S")
啟動及加入到自動運行隊列
# cp courier-authlib.sysvinit /etc/rc.d/init.d/courier-authlib
# chmod 755 /etc/rc.d/init.d/courier-authlib
# chkconfig --add courier-authlib
# chkconfig courier-authlib on
# service courier-authlib start
# chmod a+x /usr/local/courier-authlib/var/spool/authdaemon

5、安裝courier-imap
# tar -jxvf courier-imap-4.1.3.tar.bz2  
# cd courier-imap-4.1.3
# ./configure --prefix=/usr/local/courier-imap --with-redhat--enable-unicode --disable-root-check --with-trashquota --without-ipv6COURIERAUTHCONFIG="/usr/local/courier-authlib/bin/courierauthconfig"
# make && make install
# make install-configure
編輯配置文件啟用pop3及imap
# vi /usr/local/courier-imap/etc/pop3d
POP3DSTART=YES
# vi /usr/local/courier-imap/etc/imapd
IMAPDSTART=YES
啟動及加入自動運行隊列
# cp courier-imap.sysvinit /etc/rc.d/init.d/courier-imapd
# chmod 755 /etc/rc.d/init.d/courier-imapd
# chkconfig --add courier-imapd
# chkconfig courier-imapd on
# service courier-imapd start

6、安裝cyrus-sasl
先卸載本機自帶的sasl
# rpm -qa |grep cyrus-sasl |xargs rpm -e --nodeps
# rm -rf /usr/lib/sasl
# rm -rf /usr/lib/sasl2
# tar -zxvf cyrus-sasl-2.1.22.tar.gz
# cd cyrus-sasl-2.1.22
# ./configure --enable-plain --enable-cram --enable-digest--enable-login --enable-sql --disable-anon --disable-ntlm--disable-gssapi --disable-krb4 --disable-otp --disable-srp--disable-srp-setpass --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
# make && make install
共享鏈接庫 :
# ln -sv /usr/local/lib/sasl2  /usr/lib/sasl2
# echo "/usr/local/lib">>/etc/ld.so.conf
# ldconfig
# ldconfig -v
建立smtpd用戶認證的配置文件:
# vi /usr/local/lib/sasl2/smtpd.conf
pwcheck_method:authdaemond
mech_list:PLAIN LOGIN
log_level:3
authdaemond_path:/usr/local/courier-authlib/var/spool/authdaemon/socket      
創建運行時需要的目錄
# mkdir -pv /var/state/saslauthd      
啟動並測試
# /usr/local/sbin/saslauthd -a shadow pam
# /usr/local/sbin/testsaslauthd -u root -p 123456  //123456為root的密碼

開機自動啟動
# echo "/usr/local/sbin/saslauthd -a shadow pam">>/etc/rc.local


7、安裝postfix
首先卸載系統自帶的sendmail
# service sendmail stop
# rpm -qa |grep sendmail |xargs rpm -e --nodeps
# groupadd -g 105 postfix
# useradd -g 105 -u 105 -M -s /sbin/nologin postfix
# groupadd -g 106 postdrop
# useradd -g 106 -u 106 -M -s /sbin/nologin postdrop
# tar -zxvf postfix-2.5.5.tar.gz
# cd postfix-2.5.5
# make makefiles "CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include/mysql-DUSE_CYRUS_SASL -DUSE_SASL_AUTH -I/usr/local/include/sasl""AUXLIBS=-L/usr/local/mysql/lib/mysql -lmysqlclient -lz -lm-L/usr/local/lib -lsasl2"
# make
# make install
按照以下的提示輸入相關的路徑([]號中的是預設值,」]」后的是輸入值)
install_root: [/]
tempdir: /tmp  //其他的都是默認
config_directory:
command_directory:
daemon_directory:
data_directory:
html_directory:
mail_owner:
mailq_path:
manpage_directory:
newaliases_path:
queue_directory:
readme_directory:
sendmail_path:
setgid_group:

生成別名二進位文件
# newaliases
建立郵件存放目錄
# mkdir -pv /var/mailbox
# chown -R vmail.vmail /var/mailbox

建立配置文件
# cd /etc/postfix/
# mv main.cf main.cf.old
# vi main.cf
添加下面的內容
#=====================BASE=========================
myhostname = mail.lin128.cn
mydomain = lin128.cn
myorigin = $mydomain
mydestination =
mynetworks = 192.168.100.0/24, 127.0.0.0/8
inet_interfaces = all   
readme_directory = no
sample_directory = /etc/postfix
sendmail_path = /usr/sbin/sendmail
html_directory = no
setgid_group = postdrop
command_directory = /usr/sbin
manpage_directory = /opt/postfix/man
daemon_directory = /usr/libexec/postfix
newaliases_path = /usr/bin/newaliases
mailq_path = /usr/bin/mailq
queue_directory = /var/spool/postfix
mail_owner = postfix

#=====================Vritual Mailbox settings=========================
virtual_mailbox_base = /var/mailbox
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_alias_domains =
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_uid_maps = static:1000
virtual_gid_maps = static:1000
virtual_transport = maildrop:
maildrop_destination_recipient_limit = 1
maildrop_destination_concurrency_limit = 1

#====================QUOTA========================
message_size_limit = 52428800
mailbox_size_limit = 209715200
virtual_mailbox_limit = 209715200
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = Sorry, the user's maildir has overdrawn his diskspace quota, please try again later.
virtual_overquota_bounce = yes

#====================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
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $mydomain
smtpd_sasl_security_options = noanonymous
smtpd_sasl_application_name = smtpd
smtpd_banner = Welcome to our $myhostname ESMTP,Warning: Version not Available!



添加為支持虛擬域和虛擬用戶所用到的配置文件
//直接在extman中複製過去就可以了
# tar zxvf extman-0\\.2.5.tar.gz
# cd extman-0.2.4
# cp docs/mysql_virtual_* /etc/postfix/
啟動postfix並加入到自啟動
# /usr/sbin/postfix start
# echo "/usr/sbin/postfix start">>/etc/rc.local

8、安裝maildrop
# tar jxvf maildrop-2.0.4.tar.bz2
# cd maildrop-2.0.4
# ln -sv /usr/local/courier-authlib/bin/courierauthconfig /usr/bin/courierauthconfig
#./configure --prefix=/usr/local/maildrop--enable-sendmail=/usr/sbin/sendmail --enable-trusted-users="rootvmail" --enable-syslog=1 --enable-maildirquota--enable-maildrop-uid=1000 --enable-maildrop-gid=1000 --with-trashquota--with-dirsync
註:我的安裝過程出現了pcre.h的錯誤,安裝一下pcre-devel那個rpm包就可以了
# make && make install
# cp /usr/local/maildrop/bin/maildrop /usr/local/bin/
查看一下安裝結果
# maildrop -v
maildrop 2.0.4 Copyright 1998-2005 Double Precision, Inc.
GDBM extensions enabled.
Courier Authentication Library extension enabled.  //要保證這一行顯示
Maildir quota extension enabled.
This program is distributed under the terms of the GNU General Public
License. See COPYING for additional information.
配置maildrop的日誌文件
# vi /etc/maildroprc
logfile "/var/log/maildrop.log"
VERBOSE="4"
# touch /var/log/maildrop.log
# chown vmail.vmail /var/log/maildrop.log

配置Postfix
# vi /etc/postfix/master.cf
去掉下面兩行前面的#
maildrop  unix  -       n       n       -       -       pipe
flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}
第二行改為
flags=DRhu user=vuser argv=/usr/local/bin/maildrop -w 90 -d ${user}@${nexthop} ${recipient} ${user} ${extension} {nexthop}



9、安裝配置Extmail和Extman   
# tar -zxvf extmail-1\\.0.5.tar.gz
# mkdir /var/www/extsuite
# mv extmail-1.0.5 /var/www/extsuite/extmail
# cd /var/www/extsuite/extmail/
# cp webmail.cf.default webmail.cf
# vi webmail.cf
部分修改選項的說明:

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

修改 cgi執行文件屬主為apache運行身份用戶:
# chown -R vmail.vmail /var/www/extsuite/extmail/cgi/

安裝配置Extman
# mv extman-0.2.5 /var/www/extsuite/extman
修改配置文件以符合本例的需要:
# 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建立資料庫:

# cd /var/www/extsuite/extman
# mysql -u root -p <docs/extmail.sql
# mysql -u root -p <docs/init.sql

修改cgi目錄的屬主:
# chown -R vmail.vmail /var/www/extsuite/extman/cgi/

extman和extmail需要Perl-Unix-Syslog、DBD-Mysql和perl-GD的支持,可以到網上下載到,提示個地址給大家http://dag.wieers.com/rpm/packages/和http://search.cpan.org下載
DBD-Mysql目前最新的版本為DBD-mysql-4.006,但它和系統中的perl結合使用時會造成extmail無法正常使用,因此我們採用3的版本:
# rpm -ivh perl-Unix-Syslog-1.0-1.el4.rf.i386.rpm
# rpm -ivh perl-GD-2.35-1.el4.rf.i386.rpm
# rpm -ivh --nodeps perl-DBI-1.602-1.el4.rf.i386.rpm
# tar -zxvf DBD-mysql-3.0008_1.tar.gz
# cd DBD-mysql-3.0008_1   
# perl Makefile.PL
# make
# make install

建立extman和extmail的目錄
# mkdir /tmp/extman
# chown -R vmail.vmail /tmp/extman/
# mkdir /tmp/extmail
# chown -R vmail.vmail /tmp/extmail/

apache相關配置
# vi /usr/local/www/conf/httpd.conf
去掉這行前面的#號
Include conf/extra/httpd-vhosts.conf

# vi /usr/local/www/conf/extra/httpd-vhosts.conf
去後面的<VirtualHost>兩段
<VirtualHost *:80>
....
</VirtualHost>
添加下面內容
<VirtualHost *:80>
ServerName mail.lin128.cn
DocumentRoot /var/www/extsuite/
ScriptAlias /extmail/cgi/ /var/www/extsuite/extmail/cgi/
Alias /extmail/ /var/www/extsuite/extmail/html/
ScriptAlias /extman/cgi/ /var/www/extsuite/extman/cgi/
Alias /extman/ /var/www/extsuite/extman/html/
SuexecUserGroup vmail vmail
</VirtualHost>

重啟一下apache伺服器
# /usr/local/www/bin/apachectl restart


到此,就全配置完了
在瀏覽器中輸入http://mail.lin128.cn/extman進入管理界面,默認內置賬號是root@extmail.org,密碼是extmail*123*,添加一個域和用戶
在http://mail.lin128.cn/extmail中登陸

圖形化日誌
1、安裝gd-2.0.35
# tar -jxvf gd-2.0.35.tar.bz2
# cd gd-2.0.35
# ./configure --with-png --with-freetype --with-jpeg --with-zlib --with-fontconfig
# make
如果GD報錯:configure.ac:64: warning: macro `AM_ICONV' not found in library
你就make clean一下,然後再make
如果你安裝別的出現libtool沒有找到,你就從/usr/bin/libtool cp 一個過來用就好了!
# make install
2、安裝Time-HiRes
# tar -zxvf Time-HiRes-1.9715.tar.gz
# cd Time-HiRes-1.9715
# perl Makefile.PL
# make
# make test
# make install
3、安裝File-Tail
# tar -zxvf File-Tail-0.99.3.tar.gz
# cd File-Tail-0.99.3
# perl Makefile.PL
# make
# make test
# make install
4、安裝rrdtool(用最新版的編譯沒通過)
# tar -zxvf rrdtool-1.2.26.tar.gz
# cd rrdtool-1.2.26
# ./configure --prefix=/usr/local/rrdtool --enable-perl-site-install=/usr/lib/perl5/
# make
make的時候出現錯誤,安裝一下tcl-devel
# make install
5、複製mailgraph_ext到/usr/local,並啟動之
# cp -r /var/www/extsuite/extman/addon/mailgraph_ext  /usr/local  
# /usr/local/mailgraph_ext/mailgraph-init  start
# /usr/local/mailgraph_ext/qmonitor-init  start

添加到自動啟動隊列
echo "/usr/local/mailgraph_ext/mailgraph-init start" >> /etc/rc.local
echo "/usr/local/mailgraph_ext/qmonitor-init start" >> /etc/rc.local
《解決方案》

呵呵,不錯
《解決方案》

回復 #2 ruochen 的帖子

樓主弄一下格式。這樣讀起來太累了。

[ 本帖最後由 scyzxp 於 2010-1-19 13:52 編輯 ]

[火星人 ] postfix+courier-imap+maildrop+cyrus-sasl+extman搭建mail伺服器已經有598次圍觀

http://coctec.com/docs/service/show-post-19084.html