评论

收藏

[MySQL] 安装extmail心得

数据库 数据库 发布于:2021-07-05 10:08 | 阅读数:509 | 评论:0

  学习疯狂老头的blog(http://blog.redzone.com.cn安装extmail心得
原文链接,第一部分:http://blog.redzone.com.cn/read.php/35.htm
第二部分http://blog.redzone.com.cn/read.php/36.htm
第三部分http://blog.redzone.com.cn/read.php/37.htm
照着疯狂老头的blog在CENTOS5上安装extmail,别的地方都一切正常.但是也出现了几个小问题.
  第2部分里面编辑 authmysqlrc 文件:
  MYSQL_SERVER            localhost
MYSQL_USERNAME          extmail
MYSQL_PASSWORD          extmail
MYSQL_SOCKET            /tmp/mysql.sock   (注意这里哦!)
  mysql的socket路径应该是/var/lib/mysql/mysql.sock
  第3部分,maildrop 测试账号,疯狂老头的文章中说用test@extmail.org这个用户.但是没有这个用户,因此
用系统自带的postmaster@extmail.org测试通过
用老头的命令maildrop -V 10 -d postmaster@extmail.org会卡住.需要手动按ctrl+c结束.
也可以用echo test| maildrop -V 10 -d postmaster@extmail.org来测试.更加完整的过程.
  
如果出现认证失败maildrop: Temporary authentication failure..检查/var/log/maillog发现是无法连接
  数据库
Jan  5 14:11:18 localhost authdaemond: received userid lookup request: postmaster@extmail.org
Jan  5 14:11:18 localhost authdaemond: authmysql: trying this module
Jan  5 14:11:18 localhost maildrop[30991]: Temporary authentication failure.
Jan  5 14:11:18 localhost authdaemond: failed to connect to mysql server (server=localhost ,
  userid=extmail): Unknown MySQL server host 'localhost ' (3)
Jan  5 14:11:18 localhost authdaemond: authmysql: TEMPFAIL - no more modules will be tried
原来是/usr/local/courth-aulith/authmysqlrc
中的MSYQLSERVER localhost这一行后面多了空格.
  
extmail使用fastcgi后.登录extmail总是说没有权限.
Can't touch /home/domains/extmail.org/test/Maildir//.Sent/maildirfolder, No such file or
  directory
Can't open maildirsize.tmp: Permission denied
使用普通cgi就可以正常登录.
  参考extmail目录下的README.fastcgi
后知道要解决这权限问题有几种办法:
  第4种办法比较简单.就是修改apache的运行用户
vi /etc/http/conf/httpd.conf
Change User & Group to the vmail user:
  User vuser
Vgroup vgroup
  add the following lines to it:
  LoadModule fastcgi_module modules/mod_fastcgi.so
  <IfModule mod_fastcgi.c>
FastCgiIpcDir /var/lib/fcgi
</IfModule>
  Then create fastcgi ipc dirs:
  #mkdir /var/lib/fcgi
#mkdir /var/lib/fcgi/dynamic
#chmod 777 /var/lib/fcgi
#chmod 777 /var/lib/fcgi/dynamic
  这里疯狂老头的blog文章中遗漏了修改APACHE的用户和组的设置
  如果在生产环境,最好用第6种办法.更加安全
  最后几个原文中遗漏和错误的地方.
  extman的后台密码在0.22版本改成了extmail*123*,希望大家仔细看文档.
  extmail复制到/var/www/extsuite目录后,需要将webmail.cf.default改名为webmail.cf
  此文件里面的连接数据库的地方也需要修改,其他设置根据需要修改,比如去掉验证码等.
否则登录webmail的时候会报错.
  补充一个extmail的修改.
extmail的首页域名这个框,需要手动输入.比较麻烦,如果用域名访问,可以根据域名来自动填充.如果二级域
  名不是www.XXXX.com.cn 或者mail.XXXX.com.cn这样的格式,程序无法识别,需要修改下面的地方.
  vi /var/www/extsuite/extmail/html/default/index.html
找到:
var res = url.match(/^(mail|netra|webmail|www|freemail|)\.(.*)/);
在这里面加入你需要省略的域名前缀,例如(网址:netra.abc.com)
这样用域名访问webmail的首页的时候,域名这个地方就自动填好了.如果是多个域,为了方便用户选择,
我们改成下拉列表的形式.
  这个技巧是参考sery的postfix电子邮件精要这篇文章学来的.
在文件/var/www/extsuite/extmail/html/default/index.html 找到下面的标识
                <TD><%domain%></TD>
                <TD><INPUT TYPE="text" class="input_n" NAME="domain"></TD>
修改成下面的代码
                <TD><%domain%></TD>
                <TD><select name="domain" size="1" class="input_select">
                    <option value="extmail.org">extmail.org</option>
                    <option value="sery.com">sery.com</option>
                    </select>
                </TD>
  现在邮件域变成了下拉列表,从而方便用户的使用。
  
希望疯狂老头的文章和我的补充能方便更多的新手学习extmail.
  更多问题也可以去http://www.extmail.org的论坛学习.
  收发邮件测试.通过webmail
  发邮件,提示error code 19200
  查看日志/var/log/maillog
Jan  5 18:58:43 localhost postfix/sendmail[31694]: fatal: chdir /var/spool/postfix: Permission
  denied
  解决办法chmod 755 /var/log/postfix
  收邮件,收不到.查看日志:
Jan  5 19:02:28 localhost postfix/qmgr[12516]: 5CAC89600B: from=<netdragoon@163.com>,
  size=2269, nrcpt=1 (queue active)
Jan  5 19:02:28 localhost postfix/qmgr[12516]: warning: connect to transport maildrop: No such
  file or directory
Jan  5 19:02:28 localhost postfix/smtpd[31747]: disconnect from m13-106.163.com[220.181.13.106]
Jan  5 19:02:28 localhost postfix/error[31756]: 5CAC89600B: to=<test@coolerfeng.88pl.com>,
  relay=none, delay=0.22, delays=0.14/0.04/0/0.04, dsn=4.3.0, status=deferred (mail transport
  unavailable)
  
解决办法:
#vi /etc/postfix/master.cf
把maildrop unix - n n - - pipe
#flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}这行注释
改为flags=DRhu user=vuser argv=/usr/local/bin/maildrop -w 90 -d ${user}@${nexthop} ${recipient} ${user} ${extension} {nexthop}
注意flags=Drhu这一行前边有一个空格,要不会出现以下错
(fatal: /etc/postfix/master.cf: line 100: bad transport type: user=vuser)。
  Dec 11 08:08:06 localhost postfix/postfix-script[12498]: warning: not owned by root:
解决办法chown root:root /var/spool/postfix
  重启postfix
service postfix restart
  然后再收,这次ok了.
  pop3收邮件,参考疯狂老头的文章出现错误.无法收邮件,提示密码不对,
在日志中出现这样的错误:
Jan  5 19:43:25 localhost authdaemond: supplied password 'test' does not match clearpasswd '$1
  $9c7j7QRp$MOHH9AwEOxD.yEUjUFv5G.'
  分析和解决办法:
vi /usr/local/courier-authlib/etc/authlib/authmysqlrc
改成
MYSQL_SELECT_CLAUSE     SELECT username,password,"",uidnumber,gidnumber
  疯狂老头文章中的顺序是 username,"",password,uidnumber,gidnumber
这样取出来的是明文密码,
而我们在authmysqlrc用的是MYSQL_CRYPT_PWFIELD     password
用的是加密后的密码,因此总是验证不过去.
  我们在命令行下验证一下pop3
#telnet localhost 110
user test@coolerfeng.88pl.com
pass test
+OK logged in.
quit
这次通过了.用outlook收信,可以顺利收下来了,需要注意的是,如果建立的域不是默认域.
outlook里面的用户名是test@coolerfeng.88pl.com这样的格式.

  
关注下面的标签,发现更多相似文章