It works with no changes by using TCP socket (on localhost). —Carlo > On 08 Jun 2016, at 14:48, Carlo Manuali <carlo.manu...@unipg.it> wrote: > > I did all but I did not solve the problem so I will better investigate > alternative causes. > > I suppose something went wrong when SA tries to load the plugin (by accessing > clamav.cf and/or clamav.pm) during the startup process only. > > At this point probably is not a time-related issue. > > Thank you Harald. > > —Carlo > >> On 08 Jun 2016, at 13:56, Reindl Harald <h.rei...@thelounge.net> wrote: >> >> >> >> Am 08.06.2016 um 13:49 schrieb Carlo Manuali: >>> I wrote a init-script as follows (S20clamd followed by other services >>> then S78SpamAssassin) but nothing has changed (in the meantime all the >>> daemons and services are up and running). >>> >>> On top of all, just re-running "/etc/init.d/SpamAssassin restart" from >>> shell the system starts working. >>> >>> Any other idea? >> >> i would say "/usr/local/sbin/clamd" is plain wrong and don't lead in the >> expected double-fork behavior >> >> "daemon /usr/local/sbin/clamd" likely works better >> >> https://wiki.mattrude.com/ClamAV#ClamAV_INIT_Script >> daemon $prefix/sbin/clamd >> ____________________________________ >> >> no idea what in fact goes wrong because i can do a "systemctl restart >> clamd-sa" at every moment in time while SA is already runnign since SA is >> just supposed to connect again to the socket and not have a permanent >> connection at all >> >> so it should be anyways only a temorary problem and SA is also supposed to >> handle that because when clamd reloads it's signatures due updates it also >> don't respond which leads in case of clamav-milter in a temporary reject on >> the postfix side >> >> >>> # cat S20clamd >>> #!/bin/sh >>> # >>> # description: ClamAV daemon >>> # >>> # Get function from functions library >>> . /etc/init.d/functions >>> start() { >>> echo -n $"Starting clamd: " >>> /usr/local/sbin/clamd >>> touch /var/lock/subsys/clamd >>> success $”ClamAV daemon startup" >>> echo >>> } >>> stop() { >>> echo -n $"Stopping clamd: " >>> killproc clamd >>> rm -f /var/lock/subsys/clamd >>> echo >>> } >>> case "$1" in >>> start) >>> start >>> ;; >>> stop) >>> stop >>> ;; >>> status) >>> status clamd >>> ;; >>> restart) >>> stop >>> start >>> ;; >>> *) >>> echo $"Usage: $0 {start|stop|restart}" >>> exit 1 >>> esac >>> exit 0 >>> >>> >>>> On 08 Jun 2016, at 13:19, Reindl Harald <h.rei...@thelounge.net >>>> <mailto:h.rei...@thelounge.net>> wrote: >>>> >>>> >>>> >>>> Am 08.06.2016 um 12:58 schrieb Carlo Manuali: >>>>> yes, 6.7. >>>>> >>>>> I totally agree with you, but unfortunately I can’t change a system >>>>> in production now. >>>>> >>>>> Any other ideas? >>>> >>>> try to implement something like >>>> "ExecStartPost=/usr/libexec/mysqld-wait-ready $MAINPID" in the >>>> mysqld-unit after starting clamd, in fact it tests if mysqld is ready >>>> to accept connections >>>> >>>> get rid of rc.local >>>> >>>> /etc/rc3.d/ has numbers in the filenames for ordering >>>> >>>> so you need a service between clamd and spamassassin which holds as >>>> long as clamd is not ready >>>> >>>> "/usr/local/sbin/clamd && /etc/init.d/spamassassin restart" in >>>> "rc.local" can not work because at that moment spamassassin is already >>>> running too soon - you need *at least* a init-script for clamd with a >>>> correct ordering at boot >>>> >>>> http://www.cyberciti.biz/tips/linux-write-sys-v-init-script-to-start-stop-service.html >>>> ________________________________________ >>>> >>>> [root@srv-rhsoft:~]$ cat /usr/libexec/mysqld-wait-ready >>>> #!/usr/bin/bash >>>> >>>> # Service file passes us the daemon's PID >>>> daemon_pid="$1" >>>> >>>> # Wait for the server to come up or for the mysqld process to disappear >>>> ret=0 >>>> while /usr/bin/true; do >>>> RESPONSE=`/usr/bin/mysqladmin --defaults-file=/etc/my.cnf >>>> --socket=/var/lib/mysql/mysql.sock --user=UNKNOWN_MYSQL_USER ping 2>&1` >>>> mret=$? >>>> if [ $mret -eq 0 ]; then >>>> break >>>> fi >>>> # exit codes 1, 11 (EXIT_CANNOT_CONNECT_TO_SERVICE) are expected, >>>> # anything else suggests a configuration error >>>> if [ $mret -ne 1 -a $mret -ne 11 ]; then >>>> ret=1 >>>> break >>>> fi >>>> # "Access denied" also means the server is alive >>>> echo "$RESPONSE" | grep -q "Access denied for user" && break >>>> >>>> # Check process still exists >>>> if ! /usr/bin/kill -0 $daemon_pid 2>/dev/null; then >>>> ret=1 >>>> break >>>> fi >>>> usleep 100000 >>>> done >>>> >>>> exit $ret >>>> ________________________________________ >>>> >>>> >>>>>> On 08 Jun 2016, at 12:53, Reindl Harald <h.rei...@thelounge.net> wrote: >>>>>> >>>>>> >>>>>> >>>>>> Am 08.06.2016 um 12:33 schrieb Carlo Manuali: >>>>>>> yes, I’m using scientific linux, fedora/redhat in other words. I >>>>>>> also tried: >>>>>> >>>>>> which version - sounds like 6 or older when someone is talking about >>>>>> /etc/init.d/ >>>>>> >>>>>>> /usr/local/sbin/clamd && /etc/init.d/spamassassin restart >>>>>>> >>>>>>> in rc.local (-> S99local in /etc/rc3.d/ )with no success. >>>>>> >>>>>> get SL7.0 which comes with systemd and i can assure you >>>>>> systemd.units with correctsAfter/Before statements and clamd as >>>>>> "Type=forking" works with a perfectly start ordering >>>>>> >>>>>> when "rc.local" is the answer then the question was typically wrong >>>>>> >>>>>>>> On 08 Jun 2016, at 12:11, Reindl Harald <h.rei...@thelounge.net >>>>>>>> <mailto:h.rei...@thelounge.net>> wrote: >>>>>>>> >>>>>>>> Am 08.06.2016 um 12:02 schrieb Carlo Manuali: >>>>>>>>> I’ve installed the ClamAV plugin (v1.93, with v0.99.2 as ClamAV >>>>>>>>> engine) according to: >>>>>>>>> https://wiki.apache.org/spamassassin/ClamAVPlugin. All has gone well, >>>>>>>>> it works. >>>>>>>>> >>>>>>>>> In particular I’ve adopted the local mode, that uses a local socket >>>>>>>>> (file) in order to establish the communication between them. >>>>>>>>> >>>>>>>>> Now, I need to put both (clamd -the daemon- and the SpamAssassin >>>>>>>>> service) starting at boot, keeping in mind, of course, that >>>>>>>>> SpamAssassin needs clamd to be up un running in order to load the >>>>>>>>> related plugin. So: >>>>>>>>> >>>>>>>>> - I tried to put clamd on rc.local then moving SpamAssassin after: >>>>>>>>> all the services started but the plugin do not "attach the daemon” >>>>>>>>> (no filtering viruses); >>>>>>>>> - I tried to put clamd followed by a ‘SpamAssassin restart' on >>>>>>>>> rc.local: the same, all seems ok but no success. >>>>>>>>> >>>>>>>>> Only when I restart SpamAssassin manually from a shell (with the >>>>>>>>> clamd started) all goes well. As a matter of fact, I receive on the >>>>>>>>> clamd logfile the message: >>>>>>>>> >>>>>>>>> stream(127.0.0.1@1858): OK. >>>>>>>>> >>>>>>>>> Then the filtering is ok. >>>>>>>>> >>>>>>>>> Any idea on how to proceed? >>>>>>>> >>>>>>>> "clamd" needs a relatve long time to start because reading and verify >>>>>>>> signatures (no sleep 15 is not a solution, it only masks the problem) >>>>>>>> >>>>>>>> so it needs to be "Type=forking" instead "Type=simple" (the Fedora >>>>>>>> systemd-units are plain wrong) to make the ordering really working >>>>>>>> >>>>>>>> no idea how to do this *sane* on a non systemd-os since i did not >>>>>>>> touch such setups the last 5 years and now after even Debian >>>>>>>> switches.... >>>>>>>> >>>>>>>> see systemd-analyze at bottom >>>>>>>> ____________________________________________ >>>>>>>> >>>>>>>> [root@mail-gw:~]$ cat /etc/systemd/system/clamd-sa.service >>>>>>>> [Unit] >>>>>>>> Description=ClamAV Scanner Daemon for SpamAssassin >>>>>>>> Before=spamassassin.service >>>>>>>> >>>>>>>> [Service] >>>>>>>> Type=forking >>>>>>>> Environment="TMPDIR=/tmp" >>>>>>>> Environment="LANG=en_GB.UTF-8" >>>>>>>> ExecStart=/usr/sbin/clamd -c /etc/clamd.d/scan-sa.conf >>>>>>>> ExecReload=/usr/bin/kill -SIGUSR2 $MAINPID >>>>>>>> Restart=always >>>>>>>> RestartSec=1 >>>>>>>> User=clamscan >>>>>>>> Group=clamilt >>>>>>>> PrivateTmp=yes >>>>>>>> PrivateDevices=yes >>>>>>>> NoNewPrivileges=yes >>>>>>>> CapabilityBoundingSet=CAP_KILL >>>>>>>> ReadOnlyDirectories=/etc >>>>>>>> ReadOnlyDirectories=/usr >>>>>>>> ReadOnlyDirectories=/var/lib >>>>>>>> ____________________________________________ >>>>>>>> >>>>>>>> >>>>>>>> [root@mail-gw:~]$ systemd-analyze >>>>>>>> Startup finished in 366ms (kernel) + 539ms (initrd) + 8.907s >>>>>>>> (userspace) = 9.813s >>>>>>>> >>>>>>>> [root@mail-gw:~]$ systemd-analyze blame >>>>>>>> 6.882s clamd.service >>>>>>>> 6.313s clamd-sa.service >>>>>>>> 3.250s sa-update.service >>>>>>>> 1.194s bayes.service >>>>>>>> 527ms postfix.service >>>>>>>> 420ms network.service >>>>>>>> 361ms spamassassin.service >>>>>>>> 281ms mailgraph.service >>>>>>>> 245ms dev-sdb1.device >>>>>>>> 205ms iptables.service >> > > ______________________________________________________________________ > > Dr. Carlo Manuali > Responsabile Servizi Informatici / IT Services Manager > Department of Chemistry, Biology and Biotechnology - University of Perugia > (IT) > Mail: carlo.manu...@unipg.it > Web: http://www.unipg.it/carlo > Office: +39.075.5855213 > ______________________________________________________________________ >
______________________________________________________________________ Dr. Carlo Manuali Responsabile Servizi Informatici / IT Services Manager Department of Chemistry, Biology and Biotechnology - University of Perugia (IT) Mail: carlo.manu...@unipg.it Web: http://www.unipg.it/carlo Office: +39.075.5855213 ______________________________________________________________________