POSTFIX 郵件系統

本文介紹Postfix郵件系統的安裝與配置. 如有疑問可以留言.

本文主要內容是poftfix+mysql 實現虛擬用戶.

http://wiki.extmail.org/extmail_solution_for_linux_centos-5


平臺:

Centos 5.6 64位
所需軟件:

Apache:2.2.15
Mysql:5.1.36
Php:5.2.13
Postfix:2.8.0
Courier-authlib:0.63
Cyrus-sasl:2.1.22
BerkeleyDB:4.5.20
Courier-IMAP:4.9.3
Maildrop:2.5.4
Extman:1.1
Extmail:1.2
Rrdtool:1.4.3
Slockd:0.99
先安裝 Apache,Mysql,Php   

Mysql 虛擬用戶使用.

Apache ,php ,Mysql  extmail Web管理臺需要.

Apache,Mysql,Php的安裝這裏不做介紹,它們的安裝文檔網上很多,本人blog也有安裝文檔.

這裏只介紹下Apache,Mysql,Php的編譯參數.

Apache編譯參數: (關於suexec可以看下http://lamp.linux.gov.cn/Apache/ApacheMenu/suexec.html)

./configure --prefix=/usr/local/apache2.2.15 --with-mpm=worker --enable-so --enable-rewrite --enable-headers --enable-expires --enable-suexec --with-suexec-caller=nobody --with-suexec-docroot=/opt/www

Mysql編譯參數:

#./configure --prefix=/usr/local/mysql --datadir=/opt/mydata --with-charset=utf8 --with-extra-charsets=complex --enable-thread-safe-client --with-big-tables --with-ssl --with-embedded-server --enable-local-infile --enable-assembler --with-plugins=innobase --with-plugins=partition
php編譯參數:

#./configure --prefix=/usr/local/php-5.2.13   --with-config-file-path=/usr/local/php-5.2.13 --with-apxs2=/usr/local/apache2.2.15/bin/apxs --with-bz2 --with-curl --with-curlwrappers --enable-ftp  --enable-sockets --disable-ipv6 --with-gd --with-jpeg-dir=/usr/local --with-png-dir=/usr/local --with-freetype-dir=/usr/local --enable-gd-native-ttf --with-iconv-dir=/usr/local --enable-mbstring --enable-calendar --with-gettext --with-libxml-dir=/usr/local  --with-zlib --enable-zend-multibyte --with-pdo-mysql=/usr/local/mysql  --with-mysqli=/usr/local/mysql/bin/mysql_config --with-mysql=/usr/local/mysql

說明:
/usr/local/src/tarbag/    \\源碼包存放的位置
/usr/local/src/software/   \\源碼包解壓出來存放的位置
以下安裝建立在以上所需條件.所有安裝爲源碼安裝,源碼包放在tarbag目錄下,解壓後放在software目錄下:

首先安裝courier-authlib
下載地址:http://prdownloads.sourceforge.net/courier

#cd /usr/local/src/tarbag
#wget http://sourceforge.net/projects/courier/files/authlib/0.63.0/courier-authlib-0.63.0.tar.bz2/download
#tar jvxf courier-authlib-0.63.tar.bz2 -C ../software/
安裝之前添加postfix和maildrop相關的用戶&用戶組
#groupadd postfix -g 1000
#groupadd postdrop -g 1002
#useradd postfix -u 1000 -g postfix -G postdrop
#groupadd vmail -g 1001
#useradd vmail -u 1001 -g 1001
#./configure    --prefix=/usr/local/courier-authlib --with-mailuser=vmail --with-mailgroup=vmail   --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/include/mysql --with-redhat    --with-authmysqlrc=/etc/authmysqlrc --with-authdaemonrc=/etc/authdaemonrc    CFLAGS="-march=x86-64 -O2 -fexpensive-optimizations" CXXFLAGS="-march=x86-64 -O2 -fexpensive-optimizations"
#make
#make install
1.如果courier-authlib安裝到非標準位置(例如安裝到/usr/local下),一定記得在./configure時增加--without-stdheaderdir,這樣以後在編譯Courier-IMAP和maildrop的時候,不用特別指定courier-authlib的庫文件位置

2.投遞過程出現如下錯誤:

May 30 16:08:27 hsf postfix/pipe[25422]: D822E210104: to=<[email protected]>, relay=maildrop, delay=1248, status=deferred (temporary failure. Command output: ERR: authdaemon: s_connect() failed: Permission denied /usr/local/bin/maildrop: Temporary authentication failure. )
說明編譯authlib時沒有指定maildrop的用戶和組,加上--with-mailuser和--with-mailgroup 指定用戶和組後重編譯安裝.

增加"/usr/local/courier-authlib/lib/courier-authlib"到"/etc/ld.so.conf",並執行ldconfig命令。
#echo  "/usr/local/courier-authlib/lib/courier-authlib" >> /etc/ld.so.conf
#ldconfig -v 
#cp /etc/authdaemonrc.dist  /etc/authdaemonrc
#vi /etc/authdaemonrc  
authmodulelist="authmysql"
authmodulelistorig="authmysql"
daemons=5
authdaemonvar=/usr/local/courier-authlib/var/spool/authdaemon
DEBUG_LOGIN=0
DEFAULTOPTIONS=""
LOGGEROPTS=""
#vi /etc/authmysqlrc
MYSQL_SERVER            localhost
MYSQL_USERNAME          extmail
MYSQL_PASSWORD          extmail
MYSQL_SOCKET           /tmp/mysql.sock
MYSQL_PORT              3306
MYSQL_OPT               0
MYSQL_DATABASE          extmail
MYSQL_USER_TABLE        mailbox
MYSQL_CRYPT_PWFIELD     password
MYSQL_UID_FIELD         '1001'
MYSQL_GID_FIELD         '1001'
MYSQL_LOGIN_FIELD       username
MYSQL_HOME_FIELD        concat('/opt/mailbox/',homedir)
MYSQL_NAME_FIELD        name
MYSQL_MAILDIR_FIELD     concat('/opt/mailbox/',maildir)
啓動courier-authlib

#/usr/local/courier-authlib/sbin/authdaemond start
安裝 cyrus-sasl:

安裝 cyrun-sasl  先把系統自帶的給卸載了.

#rpm -e `rpm -qa | grep sasl` 
如果卸載不掉 加上 --nodeps --allmatches選項強制卸載

下載地址:

ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/

#wget ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl-2.1.22.tar.gz
安裝時最新版本2.1.22
#tar zxvf cyrus-sasl-2.1.22.tar.gz  -C ../software/
#cd ../software/cyrus-sasl-2.1.22/
#./configure --prefix=/usr/local/sasl2 --with-mysql=/usr/local/mysql --disable-sample --disable-saslauthd --disable-pwcheck --disable-cram --disable-digest --disable-krb4 --disable-gssapi --disable-anon --enable-plain --enable-login --enable-sql --disable-ntlm --disable-otp --disable-srp --disable-srp-setpass --with-authdaemond=/usr/local/courier-authlib/var/spool/authdaemon/socket --with-mysql-includes=/usr/local/mysql/include/ --with-mysql-libs=/usr/local/mysql/lib/mysql
#make
#make install
#ln -s /usr/local/sasl2/lib/sasl2 /usr/lib/  //這步一定要做..以下步驟做了以後Postfix還是找不到正確的sasl 所以會報驗證錯誤的信息.  

添加以下兩行:
/usr/local/sasl2/lib/sasl2
/usr/local/sasl2/lib
到"/etc/ld.so.conf",並執行ldconfig命令.
#vi /usr/local/sasl2/lib/sasl2/smtpd.conf    //這個文件是自己創建的
pwcheck_method: authdaemond
log_level: 3
mech_list: PLAIN LOGIN
authdaemond_path:/usr/local/courier-authlib/var/spool/authdaemon/socket  //這個目錄與編譯時候--with-authdaemond 選項目錄相同
注意,這個文件的編輯不要多寫一個空格,否則會出現smtp驗證不過的問題

創建運行時需要的目錄並調試啓動

# mkdir -pv /var/state/saslauthd      
# /usr/local/sasl2/sbin/saslauthd  -a  shadow  pam  -d
如果沒有報錯.crtl+c結束掉進程 .

啓動並測試
# /usr/local/sasl2/sbin/saslauthd -a shadow pam
# /usr/local/sasl2/sbin/testsaslauthd -u root -p root用戶密碼
開機自動啓動
# echo "/usr/local/sasl2/sbin/saslauthd -a shadow pam">>/etc/rc.local

安裝BerkeleyDB
卸載系統自帶的DB4
#tar zxvf db-4.5.20.tar.gz
#cd db-4.5.20/build_unix
#../dist/configure --prefix=/usr/local/BerkeleyDB
#make
#make install
修改相應的頭文件指向
# mv  /usr/include/db4  /usr/inculde/db4.OFF
# rm  /usr/include/db_cxx.h
# rm  /usr/include/db.h
# rm  /usr/include/db_185.h
# ln -sv /usr/local/BerkeleyDB/include  /usr/include/db4
# ln -sv /usr/local/BerkeleyDB/include/db.h  /usr/include/db.h
# ln -sv /usr/local/BerkeleyDB/include/db_cxx.h  /usr/include/db_cxx.h
配置庫文件搜索路徑
# echo "/usr/local/BerkeleyDB/lib" >> /etc/ld.so.conf
# ldconfig –v
安裝postfix

關閉redhat 系統自帶的sendmail

#chkconfig --level 2345 sendmail off
下載地址:

http://www.postfix.org

#wget ftp://ftp.cuhk.edu.hk/pub/packages/mail-server/postfix/official/postfix-2.8.0.tar.gz
下載VDA補丁,使postfix支持磁盤限額

#wget http://vda.sourceforge.net/VDA/postfix-vda-2.8.0.patch
postfix版本:2.8.0,VDA也要下載相應版本補丁.

#tar xvzf postfix-2.8.0.tar.gz -C ../software
#mv postfix-vda-2.8.0.patch ../software/postfix-2.8.0/
#cd ../software/postfix-2.8.0/
#make clean
#make tidy
#patch -p1 < postfix-vda-2.8.0.patch 
#make -f Makefile.init Makefiles 'CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include/mysql -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/local/sasl2/include/sasl' 'AUXLIBS=-L/usr/local/mysql/lib/mysql -lmysqlclient -lz -lm -L/usr/local/sasl2/lib   -lsasl2 -L/usr/local/BerkeleyDB/lib'
#make
#make install
執行“make install”命令後,期間會需要設置如下一些安裝參數,一般都使用默認設置(按回車),如果有特殊需要,直接在後面輸入自己的設置,回車即可。
install_root: [/]                    //指定系統的根目錄
tempdir: [/usr/local/src/software/postfix-2.8.0/]   //指定postfix-install腳本使用的臨時文件目錄
config_directory: [/etc/postfix]       //設置Postfix的配置文件目錄
daemon_directory: [/usr/libexec/postfix]
command_directory: [/usr/sbin]      //設置Postfix命令的存放目錄
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]
manpage_directory: [/usr/local/man]
readme_directory: [no]
下面是我的配置目錄:

