jilgb 发表于 2013-10-12 08:58:56

postfix安装记录二

四、安装courier-ahthlib
1、首先需要安装expect:
#yum install expect# rpm -qa |grep expectexpect-5.43.0-8.el5
2、安装courier-authlib
# groupadd -g 1000 vmail# useradd -g 1000 -u1000vmail
# id vmailuid=1000(vmail) gid=1000(vmail)groups=1000(vmail)

# tar jxvfcourier-authlib-0.63.0.tar.bz2 -C ../installpack/# cdcourier-authlib-0.63.0/
./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# makeinstall
3、加入搜索路径
[root@mailcourier-authlib-0.63.0]# echo"/usr/local/courier-authlib/lib/courier-authlib">>/etc/ld.so.conf#ldconfig
4、修改配置文件

# cd /etc/authlib/#cp -p authmysqlrc.distauthmysqlrc#cp -p authdaemonrc.distauthdaemonrc
# lltotal 32-rw-rw---- 1 vmail vmail 3573 Oct5 14:43 authdaemonrc-rw-rw---- 1 vmail vmail 3587 Oct5 09:31 authdaemonrc.dist-rw-rw---- 1 vmail vmail 8883 Oct5 15:26 authmysqlrc-rw-rw---- 1 vmail vmail 8812 Oct5 09:31 authmysqlrc.dist


# cat authdaemonrc |grep-v '^#' | grep -v '^$'authmodulelist="authmysql"authmodulelistorig="authmysql"daemons=10DEBUG_LOGIN=2

这个修改前两行表示用mysql认证模块;把DEBUG_LOGIN的值有默认的“0”改成“2”的用意是运行postfix时有更多的信息输出,通过生成的日志以帮助排错。

# cat authmysqlrc |grep-v '^#' | grep -v '^$'MYSQL_SERVERlocalhostMYSQL_USERNAME extmailMYSQL_PASSWORDextmailMYSQL_SOCKET/tmp/mysql.sockMYSQL_PORT3306MYSQL_OPT0MYSQL_DATABASEextmailMYSQL_USER_TABLEmailboxMYSQL_CRYPT_PWFIELDpasswordMYSQL_UID_FIELD"1000"MYSQL_GID_FIELD"1000"MYSQL_LOGIN_FIELDusernameMYSQL_HOME_FIELDconcat("/var/mailbox/",homedir)MYSQL_MAILDIR_FIELDconcat("/var/mailbox/",maildir)MYSQL_QUOTA_FIELDconcat(quota,"S")特别注意MYSQL_UID_FIELD和MYSQL_GID_FIELD字段的值,这里是‘1000’,也可以是其它的,但一定要与vmail用户及组相一致(id vmail可以得出这两者的值)

5、启动及加入自动运行队列
#pwd/usr/local/src/installpack/courier-authlib-0.63.0
# cp courier-authlib.sysvinit/etc/rc.d/init.d/courier-authlib
# chmod 755/etc/rc.d/init.d/courier-authlib# chkconfig --add courier-authlib# chmod a+x/usr/local/courier-authlib/var/spool/authdaemon# chkconfig courier-authlib on# service courier-authlib start



五、安装courier-imap1、安装软件root@mail installpack]# tar jxvfcourier-imap-4.9.3.tar.bz2 -C ../installpack/# cdcourier-imap-4.9.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# makeinstall
2、编辑配置文件
# pwd/usr/local/courier-imap/etc# lltotal 64-rw------- 1 root root367 Oct1 23:28 imapd.cnf-rw------- 1 root root 13928 Oct1 23:28 imapd.dist-rw------- 1 root root 10081 Oct1 23:28 imapd-ssl.dist-rw------- 1 root root367 Oct1 23:28 pop3d.cnf-rw------- 1 root root3345 Oct1 23:28 pop3d.dist-rw------- 1 root root9640 Oct1 23:28 pop3d-ssl.dist-r--r--r-- 1 root root516 Oct1 23:28 quotawarnmsg.exampledrwxr-xr-x 2 root root4096 Oct1 23:28 shareddrwxr-xr-x 2 root root4096 Oct1 23:28 shared.tmp

