如何修复OS X Server“ LibClamAV错误:mpool_malloc():尝试分配8388608字节。”重新启动循环?


0

自上周五(2016年10月21日)以来,重新启动10.6(Snow Leopard Server)和10.7(Lion Server)都会导致多次重复记录错误消息:

LibClamAV错误:mpool_malloc():尝试分配8388608字节。

警告:[LibClamAV] mpool_malloc():尝试分配8388608字节。请向http://bugs.clamav.net报告。日志大小= 1048612,最大值= 1048576禁用日志记录(超出了最大日志文件大小)。

解决方法(不是修复程序)

禁用“服务器管理”>“邮件”>“设置”>“常规”>“过滤器”后:

  1. []启用垃圾邮件过滤
  2. []启用病毒过滤

错误消息消失,重新启动停止。

回归

根据ClamAV.net错误11647,似乎ClamAV引擎($ /usr/bin/clamscan --version... 0.97.8)太旧了。

怎么修?

如何LibClamAV Error: mpool_malloc(): Attempt to allocate 8388608 bytes永久修复ClamAV 错误并具有垃圾邮件和病毒过滤功能?换句话说,如何升级Mac OS X Lion 10.7服务器的内置clamav扫描程序(而不在运行过时的ClamAV的计算机上安装Xcode)


链接的错误描述建议升级扫描仪。你已经尝试过了吗?
nohillside

@patrix“ 如何在Mac OS X Lion 10.7服务器上升级clamav扫描仪? ”是解决我的问题的另一种方法。Apple没有可用的升级。因此,我正在寻找一种方法来(破解)升级内置的ClamAV扫描仪。注意:我目前只能使用沙箱,如何使用(bash)脚本编辑clamd.sb。
Pro Backup

是否可以选择升级到clamxav.com/download.html?还是从源代码编译ClamAV?
nohillside

@patrix不能升级到clamxav,因为这不能修复内置的clamd。意外启用内置的clamd或freshclam会使系统再次崩溃(重新引导循环)。从源代码编译是一个选项,尽管不在该主机上,但只能在单独的mac上。我当前的xCode机器运行10.9.5。感谢您细化我的问题。
Pro Backup

以一种或另一种方式恕我直言,您将需要升级(clamav或macOS)和/或自己编译某些内容(然后替换内置版本)。排除这些选项会在这里为解决方案空间设置相当大的界限。
nohillside

Answers:


1

我在经过精心重建的运行10.6的OS X服务器上浏览了该页面,以解决这个问题(我有理由)。Pro Backup的“自行编译”答案非常详细,但至少在短期内,我可能遇到了一个更简单的答案。我注意到我使用的另一台也使用10.6 Server的计算机没有问题。使用查看每个版本/usr/bin/clamscan --version,我看到它们是相同的引擎版本,但是定义版本不同:

有问题

ClamAV 0.97.8/22421/Sun Oct 23 22:58:38 2016
ClamAV 0.97.8/22422/Mon Oct 24 12:02:38 2016

没有问题

ClamAV 0.97.8/22470/Wed Nov  2 19:05:24 2016

手动下载clamAV定义

因此,决定尝试使用/usr/bin/freshclam(as sudo)手动下载病毒定义。它运行了很多版本,最后以22471结束。尚不确定这是否能解决问题,但我希望它的方向正确。


我可以确认手动ClamAV定义更新有效。尽管这仍然会使您的ClamAV引擎处于过时且不再经过签名测试的0.97版本。ClamAV宣布引擎0.97寿命终止:2016年6月1日。Quote:签名可能会在6月1日之后生效,我们不再测试该配置,因此您是一个人
Pro Backup

尽管仅更新定义是快速的快速修复程序,但根本原因是将不再测试该引擎的定义。因此,我无法将此答案授予已接受答案标志。
Pro Backup

0

我遇到了同样的问题,并且禁用了邮件(我们不使用它),该问题似乎已经消失了。

我在想ClamAV推出了不好的定义或更新。最好的选择是暂时禁用过滤功能,直到他们发布更新为止。根据要求,也可能有助于将其报告给http://bugs.clamav.net


请告诉我您也报告了吗?
莫里·马克维兹

