学习疯狂老头的blog( [url]http://blog.redzone.com.cn[/url]安装extmail心得
原文链接,第一部分:[url]http://blog.redzone.com.cn/read.php/35.htm[/url]
第二部分 [url]http://blog.redzone.com.cn/read.php/36.htm[/url]
第三部分 [url]http://blog.redzone.com.cn/read.php/37.htm[/url]
照着疯狂老头的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 测试账号,疯狂老头的文章中说用 [email]test@extmail.org[/email]这个用户.但是没有这个用户,因此
用系统自带的 [email]postmaster@extmail.org[/email]测试通过
用老头的命令maildrop -V 10 -d [email]postmaster@extmail.org[/email]会卡住.需要手动按ctrl+c结束.
也可以用echo test| maildrop -V 10 -d [email]postmaster@extmail.org[/email]来测试.更加完整的过程.

如果出现认证失败maildrop: Temporary authentication failure..检查/var/log/maillog发现是无法连接
数据库
Jan  5 14:11:18 localhost authdaemond: received userid lookup request: [email]postmaster@extmail.org[/email]
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的首页域名这个框,需要手动输入.比较麻烦,如果用域名访问,可以根据域名来自动填充.如果二级域
名不是 [url]www.XXXX.com.cn[/url] 或者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.
更多问题也可以去 [url]http://www.extmail.org[/url]的论坛学习.
 
收发邮件测试.通过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=< [email]netdragoon@163.com[/email]>,
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=< [email]test@coolerfeng.88pl.com[/email]>,
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 [email]test@coolerfeng.88pl.com[/email]
pass test
+OK logged in.
quit
这次通过了.用outlook收信,可以顺利收下来了,需要注意的是,如果建立的域不是默认域.
outlook里面的用户名是 [email]test@coolerfeng.88pl.com[/email]这样的格式.