Discuz!开放部分源代码 Libjingle - Google Talk Voice and P2P Interoperability Library
Dec 13
作者: 肖建彬 | 可以转载, 转载时务必以超链接形式标明文章原始出处和作者信息及版权声明
网址:http://www.xiaojb.com/archives/mailtech/debugsmtpd.shtml

今天有闲心升级了一下pmail.xiaojb.com的postfix,结果升级后发现smtpd总是异常退出,log中的记录是:
warning: process /home/postfix/libexec/smtpd pid 15753 exit status 127

修改master.cf,smtpd后边加上-v,继续调试依然看不出问题所在。
没有办法了,只好用strace。

postfix的smtpd是由master启动的,25端口没有请求,master是不会启动smtpd的,但是启动后很快会异常退出
最后使用的办法是
postfix stop
postfix start
telnet localhost 25
马上在另一个窗口运行
strace -p `ps -ax|grep smtpd | grep -v grep|awk ‘{print $1}’`

最后得到了这样的结果
writev(2, [{"smtpd", 5}, {": ", 2}, {"relocation error", 16}, {": ", 2}, {"smtpd", 5}, {": ", 2}, {"undefined symbol: sasl_version_i"..., 35}, {"", 0}, {"", 0}, {"\n", 1}], 10) = 68

原来是sasl库的问题
ldd /home/postfix/libexec/smtpd,发现使用的sasl2的链接库是系统默认的,而我编译postfix的时候是自己编译的cygrus-sasl2,只有重新编译postfix。
make的时候加上这样的环境变量
export LD_RUN_PATH=/home/postfix/sasl/lib:/usr/lib/mysql:/home/postfix/authlib/lib/courier-authlib

重新编译调试,一切OK了。

Tags:

2 Responses to “12日晚遭遇的调试postfix/smtpd的问题”

  1. Daivd yan Says:

    很想和你交流Postfix的问题.请加MSN:weidong35@hotmail.com

  2. xjb Says:

    18051473
    加入这个群吧,这里人很多。

Leave a Reply