@MauryMarkowitz报告的意义不大,因为ClamAV生命周期终止政策规定,它们将无法解决旧版本(当前版本(0.99))和之前的主要发行版本(0.98)中的引擎问题。Quote:“ 目前,不支持ClamAV .97及更低版本的所有版本,包括所有次要版本。
Pro Backup

0

在10.7(Lion)上更新Apple的ClamAV

下面的更新方法需要“ Xcode”和“ Xcode命令行工具”才能从其源代码构建软件。下面的Terminal.app命令已在zsh shell中与Mac OS X 10.9.5,Xcode 6.2进行了测试。有关为何做出多个选择的详细信息,请参阅底部的“背景”部分。

内部版本8.39

$ cd ~
$ mkdir src
$ cd /tmp && curl -O ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.gz && cd -
$ cd src
$ tar zxf /tmp/pcre-8.39.tar.gz && rm /tmp/pcre-8.39.tar.gz
$ cd pcre-8.39
$ ./configure --prefix=/usr/local/pcre
$ make && make check
$ make install DESTDIR=/tmp/pcre
$ rm -r /tmp/pcre/usr/local/pcre/share #remove docs
$ tar czvf ~/pcre-8.39.tgz -C /tmp/pcre --exclude=.DS_Store usr/

编译clamav以覆盖Mac OS X内置版本

$ cd ~/src
$ cd /tmp && curl -LO https://www.clamav.net/downloads/production/clamav-0.99.2.tar.gz && cd -
$ tar zxf /tmp/clamav-0.99.2.tar.gz && rm /tmp/clamav-0.99.2.tar.gz
$ cd clamav-0.99.2

如果没有-mmacosx-version-min=10.XClamAV 0.99.2,将使用在主机(10.9)OS X版本上运行的编译器代码优化进行构建,但不适用于10.6和10.7。

如果您不打算在10.6.8或10.7.5上运行,则可能需要更改(10.8.0或更改11.4.2uname -r)(远程)主机Mac上执行的命令的输出。

10.6.8

$ CFLAGS="-O3 -march=nocona -mmacosx-version-min=10.6" CXXFLAGS="-O3 -march=nocona -mmacosx-version-min=10.6" ./configure --prefix=/usr --libdir=/usr/lib --with-pcre=/usr/local/pcre --enable-llvm --build=x86_64-apple-darwin`uname -r` --host=x86_64-apple-darwin10.8.0 --sysconfdir=/private/etc
$ CFLAGS="-O3 -march=nocona -mmacosx-version-min=10.6" CXXFLAGS="-O3 -march=nocona -mmacosx-version-min=10.6" make
$ CFLAGS="-O3 -march=nocona -mmacosx-version-min=10.6" CXXFLAGS="-O3 -march=nocona -mmacosx-version-min=10.6" sudo make install DESTDIR=/tmp/clamav-0.99.2 && sudo rm -r /tmp/clamav-0.99.2/{private,usr/include} && sudo chown -R root:wheel /tmp/clamav-0.99.2
$ tar czvf ~/clamav-0.99.2.tgz -C /tmp/clamav-0.99.2 --exclude=.DS_Store usr/

10.7.5

$ CFLAGS="-O3 -march=nocona -mmacosx-version-min=10.7" CXXFLAGS="-O3 -march=nocona -mmacosx-version-min=10.7" ./configure --prefix=/usr --libdir=/usr/lib --with-pcre=/usr/local/pcre --enable-llvm --build=x86_64-apple-darwin`uname -r` --host=x86_64-apple-darwin11.4.2 --sysconfdir=/private/etc
$ CFLAGS="-O3 -march=nocona -mmacosx-version-min=10.7" CXXFLAGS="-O3 -march=nocona -mmacosx-version-min=10.7" make
$ CFLAGS="-O3 -march=nocona -mmacosx-version-min=10.7" CXXFLAGS="-O3 -march=nocona -mmacosx-version-min=10.7" sudo make install DESTDIR=/tmp/clamav-0.99.2 && sudo rm -r /tmp/clamav-0.99.2/{private,usr/include} && sudo chown -R root:wheel /tmp/clamav-0.99.2
$ tar czvf ~/clamav-0.99.2.tgz -C /tmp/clamav-0.99.2 --exclude=.DS_Store usr/

