我正在尝试运行 spamd.exe 文件,该文件将运行 windows 版 spamassassin,作为 windows 服务。我试过
sc create spamassassin binPath="C:\Program Files (x86)\JAM Software\SpamAssassin for Windows\spamd.exe" DisplayName="Spam Assassin" start=auto
并得到
[SC] CreateService SUCCESS
结果。
我现在可以在服务中看到“Spam Assassin”。当我右键单击它并选择“启动”时,我收到错误,如“错误 1053:服务未及时响应启动或控制请求。”
几乎没有关于 sc.exe 将 spamd.exe 文件作为服务运行的主题,所以我决定在这里询问。
我知道 spamd.exe 能够通过 Microsoft 的旧实用程序 SrvAny 作为 Windows 服务运行。但它太旧了,与 Windows Server 2012 或 x64 可执行文件不兼容(这是我在论坛上看到的)。
有人能告诉我为什么在服务启动时会出现 1053 错误,或者至少有一种方法可以让 spamd.exe 在 Windows Server 2012 环境中作为服务运行?
谢谢!
答案1
Windows Server 2012R2
我成功地让 Spamd.exe 在 上使用作为服务运行srvany.exe
。 它不受 的支持2012R2
,但对于此目的来说,它工作得很好。
首先srvany.exe
从Windows Server 2003
资源工具包中获取并确保它已安装在c:\windows\system32
(我将在本教程中使用所有默认路径,根据需要进行修改)。
然后,从具有管理员权限的命令提示符运行以下命令:
sc create Spamd binPath= C:\Windows\System32\srvany.exe DisplayName= "SpamAssassin Daemon"
接下来,以管理员权限打开 regedit 并导航到该键:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Spamd\
在“ ”下创建一个名为“Parameters”的子键Spamd
。在“Parameters”下创建一个名为“ Application
”的字符串值。输入“ C:\Program Files (x86)\JAM Software\SpamAssassin for Windows\spamd.exe
”作为“Application”的字符串值(包括“ ”作为值的一部分)。创建另一个名为“ ”的字符串值AppParameters
,并输入以下内容作为字符串值:< -l -s "C:\Program Files (x86)\JAM Software\SpamAssassin for Windows\spamd.log
">(不带<>但带有“ ”)。创建另一个名为“ AppDirectory
”的字符串值,并输入“ C:\Program Files (x86)\JAM Software\SpamAssassin for Windows\
”作为值(不带“ ”)。
完成后,您就可以启动服务了。请注意,即使值有错误,服务也会无错误地启动,AppParameters
因此请务必检查C:\Program Files (x86)\JAM Software\SpamAssassin for Windows\spamd.log
日志文件以确保 SpamD 确实在运行。如果不是,您可能需要调整 AppParameters 值中的路径以反映系统上的正确路径。
一旦 SpamD 服务启动并且日志文件中有正确的内容,您就完成了!
请注意,我使用了类似的服务配置在同一台服务器上以守护进程的形式运行 ClamAV,而且效果也很好。
答案2
您收到可怕的“错误 1053”,因为 spamd.exe 不是真正的 Windows 服务,无法正确响应您启动服务的请求。您需要使用“服务包装器”(例如微软的服务,但也有其他的)可以接受您的启动服务请求并启动 spamd.exe。
答案3
考虑使用非吸吮服务经理。它运行良好,有 32 位和 64 位版本。它可以检测可执行文件是否在启动时失败并重新启动它,以及许多其他功能,包括图形服务安装和删除工具。强烈推荐,由我推荐!(没有从属关系,只是一个快乐的用户。)