<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.chepkov.com/w/index.php?action=history&amp;feed=atom&amp;title=Spamassassin_watchdog</id>
	<title>Spamassassin watchdog - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.chepkov.com/w/index.php?action=history&amp;feed=atom&amp;title=Spamassassin_watchdog"/>
	<link rel="alternate" type="text/html" href="https://www.chepkov.com/w/index.php?title=Spamassassin_watchdog&amp;action=history"/>
	<updated>2026-04-30T17:53:58Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://www.chepkov.com/w/index.php?title=Spamassassin_watchdog&amp;diff=79&amp;oldid=prev</id>
		<title>Vvc: Initial version</title>
		<link rel="alternate" type="text/html" href="https://www.chepkov.com/w/index.php?title=Spamassassin_watchdog&amp;diff=79&amp;oldid=prev"/>
		<updated>2008-07-10T14:52:25Z</updated>

		<summary type="html">&lt;p&gt;Initial version&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Even though it doesn&amp;#039;t happen quite often, sometimes spamd dies and that will lead to spam getting through.&lt;br /&gt;
To prevent this here is a simple watchdog that can monitor status of the spamd&lt;br /&gt;
&lt;br /&gt;
/usr/local/sbin/spamd.watch&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
&lt;br /&gt;
use strict;&lt;br /&gt;
use IO::Socket;&lt;br /&gt;
&lt;br /&gt;
my $spamd_tcp_port = 783;&lt;br /&gt;
my $timeout = 5 ; # seconds&lt;br /&gt;
&lt;br /&gt;
my $sock = IO::Socket::INET-&amp;gt;new( PeerAddr =&amp;gt; &amp;#039;localhost&amp;#039;, &lt;br /&gt;
   PeerPort =&amp;gt; $spamd_tcp_port, Proto =&amp;gt; &amp;quot;tcp&amp;quot;, Timeout =&amp;gt; $timeout);&lt;br /&gt;
my $return;&lt;br /&gt;
&lt;br /&gt;
if ($sock &amp;amp;&amp;amp; $sock-&amp;gt;connected()) {&lt;br /&gt;
  eval {&lt;br /&gt;
    print $sock &amp;quot;PING SPAMC/1.0\n&amp;quot;;&lt;br /&gt;
    local $SIG{ALRM} = sub {die &amp;quot;Timeout&amp;quot;};&lt;br /&gt;
    alarm $timeout;&lt;br /&gt;
    $return = &amp;lt;$sock&amp;gt;;&lt;br /&gt;
    alarm 0;&lt;br /&gt;
  };&lt;br /&gt;
  if ( defined ($@) &amp;amp;&amp;amp; $@ eq &amp;quot;Timeout&amp;quot; ) {&lt;br /&gt;
    exit 0;&lt;br /&gt;
  }&lt;br /&gt;
  if ($return !~ /SPAMD.+PONG/ ) {&lt;br /&gt;
    exit 0;&lt;br /&gt;
  } else {&lt;br /&gt;
    exit 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
exit 0;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now add this script into your cron:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
*/4 * * * * root /usr/local/sbin/spamd.watch &amp;amp;&amp;amp; /sbin/service spamassassin condrestart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vvc</name></author>
	</entry>
</feed>