I tried to implement the 0.95 release on my platforms (Solaris 9,
sendmail). Everything seems to work but the new clamav-milter, which
crashes every time I test it by sending a virus attached to a mail (no
message into the log file).

The error sendmail is reporting is:

  milter_read(clmilter): cmd read returned 0, expecting 5
  Milter (clmilter): to error state

It appears as a clamav-milter problem, since the clamav-milter 0.94.2
with the -e switch (external scanner) using clamd version 0.95 is currently
working as usual.
Also, when clamav-milter 0.95 is running, the clmilter_watch is unable
to speak through the unix socket (timeout), nor the clamdwatch is able
to contact it, giving the error:

  Clamd is in an unknown state.
  It returned: 

My clamav-milter.conf file is:
   ##
   ## Example config file for clamav-milter
   ##
   
   # Comment or remove the line below.
   # Example
   
   
   ##
   ## Main options
   ##
   
   # Define the interface through which we communicate with sendmail
   # This option is mandatory! Possible formats are:
   # [[unix|local]:]/path/to/file - to specify a unix domain socket
   # inet:p...@[hostname|ip-address] - to specify an ipv4 socket
   # inet6:p...@[hostname|ip-address] - to specify an ipv6 socket
   #
   # Default: no default
   #MilterSocket /tmp/clamav-milter.socket
   MilterSocket /var/run/clamav/clmilter.sock
   #MilterSocket inet:7357
   
   # Remove stale socket after unclean shutdown.
   #
   # Default: yes
   #FixStaleSocket yes
   
   # Run as another user (clamav-milter must be started by root for this option 
to work)
   #
   # Default: unset (don't drop privileges)
   User clamav
   
   # Initialize supplementary group access (clamav-milter must be started by 
root).
   #
   # Default: no
   #AllowSupplementaryGroups no
   
   # Waiting for data from clamd will timeout after this time (seconds).
   # Value of 0 disables the timeout.
   #
   # Default: 120
   #ReadTimeout 300
   
   # Don't fork into background.
   #
   # Default: no
   #Foreground yes
   
   # Chroot to the specified directory.
   # Chrooting is performed just after reading the config file and before 
dropping privileges.
   #
   # Default: unset (don't chroot)
   #Chroot /newroot
   
   # This option allows you to save a process identifier of the listening
   # daemon (main thread).
   #
   # Default: disabled
   #PidFile /var/run/clamav-milter.pid
   
   # Optional path to the global temporary directory.
   # Default: system specific (usually /tmp or /var/tmp).
   #
   #TemporaryDirectory /var/tmp
   
   ##
   ## Clamd options
   ##
   
   # Define the clamd socket to connect to for scanning.
   # This option is mandatory! Syntax:
   # ClamdSocket unix:path
   # ClamdSocket tcp:host:port
   # The first syntax specifies a local unix socket (needs an absolute path) 
e.g.:
   #     ClamdSocket unix:/var/run/clamd/clamd.socket
   # The second syntax specifies a tcp local or remote tcp socket: the
   # host can be a hostname or an ip address; the ":port" field is only required
   # for IPv6 addresses, otherwise it defaults to 3310
   #     ClamdSocket tcp:192.168.0.1
   #
   # This option can be repeated several times with different sockets or even
   # with the same socket: clamd servers will be selected in a round-robin 
fashion.
   #
   # Default: no default
   #ClamdSocket tcp:scanner.mydomain:7357
   ClamdSocket unix:/var/run/clamav/clamd.sock
   
   
   ##
   ## Exclusions
   ##
   
   # Messages originating from these hosts/networks will not be scanned
   # This option takes a host(name)/mask pair in CIRD notation and can be
   # repeated several times. If "/mask" is omitted, a host is assumed.
   # To specify a locally orignated, non-smtp, email use the keyword "local"
   #
   # Default: unset (scan everything regardless of the origin)
   #LocalNet local
   #LocalNet 192.168.0.0/24
   #LocalNet 1111:2222:3333::/48
   
   # This option specifies a file which contains a list of POSIX regular
   # expressions. Addresses (sent to or from - see below) matching these regexes
   # will not be scanned.  Optionally each line can start with the string 
