今天在家照老大的文章安装postfix,结果遇到不少麻烦,
 
现在一一指出。老大的文章参考这里 [url]http://sery.blog.51cto.com/10037/45500[/url]
 
特别申明:如果你是老手,高手,可以略过以下内容,以下内容主要是为新手进行指点.
 
1。部分软件下载连接不对。官方网站也错了,不过不重要,大家都能自己找到对应的tar包的,部分指令也有错误,输入的时候要仔细,我偷懒,老复制粘贴,结果绕了很多弯路。
2。给sasl打补丁的时候,
2、安装和配置SASL.
(1)安装
需要执行patch -p1 < sasl.patch 再执行make和 make install
 
(2) 在mysql中创建postfix所需的数据库。
这一步需要先启动mysql,
/usr/local/mysql/bin/mysqld_safe --user=mysql &
要不然无法导入mysql数据库。
 
(3) 测试postfixadmin。先修改apache的配置文件/usr/local/apache/conf/httpd.conf,加入如下内容:
这里对apache的配置文件修改的不全。红色的东西不能少,否则apache报错。
<Directory "/var/www/postfixadmin">
Alias /postfixadmin /var/www/postfixadmin<?xml:namespace prefix = o />

     Options Indexes FollowSymLinks

     AllowOverride None

     Order allow,deny

     Allow from all

 

    AuthType Basic

    Options None

    AllowOverride None

    Order allow,deny

    Allow from all

    AuthName "sery.mail Access"

    AuthUserFile /usr/local/apache/conf/htpasswd

    Require valid-user
</Directory>
 
4。安装postfixe,我在这里遇到了错误。
Please specify the final destination directory for installed Postfix
configuration files.
config_directory: [] /usr/local/postfixe/conf
bin/postconf: error while loading shared libraries: libmysqlclient.so.15: cannot open shared object file: No such file or directory
bin/postconf: error while loading shared libraries: libmysqlclient.so.15: cannot open shared object file: No such file or directory
 
这里说找不到mysql的共享库,需要将路径加入/etc/ld.so.conf
#echo "/usr/local/mysql/lib/mysql">>/etc/ld.so.conf
#ldconfig
然后再重新make install,ok,postfix安装好了。
 
5.安装courier-imap
出现错误提示:
configure: WARNING:
  configure: error: courierauthconfig not found
解决办法:设置变量COURIERAUTHCONFIG
   
#export COURIERAUTHCONFIG=/usr/local/authlib/bin/courierauthconfig
 
然后重新执行configure
 
安装maildrop,输出内容一定要有"Courier Authentication Library extension enabled"这一行。如果没有这个输出,那是非常不幸的事情了,返回去挨个排错吧。那么这个"Courier Authentication Library extension enabled"是怎么一回事呢?这表明maildrop已经和前面我们安装配置的SASL和courier-authlib紧密结合在一起了。
 
这里我也遇到了这个问题。发现只需要做一个软连接即可解决
 
首先找到courierauthconfig的位置,上面的步骤中是源码安装的,一般在/usr/local/authlib/
 
ln -s /usr/local/authlib/bin/courierauthconfig /usr/bin/courierauthconfig
 
然后重新编译应该就可以了。
 
6复制文件 courier-imap.sysvinit到目录/usr/local/imap/sbin
这里还需要给执行脚本执行权限
chmod +x /usr/local/imap/sbin/imapd
 
7/usr/local/sbin/amavisd debug 测试amavis。
 
这里缺很多perl模块,快速的办法就是用在线自动安装
perl -MCPAN -e shell
 
我安装的时候开始总是安装不上,手动下载了安装也不行,后来把系统时间校正后就可以了.安装好模块后运行dubug,报错,再继续安装,直到所有的脚本安装完,最后提示我,没有FQDN的hostname,自己临时设置一个
然后继续,这次debug连续滚动了很长的屏幕,在一个地方卡住了,按CTRL+c
又继续了几屏幕,然后退出了.应该是OK了.
 
8.配置文件httpd.conf末尾追加下面的内容以便用户可以通过web方式访问extmail:
 
 

 

ScriptAlias /extmail/cgi/   /var/www/extsuite/extmail/cgi/
<Directory "/var/www/extsuite/extmail">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>
Alias /extmail /var/www/extsuite/extmail/html
<Directory "/var/www/extsuite/extmail/html">
     Options Indexes FollowSymLinks
     AllowOverride None
     Order allow,deny
     Allow from all