配置文件目錄:/etc/postfix/

服務程序目錄:/usr/local/postfix/libexec/

郵件隊列目錄:/var/spool/postfix/

郵件管理程序目錄:/usr/local/postfix/sbin/

日誌文件目錄: /var/log/maillog

#mv /etc/aliases /etc/aliases.old
#ln -s /etc/postfix/aliases /etc/aliases
最後:

生成別名二進制文件,這個步驟如果忽略,會造成postfix效率極低:

#/usr/bin/newaliases 

如果編譯時候沒有加-L/usr/local/BerkeleyDB/lib  newaliases會去找系統自帶的4.3.29的庫.會報錯.

檢驗postfix是否支持sasl認證,如果輸出爲以下結果,則支持:

#/usr/local/postfix/sbin/postconf   -a
cyrus
dovecot
#/usr/local/postfix/sbin/postconf -m | grep mysql
mysql
沒有的話需重新編譯postfix如果postconf -a沒有cyrus的話注意看下postfix 編譯的關於cyrus-sasl的參數有沒正確.再看下cyrus-sasl安裝好了沒有 .

下面添加生成Mysql驗證的一些配置文件:

#touch /etc/postfix/mysql_virtual_alias_maps.cf
#touch /etc/postfix/mysql_virtual_domains_maps.cf
#touch /etc/postfix/mysql_virtual_mailbox_maps.cf
#touch /etc/postfix/mysql_virtual_limit_maps.cf