# cp -p imapd.dist imapd# cp -p pop3d.dist pop3d# cp -p imapd-ssl.dist imapd-ssl# cp -p pop3d-ssl.dist pop3d-ssl
主要是编辑pop3d与smtpd两个文件把POP3DSTART与IMAPDSTART由原来的NO改为YES
# egrep -i 'path|start'pop3d |grep -v '^#'POP3DSTART=YESMAILDIRPATH=Maildir# egrep -i 'path|start'imapd |grep -v '^#'IMAPDSTART=YESMAILDIRPATH=Maildir


3、启动及加入自动运行队列
# cp/usr/local/src/installpack/courier-imap-4.9.3/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 startStarting Courier-IMAP server: imap pop3# netstat -ntpl |egrep'110|143'tcp00 0.0.0.0:1100.0.0.0:*LISTEN29607/couriertcpdtcp00 0.0.0.0:1430.0.0.0:*LISTEN29601/couriertcpd





六、安装cyrus-sasl1、安装软件# tar zxvfcyrus-sasl-2.1.22.tar.gz -C ../installpack/# 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

2、创建共享连接库

# ln -sv /usr/local/lib/sasl2/usr/lib/sasl2
# echo"/usr/local/lib">>/etc/ld.so.conf
# ldconfig

3、建立smtpd用户认证的配置文件,编辑smtpd认证配置文件,该文件默认不存在
# cat smtpd.confpwcheck_method: authdaemondmech_list: plain loginlog_level: 3authdaemond_path:/usr/local/courier-authlib/var/spool/authdaemon/socket
Sasl2需要使用文件/usr/local/authlib/var/spool/authdaemon/socket,但默认情况下,其属性是744,需要把它加上执行权限,以便文件属组(主)而外的其它用户可以执行。运行命令chmod +x/usr/local/authlib/var/spool/authdaemon即可,如果不这样处理,smtp验证无一例外会失败的。

4、创建运行时需要的目录# mkdir -pv/var/state/saslauthdmkdir: created directory `/var/state'mkdir: created directory`/var/state/saslauthd'
5、启动并测试
root@mail sasl2]# /usr/local/sbin/saslauthd -a shadow pam -dsaslauthd :main: num_procs: 5saslauthd :main: mech_option: NULLsaslauthd :main: run_path: /var/state/saslauthdsaslauthd :main: auth_mech: shadowsaslauthd :ipc_init:using accept lock file: /var/state/saslauthd/mux.acceptsaslauthd :detach_tty: master pid is: 0saslauthd :ipc_init: listening on socket:/var/state/saslauthd/muxsaslauthd :main: using process modelsaslauthd :get_accept_lock :acquired accept locksaslauthd :have_baby: forked child: 26690saslauthd :have_baby: forked child: 26691saslauthd :have_baby: forked child: 26692saslauthd :have_baby: forked child: 26693看有没有报错然后ctrl+csaslauthd :server_exit: child exited: 26693saslauthd :server_exit: child exited: 26692saslauthd :server_exit: child exited: 26691saslauthd :server_exit: child exited: 26690saslauthd :handle_sigchld: child exited: 26690saslauthd :handle_sigchld: child exited: 26691saslauthd :handle_sigchld: child exited: 26692saslauthd :handle_sigchld: child exited: 26693saslauthd :server_exit: pid file lock removed:/var/state/saslauthd/saslauthd.pid.locksaslauthd :ipc_cleanup: accept lock file removed:/var/state/saslauthd/mux.acceptsaslauthd :ipc_cleanup: socket removed: /var/state/saslauthd/muxsaslauthd :server_exit: master exited: 0

#/usr/local/sbin/saslauthd -v //查看版本saslauthd 2.1.22authentication mechanisms: getpwent pamrimap shadow

#/usr/local/sbin/saslauthd -a shadow pam//启动
#/usr/local/sbin/testsaslauthd -u root -p aa123456 //测试root帐号和密码0: OK "Success."
6、开机自启动# echo "/usr/local/sbin/saslauthd-a shadow pam">>/etc/rc.local


七、安装postfix
1、添加用户和安装
# groupadd -g 105 postfix
# useradd -g 105 -u 105 -M -s /sbin/nologinpostfix
# groupadd -g 106 postdrop
# useradd -g 106 -u 106 -M -s /sbin/nologinpostdrop