</Directory>
 
这里和上面是一样的问题.
然后重启apache,在浏览器里访问,这里报了一个错误
Can't locate /en_US in @INC (@INC contains: /var/www/extsuite/extmail/libs /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.7/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl/5.8.7 /usr/lib/perl5/site_perl/5.8.6 /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.7/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl/5.8.7 /usr/lib/perl5/vendor_perl/5.8.6 /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl /usr/lib/perl5/5.8.8/i386-linux-thread-multi /usr/lib/perl5/5.8.8) at /var/www/extsuite/extmail/libs/Ext/Lang.pm line 63.
 
查看apache的error_log得知是没有找到webmail.cf
cp /var/www/extsuite/extmail/webmail.cf.default webmail.cf
 
然后再访问,这次又报错
 
Can't locate DBI.pm in @INC (@INC contains: /var/www/extsuite/extmail/libs /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.7/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl/5.8.7 /usr/lib/perl5/site_perl/5.8.6 /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.7/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl/5.8.7 /usr/lib/perl5/vendor_perl/5.8.6 /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl /usr/lib/perl5/5.8.8/i386-linux-thread-multi /usr/lib/perl5/5.8.8) at /var/www/extsuite/extmail/libs/Ext/Auth/MySQL.pm line 13. BEGIN failed--compilation aborted at /var/www/extsuite/extmail/libs/Ext/Auth/MySQL.pm line 13. Compilation failed in require at /var/www/extsuite/extmail/libs/Ext/App.pm line 320.
原来没有安装perl的DBD库
 
再次运行perl -MCPAN -e shell
cpan>install DBD::mysql
结果提示没有DBI:DBD
 
tnnd,
cpan>install DBI:DBD
 
ok了,再安装DBD::mysql
 
Running install for module DBD::mysql
Running make for C/CA/CAPTTOFU/DBD-mysql-4.005.tar.gz
  Is already unwrapped into directory /root/.cpan/build/DBD-mysql-4.005
  Makefile.PL returned status 512
Running make test
  Make had some problems, maybe interrupted? Won't test
Running make install
  Make had some problems, maybe interrupted? Won't install
 
 
靠,居然不能自动安装,我怎么这么不幸啊.只好手动去cpan.org上下载tar包
解压缩后perl Makefile.PL
妈呀,又报错,今天这么衰啊...555555555555
[root@fc7 DBD-mysql-4.005]# perl Makefile.PL
Can't exec "mysql_config": No such file or directory at Makefile.PL line 76.
Cannot find the file 'mysql_config'! Your execution PATH doesn't seem
not contain the path to mysql_config. Resorting to guessed values!
Can't exec "mysql_config": No such file or directory at Makefile.PL line 466.
 
似乎是找不到mysql
得,手动加上
#PATH=/usr/local/mysql/bin:$PATH; export PATH
再次安装之,总算装好了,(还好,还有一点RP)
 
再登录,还是报错,TMD,真是&)^&(*^%)(^%)*
DBI connect('database=extmail;host=localhost;mysql_socket=/var/lib/mysql/mysql.sock','db_user',...) failed: Access denied for user 'db_user'@'localhost' (using password: YES) at /var/www/extsuite/extmail/libs/Ext/Auth/MySQL.pm line 44
 
原来是/var/www/extsuite/extmail/webmail.cf里面的数据库用户名,密码不对
 
修改后再刷新
 
Can't chdir to /var/mailbox/test@mail.cooler.com/, No such file or directory
没有这个目录,看来创建用户没有成功.
 
查看/var/mailbox发现有用户目录,但是表示方式不一样
创建的是/var/mailbox/cooler.com/test
 
看来postfixadmin和extmail的数据表格式不太一致.
 
 
我的解决办法,用extman来管理extmail.
 
安装extman,和postfixadmin类似,
 
有验证码问题,需要安装perl-gd库,我安了一下报错,干脆屏蔽这个功能
 
修改/var/www/extsuite/extman/webman.cf
 
SYS_CAPTCHA_ON = 0
取消验证就改成0
 
 
需要注意的是,需要将docs目录下的extmail.sql和init.sql导入到mysql数据库中..
 
还需要修改extmail的webmail.cf中的数据库的名字,因为前面都是用的postfix,而这里导入后是extmail;
 
在extman里面创建虚拟域.然后在extmail中登录.ok,总算成功了.
 
由于家里的虚拟机不能做MX解析记录.因此无法测试邮件的收发..