在RHEL5.3上安装extmail邮件系统过程中碰到的问题以及解决方法

对extmail邮件系统安装过程中碰到的问题做下小结

a.验证postfix安装时,验证失败

检查安装步骤,没有错误,检查/var/log/maillog,看到日志中有

connect to mysql server localhost: Can't connect to local MySQL server
through socket '/var/lib/mysql/mysql.sock' (13)

以及

SASL login authentication failed: generic failure

费了好多力气来查找这个问题,最后发现是由于SELinux搞的鬼,将SELinux关闭,重新启动机器再看一切运行正常。
网上找到一篇不关闭SELinux使Postfix运行正常的一篇文章,需要自己做策略,没有试验,有兴趣的同学可以试一下。文章地址 http://www.laliluna.de/blog/2008/09/04/make_selinux_postfix_postgrey_and_dovecot_work_together.html

b.配置后nginx网关提示”502 Bad Gateway”

开始以为参数没有配置好,后来经过试验发现时由于使用过的socket文件权限的问题。

  1. chown vuser.vgroup /tmp/perl_fcgi.socket
  2. #设置启动脚本的账号为vuser
  3. sudo -u vuser ./fcgi_perl2 &

设置启动fcgi_perl的账号为uvser,要不然在web界面上发送邮件时新保存到邮件目录下的文件属主为root:root,会造成文件权限上的一些问题。

c.全部配置完毕后登陆Extmail时出现”Unix::Syslog not found”错误

给perl安装Unix::Syslog包

  1. perl -MCPAN -e 'install Unix::Syslog'

d.登陆extman时,验证码图片没有显示

缺少perl-GD包,安装后问题消失

  1. wget http://packages.sw.be/perl-GD/perl-GD-2.43-1.el5.rf.i386.rpm
  2. rpm -ivh perl-GD-2.43-1.el5.rf.i386.rpm
e.打开extmail邮件系统的web页面加载很慢

经过分析,发现是由于页面加载时调用了extmail.net的rpc服务。
修改 /var/www/extsuite/extmail/html/plugins/rpc_init.js 文件,去除其中rpc的使用.

  1. rpc_url_list = [
  2. //    "http://rpc-srv01.extmail.net/phprpc/rpc.php",
  3. //    "http://rpc-srv02.extmail.net/phprpc/rpc.php",
  4. //    "http://rpc-srv03.extmail.net/phprpc/rpc.php",
  5. ];
  6.  
  7. rpc_plg_list = [
  8. //    "coolweather",
  9. //    "etnews",
  10. //    "chkupdate",
  11. ];

修改 /var/www/extsuite/extman/html/plugins/rpc_init.js 文件,去除其中rpc的使用.

  1. rpc_url_list = [
  2. //    "http://rpc-srv01.extmail.net/phprpc/rpc.php",
  3. //    "http://rpc-srv02.extmail.net/phprpc/rpc.php",
  4. //    "http://rpc-srv03.extmail.net/phprpc/rpc.php",
  5. ];

修改后,再次打开extmail的Web页面,没有任何停顿的感觉,说明是之前的访问速度慢是由于程序调用extmail的rpc服务造成的

Popularity: 25% [?]

Related

在RHEL5.3上安装基于postfix的extmail邮件系统

extmail官方网站上的安装指南是针对4.x系统的,网上找了一个5.x的安装。
参考在centos/redhat 5.x 上安装邮件系统postfix+extmail+courier-imap

安装步骤.

1.系统准备

使用默认方式安装系统后,从RHEL安装盘上拷贝一些下面安装步骤需要的rpm包先安装上。

  1. rpm -ivh postgresql-devel-8.1.11-1.el5_1.1.i386.rpm
  2. rpm -ivh expect-5.43.0-5.1.i386.rpm
  3. rpm -ivh libtool-ltdl-devel-1.5.22-6.1.i386.rpm
  4.  
  5. rpm -ivh mysql-devel-5.0.45-7.el5.i386.rpm
  6. rpm -ivh openldap-servers-2.3.43-3.el5.i386.rpm
  7. rpm -ivh openldap-servers-sql-2.3.43-3.el5.i386.rpm
  8.  
  9. rpm -ivh pcre-6.6-2.el5_1.7.i386.rpm
  10. rpm -ivh pcre-devel-6.6-2.el5_1.7.i386.rpm

再从 www.extmail.org 网站上下载最新的 extmail 相关包

extmail-1.1.0.tar.gz
extman-1.0.0.tar.gz
slockd-0.99.tar.gz

2.导入extman后台数据库数据

  1. tar -xzvf extman-1.0.0.tar.gz
  2. cd extman-1.0.0/docs
  3. mysql -u root -p
  4. mysql> source extmail.sql
  5. mysql> source init.sql
  6. mysql> exit