修改postfix配置文件:
#vi /etc/postfix/main.cf
queue_directory = /var/spool/postfix
command_directory = /usr/local/postfix/sbin
daemon_directory = /usr/local/postfix/libexec
myhostname = mail.hsf.com
mydomain = hsf.com
inet_interfaces = all
mydestination = 
unknown_local_recipient_reject_code = 550
mynetworks = 168.100.189.0/28, 127.0.0.0/8, 10.9.0.0/24, 10.0.0.0/24
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
debug_peer_level = 2
debugger_command =
	 PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
	 ddd $daemon_directory/$process_name $process_id & sleep 5
sendmail_path = /usr/sbin/sendmail
newaliases_path = /usr/bin/newaliases
mailq_path = /usr/bin/mailq
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/local/postfix/man
sample_directory = /etc/postfix
readme_directory = no
##====================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 = $myhostname ESMTP $mail_name ($mail_version)
#================ Virtual Mailbox Settings =====================#
virtual_mailbox_base = /opt/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:1001
virtual_gid_maps = static:1001
virtual_transport = maildrop
maildrop_destination_recipient_limit = 1
maildrop_destination_concurrency_limit = 1
message_size_limit = 14336000
virtual_mailbox_limit = 20971520
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = Sorry, the user's maildir has overdrawn his diskspace quota, please Tidy your mailbox and try again later.
virtual_overquota_bounce = yes


