Troubles when restarting amavis
Dauser Martin Johannes
mdauser at cs.sbg.ac.at
Tue Feb 13 00:20:21 CET 2018
On Mon, 2018-02-12 at 22:10 +0100, nerbrume at free.fr wrote:
> Hello,
>
> I'm using spamassassin and amavisd-new on a Debian 9. (and some
> other
> software that might be relevant : Postfix, dovecot, shorewall)
> Spamassassin is set to restart amavis upon any DB update, at around
> 4h20
> (am). (This is Debian default config, I don't know why it really need
> to
> be done).
> Since approx. 5 months, amavis would sometime crash upon this
> restart,
> with the following error (in /var/log/syslog. A bit more context
> added
> at the end of this mail):
>
> Feb 11 04:23:15 myserver amavis[23850]: (!)Net::Server:
> 2018/02/11-04:23:15 Can't connect to TCP port 10024 on 127.0.0.1
> [Address already in use]\n at line 68 in file
> /usr/share/perl5/Net/Server/Proto/TCP.pm
>
> (amavis is indeed configured to listen on 10024)
# netstat -tulpn | grep ":10024"
when this error occurs is most likely revealing that amavis is running
on this port. But still knowing is knowing, guessing is guessing.
>
> This crash is very rare, I would say about once a month, if not less.
> I typically never managed to trigger it when restarting amavis
> manually.
> However when it happens, it is quite bothersome : all incoming e-
> mail
> gets rejected, including the alerts that warns me about the amavis
> failure to restart...
>
> When Spamassassin restarts amavis, it calls "/etc/init.d/amavis
> restart"
> which in turn calls sequentially "stop" then "start", using
> start-stop-daemon, with a PID file.
> I've tried to set a delay (20s) between the stop and start, without
> much
> luck.
Actually systemd is running a generator to interpret /etc/init.d/* and
dynamically creates .service files, which are executed. The generator
is somewhere at /lib/systemd/system-generators/systemd-sysv-generator
and it's results should be at /run/systemd/generator.late/* .
Reading your description it sounds like dynamically created
spamassassin.service is called, which calls /etc/init.d/amavis, which
is intercepted by systemd (LSB) to run amavis.service #headaches#.
Perhaps there's a problem with the interpretation of the PID or the
dependencies create a cycle? I'm no expert in systemd though, so I'm
afraid to be of no great help.
"If a service is requested under a certain name but no unit
configuration file is found, systemd looks for a SysV init script by
the same name (with the .service suffix removed) and dynamically
creates a service unit from that script. This is useful for
compatibility with SysV. Note that this compatibility is quite
comprehensive but not 100%. For details about the incompatibilities,
see the Incompatibilities with SysV[1] document."
[1] http://www.freedesktop.org/wiki/Software/systemd/Incompatibilities
I had some time "fun" with another systemd generator used for
/etc/fstab, not mounting iSCSI-drives. In the end I created my own
.mount directives within systemd's config method.
Btw. you have an interesting configuration, as I thought amavisd is
it's own spamd daemon (using perl API) and therefore process spamd
isn't needed at all.
>
> I can post my amavis and/or spamassassin config, but nothing changed
> since at least 1 or 2 years, so I don't think the culprit is there.
> From my admin notes, the only thing that might have changed on this
> machine (and that could be relevant) is it's ipv6 connectivity.
>
> Any idea of what might be going on ?
> Any idea of where I might be looking for clues ? Any debug option I
> could enable ?
>
> Thanks for reading !
>
> N
>
>
> P.S. : the error, from /var/log/syslog, with a bit more context
> (real
> server name is redacted). As you can see everything else seems to be
> ok... :
>
> Feb 11 04:22:36 myserver systemd[1]: Reloading Perl-based spam
> filter
> using text analysis.
> Feb 11 04:22:36 myserver systemd[1]: Reloaded Perl-based spam filter
> using text analysis.
> Feb 11 04:22:37 myserver systemd[1]: Stopping LSB: Starts amavisd-
> new
> mailfilter...
> Feb 11 04:22:39 myserver spamd[2957]: spamd: server hit by SIGHUP,
> restarting
> Feb 11 04:22:41 myserver spamd[2957]: spamd: child [2979] killed
> successfully: interrupted, signal 2 (0002)
> Feb 11 04:22:41 myserver spamd[2957]: spamd: child [2978] killed
> successfully: interrupted, signal 2 (0002)
> Feb 11 04:22:44 myserver spamd[2957]: spamd: server socket closed,
> type
> IO::Socket::IP
> Feb 11 04:22:44 myserver spamd[2957]: spamd: server socket closed,
> type
> IO::Socket::IP
> Feb 11 04:22:47 myserver spamd.pid --create-prefs --max-children 5
> --helper-home-dir: spamd: restarting using '/usr/sbin/spamd -d
> --pidfile=/var/run/spamd.pid --create-prefs --max-children 5
> --helper-home-dir'
> Feb 11 04:22:47 myserver spamd[2957]: logger: removing stderr method
> Feb 11 04:22:55 myserver amavis[23809]: Stopping amavisd: amavisd-
> new.
> Feb 11 04:22:55 myserver systemd[1]: Stopped LSB: Starts amavisd-new
> mailfilter.
> Feb 11 04:22:55 myserver systemd[1]: Starting LSB: Starts amavisd-
> new
> mailfilter...
> Feb 11 04:22:56 myserver spamd[23816]: zoom: able to use 347/347
> 'body_0' compiled rules (100%)
> Feb 11 04:23:05 myserver spamd[23816]: spamd: server started on
> IO::Socket::IP [::1]:783, IO::Socket::IP [127.0.0.1]:783 (running
> version 3.4.1)
> Feb 11 04:23:05 myserver spamd[23816]: spamd: server pid: 23816
> Feb 11 04:23:05 myserver spamd[23816]: spamd: server successfully
> spawned child process, pid 23846
> Feb 11 04:23:05 myserver spamd[23816]: spamd: server successfully
> spawned child process, pid 23847
> Feb 11 04:23:05 myserver spamd[23816]: prefork: child states: IS
> Feb 11 04:23:05 myserver spamd[23816]: prefork: child states: II
> Feb 11 04:23:05 myserver amavis[23834]: starting. /usr/sbin/amavisd-
> new
> at myserver.mydomain.com amavisd-new-2.10.1 (20141025), Unicode
> aware,
> LC_ALL="C", LANG="fr_FR.UTF-8"
> Feb 11 04:23:15 myserver amavis[23827]: Starting amavisd: amavisd-
> new.
> Feb 11 04:23:15 myserver systemd[1]: Started LSB: Starts amavisd-new
> mailfilter.
> Feb 11 04:23:15 myserver amavis[23850]: (!)Net::Server:
> 2018/02/11-04:23:15 Can't connect to TCP port 10024 on 127.0.0.1
> [Address already in use]\n at line 68 in file
> /usr/share/perl5/Net/Server/Proto/TCP.pm
>
> to be compared with a "normal" (here, triggered manually) restart :
>
> Feb 9 05:00:02 myserver systemd[1]: Stopping LSB: Starts amavisd-
> new
> mailfilter...
> Feb 9 05:00:16 myserver amavis[6488]: Stopping amavisd: amavisd-new.
> Feb 9 05:00:16 myserver systemd[1]: Stopped LSB: Starts amavisd-new
> mailfilter.
> Feb 9 05:00:16 myserver systemd[1]: Starting LSB: Starts amavisd-
> new
> mailfilter...
> Feb 9 05:00:33 myserver amavis[8917]: starting. /usr/sbin/amavisd-
> new
> at myserver.mydomain.com amavisd-new-2.10.1 (20141025), Unicode
> aware,
> LC_ALL="C", LANG="fr_FR.UTF-8"
> Feb 9 05:00:46 myserver amavis[8703]: Starting amavisd: amavisd-new.
> Feb 9 05:00:46 myserver systemd[1]: Started LSB: Starts amavisd-new
> mailfilter.
> Feb 9 05:00:46 myserver amavis[11922]: Net::Server: Group Not
> Defined.
> Defaulting to EGID '129 129'
> Feb 9 05:00:46 myserver amavis[11922]: Net::Server: User Not
> Defined.
> Defaulting to EUID '119'
> Feb 9 05:00:46 myserver amavis[11922]: Module
> Amavis::Conf 2.404
> (...)
> (... more module loading ...)
> (...)
> Feb 9 05:00:48 laborit amavis[11922]: Using primary internal av
> scanner
> code for ClamAV-clamd
> Feb 9 05:00:48 laborit amavis[11922]: Found secondary av scanner
> ClamAV-clamscan at /usr/bin/clamscan
> Feb 9 05:00:48 laborit amavis[11922]: Deleting db files
> __db.002,nanny.db,__db.003,__db.001,snmp.db in /var/lib/amavis/db
> Feb 9 05:00:48 laborit amavis[11922]: Creating db in
> /var/lib/amavis/db/; BerkeleyDB 0.55, libdb 5.3
More information about the amavis-users
mailing list