Read more

Popularity: 44% [?]

Related

修改linux时区的简单方法

默认安装了一台linux机器,发现显示的时区不是对应北京时间的
网上查了一下,通过如下方法可以简单修改显示时间的时区。

mv /etc/localtime /etc/localtime.bak
cp /usr/share/zoneinfo/Asia/ShangHai  /etc/localtime

再次执行date 可以看到显示出的时间是对应北京时间的。

Popularity: 22% [?]

Random Posts

在php中使用mysql存储过程以及碰到的问题解决方法

mysql 5中增加了存储过程功能,他们在php中使用很方便。
在php中调用存储过程和函数的主要步骤为。

一.准备存储过程的参数

如果存储过程有输入参数,则需要声明一个mysql变量,让mysql服务器知道此变量的存在,执行mysql语句 mysql_query(”set @mysqlvar =$phpvar”);
就可以在mysql服务器里面就有一个变量@mysqlvar。如果时IN参数,那么其值可以有phpvar传入。

二.调用存储过程

1.执行 call procedure()语句
也就是mysql_query(”call proceduer([var1]…)”);

2. 如果参数有OUT返回值,执行select @var,获取返回的参数结果
mysql_query(”select @var”)

接下来的操作就和php执行一般的mysql语句一样了。可以通过mydql_fetch_row()等函数获得结果。

如果是函数。 直接执行 select function() 就可以了。

———使用中碰到的问题解决——-

不能执行存储过程

在定义存储过程的时候,将存储过程类型设置为 DETERMINISTIC 。

定义的存储过程中有多个select语句,call失败

通过 mysql_error()输出错误提示 can’t return a result set in the given context
在mysql_connect连接数据库时指定 CLIENT_MULTI_RESULTS 标志。

  1. <?php
  2.     define(’CLIENT_MULTI_RESULTS’, 131072);
  3.  
  4.     $conn = mysql_connect("localhost", "root", "rootpwd",1,CLIENT_MULTI_RESULTS) or die("Could not connect: ".mysql_error($conn));
  5.     mysql_select_db("mydb", $conn) or die("Could not select database");
  6.    
  7.     $result = mysql_query("call proc_get_datas(2)", $conn);
  8.  
  9.     while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
  10.          // do something
  11.     }
  12.  
  13.      mysql_free_result($result, $conn);
  14.    
  15.     mysql_close($conn);    
  16. ?>

Popularity: 28% [?]

Related

SQL SERVER数据库碰到823错误不能启动的解决方法

由于机器意外断电重启,发现SQL Server 服务不能启动。查看系统的事件日志,发现有错误提示:
———————————-
服务器: 消息 823,级别 24,状态 5
———————————-
对数据库启动错误信息进行细节排查,发现其中有ErrorDB出错,不能附加这个数据库,从而整个SQL Server 服务不能启动。

修复方法
1. 将已破坏的ErrorDB数据库文件更名,如ErrorDB_Data.Mdf ==>ErrorDB_Data1.Mdf, ErrorDB_Log.Ldf==>ErrorDB_Log1.Ldf

2. 再次启动SQL Server服务,发现可以正常启动服务,但是会看到ErrorDB显示为置疑状态,将其分离,重新建立一个同名的ErrorDB数据库。

3. 选中新建的数据库,将其脱机, 然后到数据库数据目录下将新数据库更名(ErrorDB_Data.Mdf ==> ErrorDB_Data2.Mdf), 将待修复老数据库更名为原先名称ErrorDB_Data1.Mdf ==> ErrorDB_Data.Mdf

4. 在SQL查询分析器中, 执行如下命令:
use master
sp_configure ‘allow’, 1
reconfigure with override
update sysdatabases set status = 32768 where name = ‘ErrorDB’

5. 将LDF文件改名,然后将ErrorDB联机,再在查询分析器中执行
DBCC REBUILD_LOG (’ErrorDB’, ‘E:\Data\ErrorDB_Log.LDF’ )

6. 恢复数据库紧急模式
update sysdatabases set status = 0 where name = ‘ErrorDB’

7. 在查询分析器中执行
restore database ErrorDB with recovery
sp_configure ‘allow’, 0
reconfigure with override

8. 检查数据库看看还有没有错误,
DBCC CHECKDB (’ErrorDB’)

————-
如以上还是不行,可以尝试使用
DBCC CHECKDB(’ErrorDB’, Repair_Allow_Loss_Data)
命令修复数据库,不过这样会丢失一些数据,但是话说回来,貌似不这样那些坏掉的数据也回不来的。
————-
在做以上处理时,要注意关闭使用ErrorDB的程序。要不然某些步骤会提示不能获得数据库的排他性操作权限,不能对命令进行执行处理。

Popularity: 28% [?]

Related