編輯前面生成的一些Mysql相關的cf配置文件:

#vi /etc/postfix/mysql_virtual_alias_maps.cf
user = extmail
password = extmail
hosts = localhost
dbname = extmail
table = alias
select_field = goto
where_field = address
additional_conditions = AND active = '1'
=================================
#vi /etc/postfix/mysql_virtual_domains_maps.cf
user = extmail
password = extmail
hosts = localhost
dbname = extmail
table = domain
select_field = description
where_field = domain
additional_conditions = AND active = '1'
=================================
#vi /etc/postfix/mysql_virtual_mailbox_maps.cf
user = extmail
password = extmail
hosts = localhost
dbname = extmail
table = mailbox
select_field = maildir
where_field = username
additional_conditions = AND active = '1'
=================================
#vi /etc/postfix/mysql_virtual_limit_maps.cf
user = extmail
password = extmail
hosts = localhost
dbname = extmail
table = mailbox
select_field = quota
where_field = username
additional_conditions = AND active = '1'
啓動和停止postfix服務:
#/usr/local/postfix/sbin/postfix start
#/usr/local/postfix/sbin/postfix stop
安裝Courier-IMAP

下載地址:

http://prdownloads.sourceforge.net/courier

目前最新版4.9.3

#wget http://sourceforge.net/projects/courier/files/imap/4.9.3/courier-imap-4.9.3.tar.bz2/download
#tar jvxf courier-imap-4.9.3.tar.bz2 -C ../software/
#cd ../software/courier-imap-4.9.3/
#./configure --prefix=/usr/local/courier-imap --with-redhat --enable-unicode --disable-root-check --with-trashquota --without-ipv6 CPPFLAGS='-I/usr/local/courier-authlib/include' COURIERAUTHCONFIG='/usr/local/courier-authlib/bin/courierauthconfig'
#####CPPFLAGS='-I/usr/local/courier-authlib/include'      如果編譯courier-authlib沒有安裝在默認路徑,必須指定這個,如果之前編譯courier-authlib加了--without-stdheaderdir,就不需要指定了.
沒有加COURIERAUTHCONFIG='/usr/local/courier-authlib/bin/courierauthconfig'會出現:
checking for courierauthconfig... no
configure: WARNING: === Courier authentication library not found.
configure: WARNING: === You need to download and install
configure: WARNING: === http://www.courier-mta.org/download.php#authlib first.
configure: WARNING: === If courier-authlib is installed in a non-default
configure: WARNING: === directory, set the COURIERAUTHCONFIG environment
configure: WARNING: === variable to the full path to the courierauthconfig
configure: WARNING: === binary and rerun this configure script.
configure: WARNING:
configure: error: courierauthconfig not found
解決方法
#export    COURIERAUTHCONFIG=/usr/local/courier-authlib/bin/courierauthconfig
再執行configure.命令
#make
#make install
建立配置文件
#cd /usr/local/courier-imap/etc
#ls *.dist | awk -F"." '{print "cp "$0" "$1""}' | sh
打開pop3,imapd支持,修改MAILPATH
#vi /usr/local/courier-imap/etc/pop3d
POP3DSTART=YES
MAILDIRPATH=/opt/mailbox
#vi /usr/local/courier-imap/etc/imapd
IMAPDSTART=YES
MAILPATH=/opt/mailbox
加入開機啓動
#cp courier-imap.sysvinit /etc/init.d/imapd
#chmod 755 /etc/init.d/imapd
#chkconfig --add imapd
#chkconfig --level 2345 imapd on
#service imapd start
檢測:
#netstat -tnl |egrep "110|143"
安裝maildrop

下載地址:http://sourceforge.net/projects/courier/files/maildrop/

目前最新版本:2.5.4

http://sourceforge.net/projects/courier/files/maildrop/2.5.4/maildrop-2.5.4.tar.bz2/download

courier-authlib的頭文件及庫文件鏈接至/usr目錄(編譯maildrop時會到此目錄下找此些相關的文件):

# ln -sv /usr/local/courier-authlib/bin/courierauthconfig   /usr/bin
# ln -sv /usr/local/courier-authlib/include/*   /usr/include
1、maildrop需要pcre的支持,因此,接下來將首先安裝pcre