# tar zxvfpostfix-2.8.15.tar.gz -C ../installpack/

# make -fMakefile.init 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 install2、按照以下的提示输入相关的路径([]号中的是缺省值,”]”后的是输入值)
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:
3、生产二进制文件# newaliases
//有的网友说安装postfix之前要独立安装BerkeleyDB,在生成makefiles文件时,编译postfix的时候没有加-L/usr/local/BerkeleyDB/libnewaliases会去找系统自带的4.3.29的库.会报错.但是这里并没有报错,我测试的结果是如果在编译postfix前把系统自带的db4卸载,独立安装了BerkeleyDB,那么在后面的安装amavisd相关模块时会起冲突。如下所示,所以为了以后能顺利安装,所以还是不要装独立BerkeleyDB;# /usr/local/sbin/amavisd debugProblem in Amavis::DB or Amavis::DB::SNMP code:BerkeleyDB needs compatible versions of libdb & db.hyou have db.h version4.3.29 and libdb version 4.5.20Compilation failed in require at (eval 68) line 19.BEGIN failed--compilation aborted at (eval 68) line 19.


4、建立邮件存放目录
# mkdir -pv /var/mailbox
# chown -R vmail.vmail /var/mailbox

5、修改postfix配置文件main.cf# mv main.cf main.cf.old# vi main.cfmyhostname = mail.test.commydomain = test.commyorigin = $mydomainmydestination =mynetworks = 192.168.0.0/16, 127.0.0.0/8inet_interfaces = allreadme_directory = nosample_directory = /etc/postfixsendmail_path = /usr/sbin/sendmailhtml_directory = nosetgid_group = postdropcommand_directory = /usr/sbinmanpage_directory = /opt/postfix/mandaemon_directory = /usr/libexec/postfixnewaliases_path = /usr/bin/newaliasesmailq_path = /usr/bin/mailqqueue_directory = /var/spool/postfixmail_owner = postfixvirtual_mailbox_base = /var/mailboxvirtual_mailbox_maps =mysql:/etc/postfix/mysql_virtual_mailbox_maps.cfvirtual_mailbox_domains =mysql:/etc/postfix/mysql_virtual_domains_maps.cfvirtual_alias_domains =virtual_alias_maps =mysql:/etc/postfix/mysql_virtual_alias_maps.cfvirtual_uid_maps= static:1000virtual_gid_maps= static:1000virtual_transport = maildrop:maildrop_destination_recipient_limit = 1maildrop_destination_concurrency_limit = 1message_size_limit = 52428800mailbox_size_limit = 209715200virtual_mailbox_limit = 209715200virtual_create_maildirsize = yesvirtual_mailbox_extended = yesvirtual_mailbox_limit_maps =mysql:/etc/postfix/mysql_virtual_limit_maps.cfvirtual_mailbox_limit_override = yesvirtual_maildir_limit_message = Sorry, theuser's maildir has overdrawn his diskspace quota.virtual_overquota_bounce = yessmtpd_helo_required = yesdisable_vrfy_command = yesstrict_rfc821_envelopes = yesinvalid_hostname_reject_code = 554multi_recipient_bounce_reject_code = 554non_fqdn_reject_code = 554relay_domains_reject_code = 554unknown_address_reject_code = 554unknown_client_reject_code = 554unknown_hostname_reject_code = 554unknown_local_recipient_reject_code = 554unknown_relay_recipient_reject_code = 554unknown_sender_reject_code = 554unknown_virtual_alias_reject_code = 554unknown_virtual_mailbox_reject_code = 554unverified_recipient_reject_code = 554unverified_sender_reject_code = 554smtpd_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_destinationnotify_classes = bounce, 2bounce, delay,policy, protocol, resource, softwarebounce_template_file = /etc/postfix/bounce.cf2bounce_notice_recipient = postmasterbounce_notice_recipient = postmasterdelay_notice_recipient = postmastererror_notice_recipient = postmastersmtpd_sasl_auth_enable = yessmtpd_sasl_local_domain = $mydomainsmtpd_sasl_security_options = noanonymoussmtpd_sasl_application_name = smtpdsmtpd_banner = Welcome to our $myhostnameESMTP,Warning: Version not Available!alias_maps = hash:/etc/aliasescontent_filter=amavisfeed::10024