将.tgz文件上传或复制到远程10.7计算机

应该在远程(接收)主机上启用SSH,这些示例命令才能运行。

$ scp ~/pcre-8.39.tgz remote.host.tld:/tmp/
$ scp ~/clamav-0.99.2.tgz remote.host.tld:/tmp/

您还可以将.tgz文件上传到Web服务器,然后将其下载到远程主机上,例如,使用以下命令:

$ cd /tmp && curl -O http://crashplan.probackup.nl/install/mac/pcre-8.39.tgz && cd -
$ cd /tmp && curl -O http://crashplan.probackup.nl/install/mac/clamav-0.99.2.tgz && cd -

在/ usr / local / pcre的远程主机Mac上安装pcre 8.39

$ sudo tar zxvf /tmp/pcre-8.39.tgz -C /

(可选)在/ usr / local / bin中创建指向pcre可执行文件的链接

$ cd /usr/local/bin && sudo ln -s ../pcre/usr/local/pcre/bin/{pcre-config,pcregrep,pcretest} . && cd -

在远程主机Mac上安装ClamAV 0.99.2

$ sudo tar zxvf /tmp/clamav-0.99.2.tgz -C /

更新蛤sand沙箱配置(适用于10.7)

$ sudo sed -i '' 's#(lib|share)#(lib|share|local/pcre/lib)#' /usr/share/sandbox/clamd.sb
$ grep -q -F '(regex #"^/System/Library/PrivateFrameworks/TrustEvaluationAgent.framework/Versions/A/TrustEvaluationAgent$")' /usr/share/sandbox/clamd.sb || { awk '/\(regex #"\^\/private\/var\/clamav\/"\)/ {print "\t(regex #\"^/System/Library/PrivateFrameworks/TrustEvaluationAgent.framework/Versions/A/TrustEvaluationAgent\$\")"}; {print}' /usr/share/sandbox/clamd.sb > ~/temp-clamd.sb; cat ~/temp-clamd.sb | sudo tee /usr/share/sandbox/clamd.sb > /dev/null; rm ~/temp-clamd.sb; };

启动freshclam守护程序

$ sudo /bin/launchctl load -w /System/Library/LaunchDaemons/org.clamav.freshclam.plist

查看是否Freshclam正在更新

$ tail -f /private/var/log/freshclam.log

Ctrl+ C停止停止显示日志文件的“尾部”。

或在clamd可执行文件中检查数据库版本:

$ clamd --version
ClamAV 0.99.2/22442/Thu Oct 27 20:03:54 2016

启动clamd守护程序

$ sudo /bin/launchctl load -w /System/Library/LaunchDaemons/org.clamav.clamd.plist

清理安装程序存档文件

$ rm /tmp/pcre-8.39.tgz
$ rm /tmp/clamav-0.99.2.tgz

而已。


背景

覆盖苹果的clavav

由于Mac OS X 10.7 ClamAV 0.97版已经过时以至于破坏了系统,我认为用较新的版本覆盖内置ClamAV是明智的。通常不建议这样做,因为Apple更新会覆盖此类更改。Apple上次发布的10.7的“软件更新”可追溯到2012年 9月,2014 9月24日。因此,我预计Apple永远不会发布Lion的任何软件更新。

PCRE

ClamAV的当前版本(2016年10月)为0.99.2。该clamav版本具有名为“ pcre ” 的依赖项,运行当前失败的clamav版本0.97不需要该依赖项。因此,也需要安装一些新需要的软件。我不确定将其安装在/ usr或/ usr / local位置上哪个更好。为了安全起见,我选择不更改/ usr中的系统软件,因此使用文件夹/ usr / local / pcre。

单独的构建和发布机器

对于开源,从源代码在同一台计算机上构建和安装软件是很常见的。因为运行过时的clamav的服务器是生产服务器,所以我不会弄混它。软件编译/构建是在其他Mac盒上完成的。

问候

关于Wildcard帮助构建awk命令,以将带有制表符的新行插入clamd.sb

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.