#tar zxvf pcre-7.9.tar.gz  -C ../software/
# cd ../software/pcre-7.9/
# ./configure
# make 
# make check
# make install
# tar jxvf maildrop-2.5.4.tar.bz2  -C ../software/
#cd ../software/maildrop-2.5.4/
# cd maildrop-2.5.4
# ./configure --enable-sendmail=/usr/sbin/sendmail  --enable-trusted-users='root vmail' --enable-syslog=1 --enable-maildirquota  --enable-maildrop-uid=1001  --enable-maildrop-gid=1001 --with-trashquota --with-dirsync
# make
# make install

檢查安裝結果,請確保有"Courier Authentication Library extension enabled."一句出現:

# maildrop -v
maildrop 2.5.4 Copyright 1998-2005 Double Precision, Inc.  ///注意看下這個版本是不是2.5.4是否是現在安裝的.如果不是的話可能就是系統自帶的.要把系統自帶的卸載了再安裝一遍.或者把/usr/local/bin/maildrop刪了.再安裝一遍也可以 .
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.

2、新建其配置文件/etc/maildroprc文件,首先指定maildrop的日誌記錄位置:

# vi /etc/maildroprc
添加:
logfile "/var/log/maildrop.log" 
# touch /var/log/maildrop.log
# chown vmail.vmail /var/log/maildrop.log
3、配置Postfix

編輯master.cf

# vi /etc/postfix/master.cf
啓用如下兩行
maildrop  unix  -       n       n       -       -       pipe
   flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient} //注意:定義transport的時候,即如上兩行中的第二行,其參數行必須以空格開頭,否則會出錯。

編輯main.cf

# vi /etc/postfix/main.cf
virtual_transport = maildrop
virtual_uid_maps = static:1001
virtual_gid_maps = static:1001
4、編輯/etc/authmysqlrc

# vi /etc/authmysqrc
MYSQL_UID_FIELD  '1001'
MYSQL_GID_FIELD  '1001'
5、編輯/etc/httpd/httpd.conf,修改運行用戶:

如果啓用了suexec的功能,則將虛擬主機中指定的

SuexecUserGroup vmail vmail

如果沒有使用上面的功能,則修改UserGroup指令後的用戶爲vmail

將前文中的如下項

User postfix
Group postfix 
修改爲:

User vmail
Group vmail
6、將用戶郵件所在的目錄/opt/mailbox和extman的臨時目錄/tmp/extman的屬主和屬組指定爲vmail
#mkdir /tmp/extman
#chown -R vmail.vmail /opt/mailbox
#chown -R vmail.vmail /tmp/extman
安裝extman
#tar zxvf extman-1.1.tar.gz  -C ../software/
#mv ../software/extman-1.1/ /opt/www/extman
#cd /opt/www/extman/
#chown -R vmail.vmail /opt/www/extman
#mv  webman.cf.default webman.cf
修改extman配置文件
#vi webman.cf
SYS_CONFIG = /opt/www/extman/
SYS_LANGDIR = /opt/www/extman/lang
SYS_TEMPLDIR = /opt/www/extman/html
SYS_MAILDIR_BASE = /opt/mailbox
SYS_SHOW_WARN = 0
SYS_SESS_DIR = /tmp/extman/
SYS_CAPTCHA_ON = 1
SYS_CAPTCHA_KEY = r3s9b6a7
SYS_CAPTCHA_LEN = 6
SYS_PURGE_DATA = 0
SYS_PSIZE = 20
SYS_APP_TYPE = ExtMan
SYS_TEMPLATE_NAME = default
SYS_DEFAULT_EXPIRE = 1y
SYS_GROUPMAIL_SENDER = [email protected]
SYS_DEFAULT_SERVICES = webmail,smtpd,smtp,pop3,netdisk
SYS_ISP_MODE = no
SYS_DOMAIN_HASHDIR = yes
SYS_DOMAIN_HASHDIR_DEPTH = 2x2
SYS_USER_HASHDIR = yes
SYS_USER_HASHDIR_DEPTH = 2x2
 