6、添加为支持虚拟域和虚拟用户所用到的配置文件,其实是直接在extman中复制过去
# tar zxvf extman-1.1.tar.gz
# cd extman-1.1
# cp docs/mysql_virtual_* /etc/postfix/
7、启动postfix并加入到自启动
# /usr/sbin/postfix start
# echo "/usr/sbin/postfixstart">>/etc/rc.local
root@mail postfix]# netstat -anlt |egrep'110|143|25|80'tcp00 0.0.0.0:1100.0.0.0:*LISTENtcp00 0.0.0.0:1430.0.0.0:*LISTENtcp00 0.0.0.0:800.0.0.0:*LISTENtcp00 0.0.0.0:250.0.0.0:*LISTEN






八、安装maildrop
1、安装和配置maildrop安装maildrop 要安装pcre-devel ,如果没有则用yum 安装# rpm -qa |greppcre-develpcre-devel-6.6-6.el5_6.1
将courier-authlib的头文件及库文件链接至/usr目录(编译maildrop时会到此目录下找此些相关的文件):
# ln -sv/usr/local/courier-authlib/bin/courierauthconfig/usr/bin/courierauthconfig
create symbolic link`/usr/bin/courierauthconfig' to `/usr/local/courier-authlib/bin/courierauthconfig'

# tar jxvfmaildrop-2.5.4.tar.bz2 -C ../installpack/
# ./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
# make && make install# cp /usr/local/maildrop/bin/maildrop/usr/local/bin/
2、检查安装结果
# maildrop -vmaildrop 2.5.4 Copyright 1998-2005 DoublePrecision, Inc.GDBM/DB extensions enabled.Courier Authentication Libraryextension enabled.//确保这一行显示Maildir quota extension are now alwaysenabled.This program is distributed under the termsof the GNU General PublicLicense. See COPYING for additionalinformation.如果没有显示Courier Authentication Libraryextension enabled.说明你的maidrop还不支持courier auth,请仔细检查,重新编译maildrop建议不要自定义目录安装,可以减少不必要的麻烦,删除很方便:直接在已经编译的源代码目录 make uninstall 就行知道maildrop把邮件移动到哪个用户目录还是非常有必要的,这个操作就是maildrop的日志记录。
3、配置Maildrop 日志文件; 这里我们创建一个新文件/etc/maildroprc,# cat /etc/maildroprclogfile "/var/log/maildrop.log"to "$HOME/Maildir"VERBOSE="4"

4、下面的这个处理垃圾邮件,将垃圾邮件转移到垃圾邮件收件箱中
# touch/var/log/maildrop.log# chown vmail.vmail/var/log/maildrop.log
5、配置postfix# vi /etc/postfix/master.cf
去掉下面两行前面的#
67#maildropunix-nn--pipe68#flags=DRhu user=vmailargv=/usr/local/bin/maildrop -d ${recipient}
第二行修改如下flags=DRhu user=vmailargv=/usr/local/bin/maildrop -w 90 -d ${user}@${nexthop} ${recipient} ${user} ${extension}{nexthop}
此处要注意argv=后边的maildrop要加上路径,否则会出现
temporaryfailure. Command output: pipe: fatal: pipe_command: execvp maildrop: No suchfile or directory
注意maildrop unix这行前边不能有空格,要不会出现以下错误提示
warning: connect to transport maildrop: Nosuch file or directorylocalhost postfix/error: BE0AE27DAF6:to=<zhangsan@test.com>,relay=none,delay=1443,delays=1443/0.24/0/0.02,dsn=4.3.0,status=deferred (mail transport unavailable)
注意flags=Drhu这一行前边有两个空格,要不会出现以下错(fatal: /etc/postfix/master.cf: line 100: bad transport type: user=vmail)。注意前面要保留两个空格,不然会有问题