"From:"
   # or "To:" (note: no whitespace after the colon) indicating if it is, 
   # respectively, the sender or recipient that is to be whitelisted.
   # If the field is missing, "To:" is assumed.
   # Lines starting with #, : or ! are ignored.
   #
   # Default unset (no exclusion applied)
   #Whitelist /etc/whitelisted_addresses
   Whitelist /usr/local/etc/clamd_white
   
   
   ##
   ## Actions
   ##
   
   # The following group of options controls the delievery process under
   # different circumstances.
   # The following actions are available:
   # - Accept
   #   The message is accepted for delievery
   # - Reject
   #   Immediately refuse delievery (a 5xx error is returned to the peer)
   # - Defer
   #   Return a temporary failure message (4xx) to the peer
   # - Blackhole (not available for OnFail)
   #   Like accept but the message is sent to oblivion
   # - Quarantine (not available for OnFail)
   #   Like accept but message is quarantined instead of being delivered
   #   In sendmail the quarantine queue can be examined via mailq -qQ
   #   For Postfix this causes the message to be accepted but placed on hold
   # 
   # Action to be performed on clean messages (mostly useful for testing)
   # Default Accept
   #OnClean Accept
   
   # Action to be performed on infected messages
   # Default: Quarantine
   #OnInfected Quarantine
   
   # Action to be performed on error conditions (this includes failure to
   # allocate data structures, no scanners available, network timeouts,
   # unknown scanner replies and the like)
   # Default Defer
   #OnFail Defer
   
   # This option allows to set a specific rejection reason for infected messages
   # and it's therefore only useful together with "OnInfected Reject"
   # The string "%v", if present, will be replaced with the virus name.
   # Default: MTA specific
   #RejectMsg 
   
   # If this option is set to Yes, an "X-Virus-Scanned" and an "X-Virus-Status"
   # headers will be attached to each processed message, possibly replacing
   # existing headers. 
   # Default: No
   #AddHeader Yes
   
   
   ##
   ## Logging options
   ##
   
   # Uncomment this option to enable logging.
   # LogFile must be writable for the user running daemon.
   # A full path is required.
   #
   # Default: disabled
   #LogFile /tmp/clamav-milter.log
   LogFile /var/adm/clamav-milter.log
   
   # By default the log file is locked for writing - the lock protects against
   # running clamav-milter multiple times.
   # This option disables log file locking.
   #
   # Default: no
   #LogFileUnlock yes
   
   # Maximum size of the log file.
   # Value of 0 disables the limit.
   # You may use 'M' or 'm' for megabytes (1M = 1m = 1048576 bytes)
   # and 'K' or 'k' for kilobytes (1K = 1k = 1024 bytes). To specify the size
   # in bytes just don't use modifiers.
   #
   # Default: 1M
   #LogFileMaxSize 2M
   LogFileMaxSize 10M
   
   # Log time with each message.
   #
   # Default: no
   #LogTime yes
   
   # Use system logger (can work together with LogFile).
   #
   # Default: no
   #LogSyslog yes
   
   # Specify the type of syslog messages - please refer to 'man syslog'
   # for facility names.
   #
   # Default: LOG_LOCAL6
   #LogFacility LOG_MAIL
   LogFacility LOG_MAIL
   
   # Enable verbose logging.
   #
   # Default: no
   LogVerbose yes
   
   # This option allows to tune what is logged when a message is infected.
   # Possible values are Off (the default - nothing is logged),
   # Basic (minimal info logged), Full (verbose info logged)
   #
   # Default: disabled
   #LogInfected Basic
   LogInfected Full
   
   
   ##
   ## Limits
   ##
   
   # Messages larger than this value won't be scanned.
   # Make sure this value is lower or equal than StreamMaxLength in clamd.conf
   #
   # Default: 25M
   #MaxFileSize 10M


Also, tracing the running process with truss gives:

   /4:         Incurred fault #6, FLTBOUNDS  %pc = 0x00019140
   /4:           siginfo: SIGSEGV SEGV_MAPERR addr=0x00000000
   /4:         Received signal #11, SIGSEGV [default]
   /4:           siginfo: SIGSEGV SEGV_MAPERR addr=0x00000000

Any clue?
Thanks
_______________________________________________
Help us build a comprehensive ClamAV guide: visit http://wiki.clamav.net
http://www.clamav.net/support/ml

Reply via email to