SYS_MIN_UID = 500
SYS_MIN_GID = 100
SYS_DEFAULT_UID = 1001
SYS_DEFAULT_GID = 1001
SYS_QUOTA_MULTIPLIER = 1048576
SYS_QUOTA_TYPE = courier
SYS_DEFAULT_MAXQUOTA = 500
SYS_DEFAULT_MAXALIAS = 100
SYS_DEFAULT_MAXUSERS = 100
SYS_DEFAULT_MAXNDQUOTA = 500
SYS_USER_DEFAULT_QUOTA = 5
SYS_USER_DEFAULT_NDQUOTA = 5
SYS_USER_DEFAULT_EXPIRE = 1y
SYS_BACKEND_TYPE = mysql
SYS_CRYPT_TYPE = md5crypt
SYS_MYSQL_USER = extmail
SYS_MYSQL_PASS = extmail
SYS_MYSQL_DB = extmail
SYS_MYSQL_HOST = localhost
SYS_MYSQL_SOCKET = /tmp/mysql.sock
SYS_MYSQL_TABLE = manager
SYS_MYSQL_ATTR_USERNAME = username
SYS_MYSQL_ATTR_PASSWD = password
SYS_LDAP_BASE = dc=extmail.org
SYS_LDAP_RDN = cn=Manager,dc=extmail.org
SYS_LDAP_PASS = secret
SYS_LDAP_HOST = localhost
SYS_LDAP_ATTR_USERNAME = mail
SYS_LDAP_ATTR_PASSWD = userPassword
SYS_RRD_DATADIR = /var/lib
SYS_RRD_TMPDIR = /tmp/viewlog
SYS_RRD_QUEUE_ON = yes
SYS_CMDSERVER_SOCK = /tmp/cmdserver.sock 
SYS_CMDSERVER_MAXCONN = 5
SYS_CMDSERVER_PID = /var/run/cmdserver.pid
SYS_CMDSERVER_LOG = /var/log/cmdserver.log
SYS_CMDSERVER_AUTHCODE = your_auth_code_here
SYS_IGNORE_SERVER_LIST = web
安裝extmail
#cd /usr/local/src/tarbag/
#tar zxvf extmail-1.2.tar.gz -C /opt/www/
#cd /opt/www/
#mv extmail-1.2/ extmail
#chown vmail.vmail -R extmail/
#cd extmail/
#mv webmail.cf.default webmail.cf
修改extmail配置文件
#vi webmail.cf 
SYS_CONFIG = /opt/www/extmail/
SYS_LANGDIR = /opt/www/extmail/lang
SYS_TEMPLDIR = /opt/www/extmail/html
SYS_HTTP_CACHE = 0
SYS_SMTP_HOST = 127.0.0.1
SYS_SMTP_PORT = 25
SYS_SMTP_TIMEOUT = 5
SYS_SPAM_REPORT_ON = 0
SYS_SPAM_REPORT_TYPE = dspam
SYS_SHOW_WARN = 0
SYS_IP_SECURITY_ON = 1
SYS_PERMIT_NOQUOTA = 1
SYS_SESS_DIR = /tmp
SYS_UPLOAD_TMPDIR = /tmp
SYS_LOG_ON = 1
SYS_LOG_TYPE = syslog
SYS_LOG_FILE = /var/log/extmail.log
SYS_SESS_TIMEOUT = 0
SYS_SESS_COOKIE_ONLY = 1
SYS_USER_PSIZE = 10
SYS_USER_SCREEN = auto
SYS_USER_LANG = en_US
SYS_APP_TYPE = WebMail
SYS_USER_TEMPLATE = default
SYS_USER_CHARSET = utf-8
SYS_USER_TRYLOCAL = 1
SYS_USER_TIMEZONE = +0800
SYS_USER_CCSENT = 1
SYS_USER_SHOW_HTML = 1
SYS_USER_COMPOSE_HTML = 1
SYS_USER_CONV_LINK =1
SYS_USER_ADDR2ABOOK = 1
SYS_MESSAGE_SIZE_LIMIT = 5242880
SYS_MIN_PASS_LEN = 2
SYS_MFILTER_ON = 1
SYS_NETDISK_ON = 1
SYS_SHOW_SIGNUP = 1
SYS_DEBUG_ON = 1
SYS_AUTH_TYPE = mysql
SYS_MAILDIR_BASE = /opt/mailbox
SYS_AUTH_SCHEMA = virtual
SYS_CRYPT_TYPE = md5crypt
SYS_MYSQL_USER = extmail
SYS_MYSQL_PASS = extmail
SYS_MYSQL_DB = extmail
SYS_MYSQL_HOST = localhost
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_MYSQL_ATTR_CLEARPW = clearpwd
SYS_MYSQL_ATTR_QUOTA = quota
SYS_MYSQL_ATTR_NDQUOTA = netdiskquota
SYS_MYSQL_ATTR_HOME = homedir
SYS_MYSQL_ATTR_MAILDIR = maildir
SYS_MYSQL_ATTR_DISABLEWEBMAIL = disablewebmail
SYS_MYSQL_ATTR_DISABLENETDISK = disablenetdisk
SYS_MYSQL_ATTR_DISABLEPWDCHANGE = disablepwdchange
SYS_MYSQL_ATTR_ACTIVE = active
SYS_MYSQL_ATTR_PWD_QUESTION = question
SYS_MYSQL_ATTR_PWD_ANSWER = answer
SYS_LDAP_BASE = o=extmailAccount,dc=example.com
SYS_LDAP_RDN = cn=Manager,dc=example.com
SYS_LDAP_PASS = secret
SYS_LDAP_HOST = localhost
SYS_LDAP_ATTR_USERNAME = mail
SYS_LDAP_ATTR_DOMAIN = virtualDomain
SYS_LDAP_ATTR_PASSWD = userPassword
SYS_LDAP_ATTR_CLEARPW = clearPassword
SYS_LDAP_ATTR_QUOTA = mailQuota
SYS_LDAP_ATTR_NDQUOTA = netdiskQuota
SYS_LDAP_ATTR_HOME = homeDirectory
SYS_LDAP_ATTR_MAILDIR = mailMessageStore
SYS_LDAP_ATTR_DISABLEWEBMAIL = disablewebmail
SYS_LDAP_ATTR_DISABLENETDISK = disablenetdisk
SYS_LDAP_ATTR_DISABLEPWDCHANGE = disablePasswdChange
SYS_LDAP_ATTR_ACTIVE = active
SYS_LDAP_ATTR_PWD_QUESTION = question
SYS_LDAP_ATTR_PWD_ANSWER = answer
SYS_AUTHLIB_SOCKET = /var/spool/authdaemon/socket
SYS_G_ABOOK_TYPE = file
SYS_G_ABOOK_LDAP_HOST = localhost
SYS_G_ABOOK_LDAP_BASE = ou=AddressBook,dc=example.com
SYS_G_ABOOK_LDAP_ROOTDN = cn=Manager,dc=example.com
SYS_G_ABOOK_LDAP_ROOTPW = secret
SYS_G_ABOOK_LDAP_FILTER = objectClass=OfficePerson
SYS_G_ABOOK_FILE_PATH = /opt/www/extmail/globabook.cf
SYS_G_ABOOK_FILE_LOCK = 1
SYS_G_ABOOK_FILE_CONVERT = 0
SYS_G_ABOOK_FILE_CHARSET = utf-8
配置apache
#vi /usr/local/apache2.2.15/conf/extra/httpd-vhosts.conf
 <VirtualHost *:80> 
             ServerAdmin [email protected] 
             ServerName 10.0.0.20    
             ServerAlias mail.hsf.com
             DocumentRoot /opt/www/extmail/html 
             ScriptAlias /extmail/cgi /opt/www/extmail/cgi 
             Alias /extmail /opt/www/extmail/html 
             ScriptAlias /extman/cgi /opt/www/extman/cgi
             Alias /extman /opt/www/extman/html 
             SuexecUserGroup vmail vmail 
             <Directory /opt/www> 
             Authtype basic 
             Options execcgi 
             Options Indexes FollowSymLinks 
             AllowOverride None 
             Order allow,deny
              Allow from all              
             </Directory>
