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=, 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
  
             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 
              
             Authtype basic 
             Options execcgi 
             Options Indexes FollowSymLinks 
             AllowOverride None 
             Order allow,deny
              Allow from all              
             

#/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




你可能感兴趣的:(Linux相关)