不知道如何解决 Bugzilla 电子邮件问题

不知道如何解决 Bugzilla 电子邮件问题

我安装了 Bugzilla 4.2.4,现在无法发送电子邮件。直到大约一个月前,它都能毫无问题地发送电子邮件(大约三个月前没有问题)。如果有人发表评论、新错误或任何其他应该生成电子邮件的内容,则在他们点击“提交”后,以下页面将永远超时,但最终会返回“内部服务器错误”。

无论他们试图做什么都会成功(创建错误、附加文件、发布评论等),因此看来问题仅在于生成电子邮件。继官方指南我已经创建了任何故障排除建议,errorlog但输出充其量是模糊的:

---------------------------------------------------------------------------
[11817] 06/03/13 13:02:02 global/code-error.html.tmpl mail_send_error 127.0.0.1
[11817] $env(ANSI_COLORS_DISABLED) = 1;
[11817] $env(HOME) = "/root";
[11817] $env(LOGNAME) = "root";
[11817] $env(OLDPWD) = "/root";
[11817] $env(PATH) = "/usr/lib:/usr/sbin:/usr/ucblib";
[11817] $env(PWD) = "/var/www/bugzilla";
[11817] $env(SHELL) = "/bin/sh";
[11817] $env(SHLVL) = 1;
[11817] $env(USER) = "root";
[11817] $env(_) = "/var/www/bugzilla/whine.pl";

---------------------------------------------------------------------------
[23266] 06/03/13 13:17:02 global/code-error.html.tmpl mail_send_error 127.0.0.1
[23266] $env(ANSI_COLORS_DISABLED) = 1;
[23266] $env(HOME) = "/root";
[23266] $env(LOGNAME) = "root";
[23266] $env(OLDPWD) = "/root";
[23266] $env(PATH) = "/usr/lib:/usr/sbin:/usr/ucblib";
[23266] $env(PWD) = "/var/www/bugzilla";
[23266] $env(SHELL) = "/bin/sh";
[23266] $env(SHLVL) = 1;
[23266] $env(USER) = "root";
[23266] $env(_) = "/var/www/bugzilla/whine.pl";

在整个故障排除过程中,我通过将 SELinux 切换为 Permissive 模式来验证 SELinux 不是问题,并且我创建了简单的 Perl 脚本,当通过 Apache httpd 调用时,这些脚本会发送我的个人电子邮件帐户。对于此错误, httpderror_log没有任何太有趣的内容:

[Wed Jun 12 13:21:20 2013] [warn] [client 152.xx.99.118] Timeout waiting for output from CGI script /var/www/bugzilla/post_bug.cgi, referer: http://bugs.xxx.edu/enter_bug.cgi?product=Banner%20INB
[Wed Jun 12 13:21:20 2013] [error] [client 152.xx.99.118] Premature end of script headers: post_bug.cgi, referer: http://bugs.xxx.edu/enter_bug.cgi?product=Banner%20INB

基本上,我不确定从哪里获取它,我不知道如何让 Bugzilla 为我提供更多描述性错误信息。我知道在管理上我没有改变任何东西,有足够的处理器时间和存储空间可用,所以我不确定为什么它突然坏了。

这是在装有 Perl 5.8.8 的 RHEL5 机器上

答案1

当我遇到这样的困难时,我会经常使用斯特雷斯寻找线索。

这是一个方便的单行代码来做到这一点

ps -ef |grep apache |grep -v grep |awk '{print $2}' | while read pid ; do sudo strace -p$pid -o /tmp/strace.$pid & done

它获取所有 apache pid,并为每个 pid 附加一个 strace,将它们的输出写入到不同的文件中/tmp/

完成此操作后,重现错误,然后终止所有 strace 进程:

sudo killall strace

查找 strace 生成的最大文件,它们很可能是相关 apache 进程的 strace:

ls -lSrh /tmp/strace.*

看看其中是否有任何线索(包含 ENO 或 ERR 的行尤其令人感兴趣)。

答案2

这里有一些额外的项目可以尝试。

#1 - 增加 Apache 的日志记录

您可以提高 Apache 中的日志记录级别吗?如下:LogLevel info详细信息在这里

#2 - /var/log/maillog

/var/log/maillog当 Bugzilla 尝试发送电子邮件时是否会显示任何其他消息?

#3 - 发送电子邮件

您可以从邮箱发送电子邮件吗?我会从命令行尝试一下。您应该能够使用该mail命令来构建电子邮件。

相关内容