</VirtualHost>
#/usr/local/apache2.2.15/bin/apachectl -t
#/usr/local/apache2.2.15/bin/apachectl -k restart


安裝slock ,extman需要啓動一個服務所需的.
#cd /usr/local/src/tarbag
#tar zxvf slockd-0.99.tar.gz  -C ../software/
#cd ../software/slockd/
#mv slockd/ /usr/local/
#/usr/local/slockd/slockd-init start
#cd /var/run/
#mkdir extmail 
#/opt/www/extman/daemon/cmdserver -v -d
#cd /opt/www/extman/addon
#cp -r mailgraph_ext/ /usr/local/
#/usr/local/mailgraph_ext/mailgraph-init start 
如果報這個錯:Can’t locate RRDs.pm in @INC 
解決辦法:
# cp -rp /usr/local/rrdtool/lib/perl/5.8.8/x86_64-linux-thread-multi/* /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/
如果報這個錯:Can't locate File/Tail.pm in @INC
解決方法爲:
#cpan
cpan>install File::Tail
cpan>quit
導入數據庫
#cd /opt/www/extman/docs
# /usr/local/mysql/bin/mysql -u root -p < extmail.sql   
Enter password:   
# /usr/local/mysql/bin/mysql -u root -p < init.sql   
Enter password:   


# /usr/local/mysql/bin/mysql   
Welcome to the MySQL monitor.  Commands end with ; or \g.  
Your MySQL connection id is 4  
Server version: 5.1.36-log Source distribution  
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.  
 
mysql> show databases;  
+--------------------+  
| Database           |  
+--------------------+  
| information_schema |   
| aclocal            |   
| extmail            |   
| mysql              |   
| test               |   
+--------------------+  
5 rows in set (0.04 sec)  
 