编辑main.cf确保有virtual_uid_maps = static:1000virtual_gid_maps = static:1000virtual_transport = maildrop
编辑/etc/authmysqlrc# vi /etc/authmysqrcMYSQL_UID_FIELD'1000'MYSQL_GID_FIELD'1000'
十、安装配置extmail 和extman1、安装extmal# cd /var/www/# mkdir extsuite# tar -zxvfextmail-1.2.tar.gz -C /var/www/extsuite/# mv extmail-1.2/extmail# cd extmail/# cp -p webmail.cf.defaultwebmail.cf# vim webmail.cf
#SYS_USER_LANG = en_US修改为SYS_USER_LANG = zh_CN
128 #SYS_MAILDIR_BASE = /home/domains修改为129 SYS_MAILDIR_BASE = /var/mailbox
140 #SYS_MYSQL_USER = db_user141 #SYS_MYSQL_PASS = db_pass
修改为
142 SYS_MYSQL_USER = extmail143 SYS_MYSQL_PASS = extmail
SYS_MYSQL_SOCKET =/var/lib/mysql/mysql.sock修改为连接数据库的sock146 SYS_MYSQL_SOCKET = / tmp/mysql.sock
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.vmailcgi/
2、安装extman
# mv extman-1.1//var/www/extsuite/extman
#cd /var/www/extsuite/extman# mv webman.cf.default webman.cf

12 #SYS_MAILDIR_BASE = /home/domains修改为13 SYS_MAILDIR_BASE = /var/mailbox

131 SYS_MYSQL_SOCKET =/usr/local/mysql/tmp/mysql.sock
修改为132 #SYS_MYSQL_SOCKET = /tmp /mysql.sock
3、使用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
4、修改cgi目录的属主:
#chown -R vmail.vmail/var/www/extsuite/extman/cgi
5、extman和extmail需要Perl-Unix-Syslog、DBD-Mysql和perl-GD的支持
#perl -MCPAN -eshell
然后一路回车后出现:
cpan>
然后我们输入:
cpan>install Unix::Syslog
cpan>install GD
cpan>install DBI
-----cpan>install DBD::mysql # DBD-Mysql目前最新的版本为DBD-mysql-4.006,但它和系统中的perl结合使用时会造成extmail无法正常使用,因此我们采用3的版本
# tar -zxvf DBD-mysql-3.0008.tar.gz
# cd DBD-mysql-3.0008
# perl Makefile.PL
# make
# make install
6、建立extman和extmail的目录
# mkdir /tmp/extman
# chown -R vmail.vmail /tmp/extman/
# mkdir /tmp/extmail
# chown -R vmail.vmail /tmp/extmail/
7、apache相关配置
# vi /usr/local/apache2/conf/httpd.conf
去掉这行前面的#号
Include conf/extra/httpd-vhosts.conf

# vi /usr/local/apache2/conf/extra/httpd-vhosts.conf
去后面的<VirtualHost>两段
<VirtualHost *:80>
....
</VirtualHost>
添加下面内容
<VirtualHost *:80>ServerName mail.test.comDocumentRoot /var/www/extsuite/extmail/htmlScriptAlias /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>
8、重启一下apache服务器
#/usr/local/apache/bin/ apachectl restart
到此,就全配置完了
9、到win终端。修改hosts文件192.168.x.x mail.test.com
在浏览器中输入http://mail.test.com/extman进入管理界面,默认内置账号是root@extmail.org,密码是extmail*123*,添加一个域和用户,extman可以管理多个域;
在http://mail.test.com/extmail中登陆

寂寞大萝卜 发表于 2013-10-18 09:13:45

长得真有创意,活得真有勇气!

50010623 发表于 2013-10-23 04:50:51

佛曰,色即是空,空即是色!今晚,偶想空一下

yxixi 发表于 2013-10-28 18:47:20

如果有一双眼睛陪我一同哭泣,就值得我为生命受苦。

yp1234 发表于 2013-11-5 10:51:33

站的更高,尿的更远。

nikoo 发表于 2013-11-13 19:47:32

长大了娶唐僧做老公,能玩就玩一玩,不能玩就把他吃掉。

cencenhai 发表于 2013-11-24 14:16:56

为中华而努力读书!一包中华好多钱啊~~~
页: [1]
查看完整版本: postfix安装记录二