mysql> use extmail;  
Database changed  
mysql> show tables;  
+-------------------+  
| Tables_in_extmail |  
+-------------------+  
| alias             |   
| domain            |   
| domain_manager    |   
| mailbox           |   
| manager           |   
+-------------------+  
5 rows in set (0.01 sec)  
 
mysql> grant all privileges on extmail.* to extmail@'localhost' identified by 'extmail';  
Query OK, 0 rows affected (0.00 sec)  
 
mysql> flush privileges;  
Query OK, 0 rows affected (0.00 sec)
extman默認管理帳號爲:[email protected]   密碼爲:extmail*123*
重啓下apache
#/usr/local/apache2.2.15/bin/apachectl -k restart
啓動後訪問extman如果驗證碼出不來是一個perl的GD庫沒有裝
#cd /usr/local/src/tarbag/
#tar zxvf GD-2.35.tar.gz  -C ../software
#perl Makefile.PL
#make
#make install 
圖形日誌沒有顯示 .是因爲rrdtool沒有裝
#cd /usr/local/src/tarbag/
#tar xvf rrdtool-1.4.3.tar.gz -C ../software/
#cd ../software/rrdtool-1.4.3/
#./configure --prefix=/usr/local/rrdtool
#make
#make install

訪問extmail FAQ:
Can't locate DBI.pm in @INC     錯誤,用yum 安裝下perl-DBI.x86_64 模塊就好.
Can't locate DBD/mysql.pm       錯誤,用yum 安裝下perl-DBD-MySQL.x86_64 模塊.
如果yum無法安裝可以去下載DBD-mysql-3.0007 源碼包.編譯方法如下:
perl Makefile.PL --libs="-L/usr/local/mysql/lib/mysql/ -lmysqlclient -lz" --cflags=-I/usr/local/mysql/include/mysql/
make 
make install

Unix::Syslog not found,.        錯誤,安裝Unix-Syslog模塊.  

至此,postfix安裝完成. 後續增加反垃圾,防病毒功能.


POSTFIX FAQ :
問題一:
Aug 7 22:26:22 mail postfix/smtpd[16829]: warning: xsasl_cyrus_server_get_mechanism_list: no applicable SASL mechanisms
Aug 7 22:26:22 mail postfix/smtpd[16829]: fatal: no SASL authentication mechanisms
Aug 7 22:26:23 mail postfix/master[16825]: warning: process /usr/libexec/postfix/smtpd pid 16829 exit status 1
Aug 7 22:26:23 mail postfix/master[16825]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling
Aug 7 22:28:06 mail postfix/smtpd[16830]: warning: xsasl_cyrus_server_get_mechanism_list: no applicable SASL mechanisms
Aug 7 22:28:06 mail postfix/smtpd[16830]: fatal: no SASL authentication mechanisms
Aug 7 22:28:07 mail postfix/master[16825]: warning: process /usr/libexec/postfix/smtpd pid 16830 exit status 1

Sep  2 19:00:27 localhost postfix/smtpd[913]: fatal: no SASL authentication mechanisms
Sep  2 19:00:28 localhost postfix/master[26948]: warning: process /usr/local/postfix/libexec/smtpd pid 913 exit status 1
Sep  2 19:00:28 localhost postfix/master[26948]: warning: /usr/local/postfix/libexec/smtpd: bad command startup -- throttling
Sep  2 19:10:28 localhost postfix/smtpd[6083]: connect from localhost.localdomain[127.0.0.1]
Sep  2 19:10:28 localhost postfix/smtpd[6083]: warning: xsasl_cyrus_server_get_mechanism_list: no applicable SASL mechanisms


解決方法:
# ln -s /usr/local/lib/sasl2 /usr/lib/
問題二:
Sep 24 18:05:05 extmail postfix/smtpd[4510]: warning: SASL authentication failure: cannot connect to Courier authdaemond: Permission denied
Sep 24 18:05:05 extmail postfix/smtpd[4510]: warning: extmail[127.0.0.1]: SASL login authentication failed: generic failure

是權限的問題.
Authdaemon_path 的權限 .還有他的父目錄權限.
最後看下開機需要運行的服務可以寫在/etc/rc.local裏面:
#cat /etc/rc.local
/usr/local/apache2.2.14/bin/apachectl -k start
/usr/local/sasl2/sbin/saslauthd -a shadow pam
/usr/local/postfix/sbin/postfix start
/opt/www/extman/daemon/cmdserver -d
/usr/local/slockd/slockd-init start
/usr/local/mailgraph_ext/mailgraph-init start
/usr/local/courier-authlib/sbin/authdaemond start
/opt/www/extmail/dispatch-init start  
service imapd start
service mysqld start




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章