diff --git a/clamav-devel/ChangeLog b/clamav-devel/ChangeLog index 7882fd8ba..997ef1d90 100644 --- a/clamav-devel/ChangeLog +++ b/clamav-devel/ChangeLog @@ -1,3 +1,7 @@ +Mon Dec 6 22:33:26 GMT 2004 (njh) +---------------------------------- + * clamav-milter: Ensure the date is kept in the quarantine path + Sun Dec 5 15:00:35 GMT 2004 (njh) ---------------------------------- * clamav-milter: Fix array overrun on startup diff --git a/clamav-devel/clamav-milter/INSTALL b/clamav-devel/clamav-milter/INSTALL index 9d0d45942..1f2a26aaa 100644 --- a/clamav-devel/clamav-milter/INSTALL +++ b/clamav-devel/clamav-milter/INSTALL @@ -579,6 +579,10 @@ Changes 0.80y 5/12/04: --internal: fixed memory leak when a new database is loaded Fixed array overrun on startup that caused problems on some platforms +0.80z 6/12/04: Quarantine files were not being renamed to contain the virus + name if --quiet is given + Fix compilation error if is SESSION not defined. + Quarantine files could lose the date from the path INTERNATIONALISATION diff --git a/clamav-devel/clamav-milter/clamav-milter.c b/clamav-devel/clamav-milter/clamav-milter.c index 6020df2c7..1e24b0e6a 100644 --- a/clamav-devel/clamav-milter/clamav-milter.c +++ b/clamav-devel/clamav-milter/clamav-milter.c @@ -26,6 +26,9 @@ * * Change History: * $Log: clamav-milter.c,v $ + * Revision 1.160 2004/12/06 22:31:13 nigelhorne + * Keep date in quarantine directory path + * * Revision 1.159 2004/12/05 14:58:18 nigelhorne * Fix array overrun on startup * @@ -488,9 +491,9 @@ * Revision 1.6 2003/09/28 16:37:23 nigelhorne * Added -f flag use MaxThreads if --max-children not set */ -static char const rcsid[] = "$Id: clamav-milter.c,v 1.159 2004/12/05 14:58:18 nigelhorne Exp $"; +static char const rcsid[] = "$Id: clamav-milter.c,v 1.160 2004/12/06 22:31:13 nigelhorne Exp $"; -#define CM_VERSION "0.80y" +#define CM_VERSION "0.80z" /*#define CONFDIR "/usr/local/etc"*/ @@ -626,7 +629,7 @@ typedef struct header_list_struct *header_list_t; * TODO: read this table in from a file (clamd.conf?) */ #define PACKADDR(a, b, c, d) (((a) << 24) | ((b) << 16) | ((c) << 8) | (d)) -#define MAKEMASK(bits) ((uint32_t)(0xffffffff << (bits))) +#define MAKEMASK(bits) ((uint32_t)(0xffffffff << (bits))) static const struct cidr_net { uint32_t base; @@ -1305,7 +1308,27 @@ main(int argc, char **argv) struct stat statb; if(advisory) { - fprintf(stderr, _("%s: Advisory mode doesn't work with quarantine directories\n"), argv[0]); + fprintf(stderr, + _("%s: Advisory mode doesn't work with quarantine directories\n"), + argv[0]); + return EX_USAGE; + } + if(strstr(quarantine_dir, "ERROR") != NULL) { + fprintf(stderr, + _("%s: the quarantine directory must not contain the string 'ERROR'\n"), + argv[0]); + return EX_USAGE; + } + if(strstr(quarantine_dir, "FOUND") != NULL) { + fprintf(stderr, + _("%s: the quarantine directory must not contain the string 'FOUND'\n"), + argv[0]); + return EX_USAGE; + } + if(strstr(quarantine_dir, "OK") != NULL) { + fprintf(stderr, + _("%s: the quarantine directory must not contain the string 'OK'\n"), + argv[0]); return EX_USAGE; } if(access(quarantine_dir, W_OK) < 0) { @@ -1388,7 +1411,7 @@ main(int argc, char **argv) */ if(internal) { if(!cfgopt(copt, "ScanMail")) { - fprintf(stderr, _("%s: ScanMail not defined in %s\n"), + fprintf(stderr, _("%s: ScanMail not defined in %s (needed with --internal)\n"), argv[0], cfgfile); return EX_CONFIG; } @@ -1590,12 +1613,17 @@ main(int argc, char **argv) } if(internal) { +#ifdef SESSION if(clamav_versions == NULL) { clamav_versions = (char **)cli_malloc(sizeof(char *)); if(clamav_versions == NULL) return EX_TEMPFAIL; clamav_version = strdup(version); } +#else + strcpy(clamav_version, version); +#endif + #ifdef SESSION } else { clamav_versions = (char **)cli_malloc(max_children * sizeof(char *)); @@ -1972,7 +2000,7 @@ pingServer(int serverNumber) * It is best to weight the order of the servers from most wanted to least * wanted * - * Return value is from 0 - index into serverIPs + * Return value is from 0 - index into sessions array * * If the load balancing fails return the first server in the list, not * an error, to be on the safe side @@ -2008,6 +2036,10 @@ findServer(void) } pthread_mutex_unlock(&sstatus_mutex); + /* + * No session free - wait until one comes available. Only + * retries once. + */ if(pthread_cond_broadcast(&watchdog_cond) < 0) perror("pthread_cond_broadcast"); @@ -2029,6 +2061,9 @@ findServer(void) return -1; /* none available - must fail */ } #else +/* + * Return value is from 0 - index into serverIPs + */ static int findServer(void) { @@ -2885,6 +2920,11 @@ clamfi_eom(SMFICTX *ctx) syslog(LOG_ERR, "%s: %s\n", sendmailId, mess); rc = cl_error; } else if((ptr = strstr(mess, "FOUND")) != NULL) { + /* + * Fixme: This will give false positives if the + * word "FOUND" is in the email, e.g. the + * quarantine directory is /tmp/VIRUSES-FOUND + */ char reject[1024]; char **to, *virusname; @@ -2951,6 +2991,9 @@ clamfi_eom(SMFICTX *ctx) free(err); } + if(quarantine_dir != NULL) + qfile(privdata, sendmailId, virusname); + if(!qflag) { char cmd[128]; FILE *sendmail; @@ -3052,8 +3095,7 @@ clamfi_eom(SMFICTX *ctx) fprintf(sendmail, _("contained %s and has not been delivered.\n"), virusname); if(quarantine_dir != NULL) - if(qfile(privdata, sendmailId, virusname) == 0) - fprintf(sendmail, _("\nThe message in question has been quarantined as %s\n"), privdata->filename); + fprintf(sendmail, _("\nThe message in question has been quarantined as %s\n"), privdata->filename); if(hflag) { fprintf(sendmail, _("\nThe message was received by %1$s from %2$s via %3$s\n\n"), @@ -3219,6 +3261,7 @@ static void clamfi_free(struct privdata *privdata) { cli_dbgmsg("clamfi_free\n"); + if(privdata) { #ifdef SESSION struct session *session; @@ -3279,8 +3322,8 @@ clamfi_free(struct privdata *privdata) privdata->to = NULL; } -#ifdef SESSION if(!internal) { +#ifdef SESSION session = &sessions[privdata->serverNumber]; pthread_mutex_lock(&sstatus_mutex); if(session->status == CMDSOCKET_INUSE) { @@ -3650,38 +3693,18 @@ connect2clamd(struct privdata *privdata) if(quarantine_dir || tmpdir) { /* store message in a temporary file */ int ntries = 5; - time_t t; - int MM, YY, DD; - const struct tm *tm; const char *dir = (tmpdir) ? tmpdir : quarantine_dir; - /* - * Based on an idea by Christian Pelissier - * . Store different days - * in different directories to make them easier to manage - */ - t = time((time_t *)0); - tm = localtime(&t); - MM = tm->tm_mon + 1; - YY = tm->tm_year - 100; - DD = tm->tm_mday; - - privdata->filename = (char *)cli_malloc(strlen(dir) + 19); - - sprintf(privdata->filename, "%s/%02d%02d%02d", dir, - YY, MM, DD); - - if((mkdir(privdata->filename, 0700) < 0) && (errno != EEXIST)) { - perror(privdata->filename); + if((mkdir(dir, 0700) < 0) && (errno != EEXIST)) { + perror(dir); if(use_syslog) - syslog(LOG_ERR, _("mkdir %s failed"), privdata->filename); + syslog(LOG_ERR, _("mkdir %s failed"), dir); return 0; } + privdata->filename = (char *)cli_malloc(strlen(dir) + 12); do { - sprintf(privdata->filename, - "%s/%02d%02d%02d/msg.XXXXXX", - dir, YY, MM, DD); + sprintf(privdata->filename, "%s/msg.XXXXXX", dir); #if defined(C_LINUX) || defined(C_BSD) || defined(HAVE_MKSTEMP) || defined(C_SOLARIS) privdata->dataSocket = mkstemp(privdata->filename); #else @@ -3707,9 +3730,10 @@ connect2clamd(struct privdata *privdata) struct sockaddr_in reply; unsigned short p; char buf[64]; - struct session *session; -#ifndef SESSION +#ifdef SESSION + struct session *session; +#else assert(privdata->cmdSocket == -1); #endif @@ -3829,10 +3853,13 @@ connect2clamd(struct privdata *privdata) #ifdef SESSION nbytes = clamd_recv(session->sock, buf, sizeof(buf)); - if(nbytes < 0) { - perror("recv"); - if(use_syslog) - syslog(LOG_ERR, _("recv failed from clamd getting PORT")); + if(nbytes <= 0) { + if(nbytes < 0) { + perror("recv"); + if(use_syslog) + syslog(LOG_ERR, _("recv failed from clamd getting PORT")); + } else if(use_syslog) + syslog(LOG_ERR, _("EOF from clamd getting PORT")); pthread_mutex_lock(&sstatus_mutex); session->status = CMDSOCKET_DOWN; pthread_mutex_unlock(&sstatus_mutex); @@ -3840,10 +3867,13 @@ connect2clamd(struct privdata *privdata) } #else nbytes = clamd_recv(privdata->cmdSocket, buf, sizeof(buf)); - if(nbytes < 0) { - perror("recv"); - if(use_syslog) - syslog(LOG_ERR, _("recv failed from clamd getting PORT")); + if(nbytes <= 0) { + if(nbytes < 0) { + perror("recv"); + if(use_syslog) + syslog(LOG_ERR, _("recv failed from clamd getting PORT")); + } else if(use_syslog) + syslog(LOG_ERR, _("EOF from clamd getting PORT")); return 0; } #endif @@ -3908,7 +3938,9 @@ connect2clamd(struct privdata *privdata) } } +#ifdef SESSION end: +#endif /* * Combine the To and From into one clamfi_send to save bandwidth * when sending using TCP/IP to connect to a remote clamd, by band @@ -4104,29 +4136,41 @@ sendtemplate(SMFICTX *ctx, const char *filename, FILE *sendmail, const char *vir static int qfile(struct privdata *privdata, const char *sendmailId, const char *virusname) { - char *newname, *ptr; + int MM, YY, DD; + time_t t; size_t len; + char *newname, *ptr; + const struct tm *tm; assert(privdata != NULL); if((privdata->filename == NULL) || (virusname == NULL)) return -1; - len = strlen(privdata->filename); + cli_dbgmsg("qfile filename '%s' sendmailId '%s' virusname '%s'\n", privdata->filename, sendmailId, virusname); - newname = cli_malloc(len + strlen(sendmailId) + strlen(virusname) + 3); + len = strlen(quarantine_dir); + + newname = cli_malloc(len + strlen(sendmailId) + strlen(virusname) + 10); if(newname == NULL) return -1; - sprintf(newname, "%s.%s.%s", privdata->filename, sendmailId, virusname); + t = time((time_t *)0); + tm = localtime(&t); + MM = tm->tm_mon + 1; + YY = tm->tm_year - 100; + DD = tm->tm_mday; + + sprintf(newname, "%s/%02d%02d%02d/%s.%s", + quarantine_dir, YY, MM, DD, sendmailId, virusname); /* * Strip out funnies that may be in the name of the virus, such as '/' * that would cause the quarantine to fail to save since the name * of the virus is included in the filename */ - for(ptr = &newname[len]; *ptr; ptr++) { + for(ptr = &newname[len + 8]; *ptr; ptr++) { #ifdef C_DARWIN *ptr &= '\177'; #endif @@ -4137,6 +4181,12 @@ qfile(struct privdata *privdata, const char *sendmailId, const char *virusname) #endif *ptr = '_'; } + cli_dbgmsg("qfile move '%s' to '%s'\n", privdata->filename, newname); + + /* + * FIXME: handle cross file linking failure meaning that we'd have + * to copy + */ if(link(privdata->filename, newname) < 0) { perror(newname); if(use_syslog) @@ -4149,6 +4199,9 @@ qfile(struct privdata *privdata, const char *sendmailId, const char *virusname) free(privdata->filename); privdata->filename = newname; + if(use_syslog) + syslog(LOG_INFO, _("File quarantined as %s"), newname); + return 0; } @@ -4445,7 +4498,7 @@ watchdog(void *a) clamdIsDown(); pthread_mutex_unlock(&sstatus_mutex); } - cli_errmsg("watchdog quits\n"); + cli_dbgmsg("watchdog quits\n"); return NULL; } #endif diff --git a/clamav-devel/clamav-milter/clamav-milter.po b/clamav-devel/clamav-milter/clamav-milter.po index 7f762d2fe..fb4c88fa7 100644 --- a/clamav-devel/clamav-milter/clamav-milter.po +++ b/clamav-devel/clamav-milter/clamav-milter.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: bugs@clamav.net\n" -"POT-Creation-Date: 2004-12-05 14:57+0000\n" +"POT-Creation-Date: 2004-12-06 22:31+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,606 +16,621 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#: clamav-milter.c:877 +#: clamav-milter.c:883 msgid "\t--advisory\t\t-A\tFlag viruses rather than deleting them." msgstr "" -#: clamav-milter.c:878 +#: clamav-milter.c:884 msgid "\t--bounce\t\t-b\tSend a failure message to the sender." msgstr "" -#: clamav-milter.c:879 +#: clamav-milter.c:885 msgid "" "\t--broadcast\t\t-B [IFACE]\tBroadcast to a network manager when a virus is " "found." msgstr "" -#: clamav-milter.c:880 +#: clamav-milter.c:886 msgid "\t--config-file=FILE\t-c FILE\tRead configuration from FILE." msgstr "" -#: clamav-milter.c:881 +#: clamav-milter.c:887 msgid "\t--debug\t\t\t-D\tPrint debug messages." msgstr "" -#: clamav-milter.c:882 +#: clamav-milter.c:888 msgid "" "\t--dont-log-clean\t-C\tDon't add an entry to syslog that a mail is clean." msgstr "" -#: clamav-milter.c:883 +#: clamav-milter.c:889 msgid "" "\t--dont-scan-on-error\t-d\tPass e-mails through unscanned if a system error " "occurs." msgstr "" -#: clamav-milter.c:884 +#: clamav-milter.c:890 msgid "\t--dont-wait\t\t\tAsk remote end to resend if max-children exceeded." msgstr "" -#: clamav-milter.c:885 +#: clamav-milter.c:891 msgid "\t--from=EMAIL\t\t-a EMAIL\tError messages come from here." msgstr "" -#: clamav-milter.c:886 +#: clamav-milter.c:892 msgid "\t--force-scan\t\t-f\tForce scan all messages (overrides (-o and -l)." msgstr "" -#: clamav-milter.c:887 +#: clamav-milter.c:893 msgid "\t--help\t\t\t-h\tThis message." msgstr "" -#: clamav-milter.c:888 +#: clamav-milter.c:894 msgid "\t--headers\t\t-H\tInclude original message headers in the report." msgstr "" -#: clamav-milter.c:889 +#: clamav-milter.c:895 msgid "\t--internal\t\t-I\tUse the internal scanner." msgstr "" -#: clamav-milter.c:890 +#: clamav-milter.c:896 msgid "\t--local\t\t\t-l\tScan messages sent from machines on our LAN." msgstr "" -#: clamav-milter.c:891 +#: clamav-milter.c:897 msgid "\t--max-childen\t\t-m\tMaximum number of concurrent scans." msgstr "" -#: clamav-milter.c:892 +#: clamav-milter.c:898 msgid "\t--outgoing\t\t-o\tScan outgoing messages from this machine." msgstr "" -#: clamav-milter.c:893 +#: clamav-milter.c:899 msgid "\t--noreject\t\t-N\tDon't reject viruses, silently throw them away." msgstr "" -#: clamav-milter.c:894 +#: clamav-milter.c:900 msgid "\t--noxheader\t\t-n\tSuppress X-Virus-Scanned/X-Virus-Status headers." msgstr "" -#: clamav-milter.c:895 +#: clamav-milter.c:901 msgid "\t--pidfile=FILE\t\t-i FILE\tLocation of pidfile." msgstr "" -#: clamav-milter.c:896 +#: clamav-milter.c:902 msgid "\t--postmaster\t\t-p EMAIL\tPostmaster address [default=postmaster]." msgstr "" -#: clamav-milter.c:897 +#: clamav-milter.c:903 msgid "\t--postmaster-only\t-P\tSend warnings only to the postmaster." msgstr "" -#: clamav-milter.c:898 +#: clamav-milter.c:904 msgid "\t--quiet\t\t\t-q\tDon't send e-mail notifications of interceptions." msgstr "" -#: clamav-milter.c:899 +#: clamav-milter.c:905 msgid "\t--quarantine=USER\t-Q EMAIL\tQuanrantine e-mail account." msgstr "" -#: clamav-milter.c:900 +#: clamav-milter.c:906 msgid "\t--quarantine-dir=DIR\t-U DIR\tDirectory to store infected emails." msgstr "" -#: clamav-milter.c:901 +#: clamav-milter.c:907 msgid "" "\t--server=SERVER\t\t-s SERVER\tHostname/IP address of server(s) running " "clamd (when using TCPsocket)." msgstr "" -#: clamav-milter.c:902 +#: clamav-milter.c:908 msgid "\t--sign\t\t\t-S\tAdd a hard-coded signature to each scanned message." msgstr "" -#: clamav-milter.c:903 +#: clamav-milter.c:909 msgid "\t--signature-file=FILE\t-F FILE\tLocation of signature file." msgstr "" -#: clamav-milter.c:904 +#: clamav-milter.c:910 msgid "\t--template-file=FILE\t-t FILE\tLocation of e-mail template file." msgstr "" -#: clamav-milter.c:905 +#: clamav-milter.c:911 msgid "\t--timeout=SECS\t\t-T SECS\tTimeout waiting to childen to die." msgstr "" -#: clamav-milter.c:906 +#: clamav-milter.c:912 msgid "\t--version\t\t-V\tPrint the version number of this software." msgstr "" -#: clamav-milter.c:908 +#: clamav-milter.c:914 msgid "\t--debug-level=n\t\t-x n\tSets the debug level to 'n'." msgstr "" -#: clamav-milter.c:910 +#: clamav-milter.c:916 msgid "" "\n" "For more information type \"man clamav-milter\"." msgstr "" -#: clamav-milter.c:911 +#: clamav-milter.c:917 msgid "Report bugs to bugs@clamav.net." msgstr "" -#: clamav-milter.c:1203 +#: clamav-milter.c:1209 #, c-format msgid "%s: No socket-addr given\n" msgstr "" -#: clamav-milter.c:1212 +#: clamav-milter.c:1218 #, c-format msgid "%s: Can't parse the config file %s\n" msgstr "" -#: clamav-milter.c:1251 +#: clamav-milter.c:1257 #, c-format msgid "" "%s: The iface option to --broadcast is not supported on your operating " "system\n" msgstr "" -#: clamav-milter.c:1260 +#: clamav-milter.c:1266 #, c-format msgid "%s: Can't get information about user %s\n" msgstr "" -#: clamav-milter.c:1271 +#: clamav-milter.c:1277 #, c-format msgid "%s: AllowSupplementaryGroups: initgroups not supported.\n" msgstr "" -#: clamav-milter.c:1288 +#: clamav-milter.c:1294 #, c-format msgid "Running as user %s (UID %d, GID %d)\n" msgstr "" -#: clamav-milter.c:1291 +#: clamav-milter.c:1297 #, c-format msgid "%s: running as root is not recommended (check \"User\" in clamd.conf)\n" msgstr "" -#: clamav-milter.c:1293 +#: clamav-milter.c:1299 #, c-format msgid "%s: Only root can set an interface for --broadcast\n" msgstr "" -#: clamav-milter.c:1298 +#: clamav-milter.c:1304 #, c-format msgid "%s: Advisory mode doesn't work with quarantine mode\n" msgstr "" -#: clamav-milter.c:1305 +#: clamav-milter.c:1312 #, c-format msgid "%s: Advisory mode doesn't work with quarantine directories\n" msgstr "" -#: clamav-milter.c:1321 +#: clamav-milter.c:1318 #, c-format -msgid "%s: insecure quarantine directory %s (mode 0%o)\n" +msgid "%s: the quarantine directory must not contain the string 'ERROR'\n" +msgstr "" + +#: clamav-milter.c:1324 +#, c-format +msgid "%s: the quarantine directory must not contain the string 'FOUND'\n" +msgstr "" + +#: clamav-milter.c:1330 +#, c-format +msgid "%s: the quarantine directory must not contain the string 'OK'\n" msgstr "" #: clamav-milter.c:1347 #, c-format +msgid "%s: insecure quarantine directory %s (mode 0%o)\n" +msgstr "" + +#: clamav-milter.c:1373 +#, c-format msgid "%s: ReadTimeout must not be negative in %s\n" msgstr "" -#: clamav-milter.c:1355 +#: clamav-milter.c:1381 #, c-format msgid "%s: StreamMaxLength must not be negative in %s\n" msgstr "" -#: clamav-milter.c:1378 +#: clamav-milter.c:1404 #, c-format msgid "" "%s: (-q && !LogSyslog): warning - all interception message methods are off\n" msgstr "" -#: clamav-milter.c:1388 +#: clamav-milter.c:1414 #, c-format -msgid "%s: ScanMail not defined in %s\n" +msgid "%s: ScanMail not defined in %s (needed with --internal)\n" msgstr "" -#: clamav-milter.c:1393 +#: clamav-milter.c:1419 #, c-format msgid "%s: --max-children must be given in internal mode\n" msgstr "" -#: clamav-milter.c:1397 +#: clamav-milter.c:1423 #, c-format msgid "%s: --timeout must not be given in internal mode\n" msgstr "" -#: clamav-milter.c:1410 +#: clamav-milter.c:1436 #, c-format msgid "%s: You can select one server type only (local/TCP) in %s\n" msgstr "" -#: clamav-milter.c:1420 +#: clamav-milter.c:1446 #, c-format msgid "The connection from sendmail to %s (%s) must not\n" msgstr "" -#: clamav-milter.c:1422 +#: clamav-milter.c:1448 #, c-format msgid "be the same as the connection to clamd (%s) in %s\n" msgstr "" -#: clamav-milter.c:1432 clamav-milter.c:1455 +#: clamav-milter.c:1458 clamav-milter.c:1481 #, c-format msgid "Can't talk to clamd server via %s\n" msgstr "" -#: clamav-milter.c:1434 clamav-milter.c:1457 +#: clamav-milter.c:1460 clamav-milter.c:1483 #, c-format msgid "Check your entry for LocalSocket in %s\n" msgstr "" -#: clamav-milter.c:1468 +#: clamav-milter.c:1494 msgid "Can't create a clamd session" msgstr "" -#: clamav-milter.c:1485 +#: clamav-milter.c:1511 #, c-format msgid "" "%s: --quarantine-dir not supported for remote scanning - use --quarantine\n" msgstr "" -#: clamav-milter.c:1500 +#: clamav-milter.c:1526 #, c-format msgid "%s: hostname %s is longer than %d characters\n" msgstr "" -#: clamav-milter.c:1519 +#: clamav-milter.c:1545 #, c-format msgid "%s: --max-children must be given in sessions mode\n" msgstr "" -#: clamav-milter.c:1542 +#: clamav-milter.c:1568 #, c-format msgid "%s: Unknown host %s\n" msgstr "" -#: clamav-milter.c:1554 +#: clamav-milter.c:1580 #, c-format msgid "Can't talk to clamd server %s on port %d\n" msgstr "" -#: clamav-milter.c:1571 +#: clamav-milter.c:1597 msgid "Can't find any active clamd servers\n" msgstr "" -#: clamav-milter.c:1572 clamav-milter.c:1578 +#: clamav-milter.c:1598 clamav-milter.c:1604 #, c-format msgid "Check your entry for TCPSocket in %s\n" msgstr "" -#: clamav-milter.c:1577 +#: clamav-milter.c:1603 msgid "Can't find any clamd servers\n" msgstr "" -#: clamav-milter.c:1584 +#: clamav-milter.c:1610 #, c-format msgid "%s: You must select server type (local/TCP) in %s\n" msgstr "" -#: clamav-milter.c:1635 +#: clamav-milter.c:1666 #, c-format msgid "When debugging it is recommended that you use Foreground mode in %s\n" msgstr "" -#: clamav-milter.c:1636 +#: clamav-milter.c:1667 msgid "\tso that you can see all of the messages" msgstr "" -#: clamav-milter.c:1737 +#: clamav-milter.c:1768 msgid "Starting clamav-milter" msgstr "" -#: clamav-milter.c:1746 +#: clamav-milter.c:1777 #, c-format msgid "Can't save PID in file %s" msgstr "" -#: clamav-milter.c:1748 +#: clamav-milter.c:1779 #, c-format msgid "Can't save PID in file %s\n" msgstr "" -#: clamav-milter.c:1776 +#: clamav-milter.c:1807 #, c-format msgid "%s: smfi_setconn failed\n" msgstr "" -#: clamav-milter.c:1789 +#: clamav-milter.c:1820 #, c-format msgid "Starting %s" msgstr "" -#: clamav-milter.c:1792 +#: clamav-milter.c:1823 msgid "Debugging is on" msgstr "" -#: clamav-milter.c:1848 clamav-milter.c:2098 +#: clamav-milter.c:1879 clamav-milter.c:2136 #, c-format msgid "Check clamd server %s - it may be down\n" msgstr "" -#: clamav-milter.c:1853 clamav-milter.c:2107 +#: clamav-milter.c:1884 clamav-milter.c:2145 msgid "Check clamd server - it may be down\n" msgstr "" -#: clamav-milter.c:2024 +#: clamav-milter.c:2059 msgid "No free clamd sessions\n" msgstr "" -#: clamav-milter.c:2101 +#: clamav-milter.c:2139 #, c-format msgid "Check clamd server %s - it may be down" msgstr "" -#: clamav-milter.c:2143 +#: clamav-milter.c:2181 msgid "findServer: select failed" msgstr "" -#: clamav-milter.c:2152 +#: clamav-milter.c:2190 #, c-format msgid "findServer: using server %d\n" msgstr "" -#: clamav-milter.c:2157 +#: clamav-milter.c:2195 msgid "findServer: No response from any server\n" msgstr "" -#: clamav-milter.c:2159 +#: clamav-milter.c:2197 msgid "findServer: No response from any server" msgstr "" -#: clamav-milter.c:2180 +#: clamav-milter.c:2218 msgid "clamfi_connect: ctx is null" msgstr "" -#: clamav-milter.c:2185 +#: clamav-milter.c:2223 msgid "clamfi_connect: hostname is null" msgstr "" -#: clamav-milter.c:2206 +#: clamav-milter.c:2244 msgid "clamfi_connect: remoteIP is null" msgstr "" -#: clamav-milter.c:2215 +#: clamav-milter.c:2253 #, c-format msgid "clamfi_connect: connection from %s" msgstr "" -#: clamav-milter.c:2216 +#: clamav-milter.c:2254 #, c-format msgid "clamfi_connect: connection from %s\n" msgstr "" -#: clamav-milter.c:2219 +#: clamav-milter.c:2257 #, c-format msgid "clamfi_connect: connection from %s [%s]" msgstr "" -#: clamav-milter.c:2220 +#: clamav-milter.c:2258 #, c-format msgid "clamfi_connect: connection from %s [%s]\n" msgstr "" -#: clamav-milter.c:2240 +#: clamav-milter.c:2278 msgid "Can't get sendmail hostname" msgstr "" -#: clamav-milter.c:2245 +#: clamav-milter.c:2283 #, c-format msgid "Access Denied: Host Unknown (%s)" msgstr "" -#: clamav-milter.c:2255 +#: clamav-milter.c:2293 #, c-format msgid "Access Denied: Can't get IP address for (%s)" msgstr "" -#: clamav-milter.c:2272 +#: clamav-milter.c:2310 #, c-format msgid "Access Denied for %s[%s]" msgstr "" -#: clamav-milter.c:2290 +#: clamav-milter.c:2328 msgid "clamfi_connect: not scanning outgoing messages" msgstr "" -#: clamav-milter.c:2291 +#: clamav-milter.c:2329 msgid "clamfi_connect: not scanning outgoing messages\n" msgstr "" -#: clamav-milter.c:2299 +#: clamav-milter.c:2337 msgid "clamfi_connect: not scanning local messages" msgstr "" -#: clamav-milter.c:2300 +#: clamav-milter.c:2338 msgid "clamfi_connect: not scanning local messages\n" msgstr "" -#: clamav-milter.c:2332 +#: clamav-milter.c:2370 #, c-format msgid "hit max-children limit (%u >= %u)\n" msgstr "" -#: clamav-milter.c:2333 +#: clamav-milter.c:2371 #, c-format msgid "hit max-children limit (%u >= %u): waiting for some to exit\n" msgstr "" -#: clamav-milter.c:2339 +#: clamav-milter.c:2377 #, c-format msgid "hit max-children limit (%u >= %u)" msgstr "" -#: clamav-milter.c:2340 +#: clamav-milter.c:2378 #, c-format msgid "hit max-children limit (%u >= %u): waiting for some to exit" msgstr "" -#: clamav-milter.c:2345 +#: clamav-milter.c:2383 msgid "AV system temporarily overloaded - please try later" msgstr "" -#: clamav-milter.c:2378 +#: clamav-milter.c:2416 #, c-format msgid ">n_children = %d\n" msgstr "" -#: clamav-milter.c:2384 +#: clamav-milter.c:2422 msgid "Timeout waiting for a child to die" msgstr "" -#: clamav-milter.c:2386 +#: clamav-milter.c:2424 msgid "Timeout waiting for a child to die\n" msgstr "" -#: clamav-milter.c:2496 +#: clamav-milter.c:2534 #, c-format msgid "Failed to delete X-Virus-Status header %d" msgstr "" -#: clamav-milter.c:2524 +#: clamav-milter.c:2562 msgid "clamfi_eoh" msgstr "" -#: clamav-milter.c:2527 +#: clamav-milter.c:2565 msgid "clamfi_eoh\n" msgstr "" -#: clamav-milter.c:2584 +#: clamav-milter.c:2622 msgid "clamfi_eoh: ignoring whitelisted message" msgstr "" -#: clamav-milter.c:2586 +#: clamav-milter.c:2624 msgid "clamfi_eoh: ignoring whitelisted message\n" msgstr "" -#: clamav-milter.c:2600 +#: clamav-milter.c:2638 #, c-format msgid "clamfi_envbody: %u bytes" msgstr "" -#: clamav-milter.c:2602 +#: clamav-milter.c:2640 #, c-format msgid "clamfi_envbody: %u bytes\n" msgstr "" -#: clamav-milter.c:2612 clamav-milter.c:2870 +#: clamav-milter.c:2650 clamav-milter.c:2908 #, c-format msgid "%s: Message more than StreamMaxLength (%ld) bytes - not scanned" msgstr "" -#: clamav-milter.c:2616 clamav-milter.c:2873 +#: clamav-milter.c:2654 clamav-milter.c:2911 msgid "Not Scanned - StreamMaxLength exceeded" msgstr "" -#: clamav-milter.c:2714 +#: clamav-milter.c:2752 #, c-format msgid "failed to send SCAN %s command to clamd" msgstr "" -#: clamav-milter.c:2736 +#: clamav-milter.c:2774 msgid "failed to send SCAN command to clamd" msgstr "" -#: clamav-milter.c:2752 +#: clamav-milter.c:2790 #, c-format msgid "Wating to read status from fd %d\n" msgstr "" -#: clamav-milter.c:2763 +#: clamav-milter.c:2801 #, c-format msgid "clamfi_eom: read %s" msgstr "" -#: clamav-milter.c:2764 +#: clamav-milter.c:2802 #, c-format msgid "clamfi_eom: read %s\n" msgstr "" -#: clamav-milter.c:2772 +#: clamav-milter.c:2810 msgid "clamfi_eom: read nothing from clamd" msgstr "" -#: clamav-milter.c:2774 +#: clamav-milter.c:2812 msgid "clamfi_eom: read nothing from clamd\n" msgstr "" -#: clamav-milter.c:2819 clamav-milter.c:2859 +#: clamav-milter.c:2857 clamav-milter.c:2897 msgid "Error determining host" msgstr "" -#: clamav-milter.c:2878 +#: clamav-milter.c:2916 msgid "Not Scanned" msgstr "" -#: clamav-milter.c:2900 +#: clamav-milter.c:2943 msgid "Infected" msgstr "" -#: clamav-milter.c:2918 +#: clamav-milter.c:2961 #, c-format msgid "Intercepted virus from %s to" msgstr "" -#: clamav-milter.c:3012 +#: clamav-milter.c:3058 msgid "" "Subject: Virus intercepted\n" "\n" msgstr "" -#: clamav-milter.c:3034 +#: clamav-milter.c:3080 msgid "A message you sent to\n" msgstr "" -#: clamav-milter.c:3041 +#: clamav-milter.c:3087 #, c-format msgid "The message %1$s sent from %2$s to\n" msgstr "" -#: clamav-milter.c:3044 +#: clamav-milter.c:3090 #, c-format msgid "A message sent from %s to\n" msgstr "" -#: clamav-milter.c:3049 +#: clamav-milter.c:3095 #, c-format msgid "contained %s and has not been delivered.\n" msgstr "" -#: clamav-milter.c:3053 +#: clamav-milter.c:3098 #, c-format msgid "" "\n" "The message in question has been quarantined as %s\n" msgstr "" -#: clamav-milter.c:3056 +#: clamav-milter.c:3101 #, c-format msgid "" "\n" @@ -623,13 +638,13 @@ msgid "" "\n" msgstr "" -#: clamav-milter.c:3059 +#: clamav-milter.c:3104 msgid "" "For your information, the original message headers were:\n" "\n" msgstr "" -#: clamav-milter.c:3072 +#: clamav-milter.c:3117 #, c-format msgid "" "\n" @@ -637,225 +652,234 @@ msgid "" "%s\t\n" msgstr "" -#: clamav-milter.c:3083 +#: clamav-milter.c:3128 #, c-format msgid "Quarantined infected mail as %s" msgstr "" -#: clamav-milter.c:3107 +#: clamav-milter.c:3152 #, c-format msgid "Can't set quarantine user %s" msgstr "" -#: clamav-milter.c:3109 +#: clamav-milter.c:3154 #, c-format msgid "Can't set quarantine user %s\n" msgstr "" -#: clamav-milter.c:3122 +#: clamav-milter.c:3167 #, c-format msgid "virus %s detected by ClamAV - http://www.clamav.net" msgstr "" -#: clamav-milter.c:3127 +#: clamav-milter.c:3172 msgid "Unknown" msgstr "" -#: clamav-milter.c:3129 +#: clamav-milter.c:3174 #, c-format msgid "%s: incorrect message \"%s\" from clamd" msgstr "" -#: clamav-milter.c:3135 +#: clamav-milter.c:3180 msgid "Clean" msgstr "" -#: clamav-milter.c:3139 +#: clamav-milter.c:3184 #, c-format msgid "%s: clean message from %s" msgstr "" -#: clamav-milter.c:3141 +#: clamav-milter.c:3186 msgid "an unknown sender" msgstr "" -#: clamav-milter.c:3240 +#: clamav-milter.c:3286 #, c-format msgid "Can't remove clean file %s" msgstr "" -#: clamav-milter.c:3420 clamav-milter.c:3423 +#: clamav-milter.c:3466 clamav-milter.c:3469 #, c-format msgid "write failure (%u bytes) to %s: %s" msgstr "" -#: clamav-milter.c:3437 clamav-milter.c:3440 +#: clamav-milter.c:3483 clamav-milter.c:3486 #, c-format msgid "write failure (%u bytes) to clamd: %s" msgstr "" -#: clamav-milter.c:3506 +#: clamav-milter.c:3552 #, c-format msgid "No data received from clamd in %d seconds\n" msgstr "" -#: clamav-milter.c:3528 +#: clamav-milter.c:3574 #, c-format msgid "Can't stat %s" msgstr "" -#: clamav-milter.c:3539 clamav-milter.c:3969 +#: clamav-milter.c:3585 clamav-milter.c:4004 #, c-format msgid "Can't open %s" msgstr "" -#: clamav-milter.c:3674 +#: clamav-milter.c:3701 #, c-format msgid "mkdir %s failed" msgstr "" -#: clamav-milter.c:3687 +#: clamav-milter.c:3713 #, c-format msgid "mktemp %s failed" msgstr "" -#: clamav-milter.c:3697 +#: clamav-milter.c:3723 #, c-format msgid "Temporary quarantine file %s creation failed" msgstr "" -#: clamav-milter.c:3800 +#: clamav-milter.c:3827 #, c-format msgid "failed to send STREAM command clamd server %d" msgstr "" -#: clamav-milter.c:3809 +#: clamav-milter.c:3836 msgid "failed to send STREAM command clamd" msgstr "" -#: clamav-milter.c:3821 +#: clamav-milter.c:3848 msgid "failed to create TCPSocket to talk to clamd" msgstr "" -#: clamav-milter.c:3832 clamav-milter.c:3843 +#: clamav-milter.c:3860 clamav-milter.c:3874 msgid "recv failed from clamd getting PORT" msgstr "" -#: clamav-milter.c:3854 +#: clamav-milter.c:3862 clamav-milter.c:3876 +msgid "EOF from clamd getting PORT" +msgstr "" + +#: clamav-milter.c:3887 #, c-format msgid "Expected port information from clamd, got '%s'" msgstr "" -#: clamav-milter.c:3857 +#: clamav-milter.c:3890 #, c-format msgid "Expected port information from clamd, got '%s'\n" msgstr "" -#: clamav-milter.c:3877 clamav-milter.c:3880 +#: clamav-milter.c:3910 clamav-milter.c:3913 #, c-format msgid "Connecting to local port %d - data %d cmd %d\n" msgstr "" -#: clamav-milter.c:3893 clamav-milter.c:3896 +#: clamav-milter.c:3926 clamav-milter.c:3929 #, c-format msgid "Failed to connect to port %d given by clamd: %s" msgstr "" -#: clamav-milter.c:3981 +#: clamav-milter.c:4016 #, c-format msgid "Clamd (pid %d) seems to have died" msgstr "" -#: clamav-milter.c:4007 +#: clamav-milter.c:4042 #, c-format msgid "Can't open e-mail template file %s" msgstr "" -#: clamav-milter.c:4016 +#: clamav-milter.c:4051 #, c-format msgid "Can't stat e-mail template file %s" msgstr "" -#: clamav-milter.c:4025 +#: clamav-milter.c:4060 msgid "Out of memory" msgstr "" -#: clamav-milter.c:4052 +#: clamav-milter.c:4087 #, c-format msgid "%s: Unknown clamAV variable \"%c\"\n" msgstr "" -#: clamav-milter.c:4063 +#: clamav-milter.c:4098 #, c-format msgid "%s: Unterminated sendmail variable \"%s\"\n" msgstr "" -#: clamav-milter.c:4074 +#: clamav-milter.c:4109 #, c-format msgid "%s: Unknown sendmail variable \"%s\"\n" msgstr "" -#: clamav-milter.c:4140 +#: clamav-milter.c:4193 #, c-format msgid "Can't rename %1$s to %2$s" msgstr "" -#: clamav-milter.c:4164 +#: clamav-milter.c:4203 +#, c-format +msgid "File quarantined as %s" +msgstr "" + +#: clamav-milter.c:4220 #, c-format msgid "[Virus] %s" msgstr "" -#: clamav-milter.c:4257 +#: clamav-milter.c:4313 msgid "" "No response from any clamd server - your AV system is not scanning emails\n" msgstr "" -#: clamav-milter.c:4260 +#: clamav-milter.c:4316 msgid "" "No response from any clamd server - your AV system is not scanning emails" msgstr "" -#: clamav-milter.c:4278 +#: clamav-milter.c:4334 msgid "Subject: ClamAV Down\n" msgstr "" -#: clamav-milter.c:4281 +#: clamav-milter.c:4337 msgid "" "This is an automatic message\n" "\n" msgstr "" -#: clamav-milter.c:4284 +#: clamav-milter.c:4340 msgid "The clamd program cannot be contacted.\n" msgstr "" -#: clamav-milter.c:4286 +#: clamav-milter.c:4342 msgid "No clamd server can be contacted.\n" msgstr "" -#: clamav-milter.c:4288 +#: clamav-milter.c:4344 msgid "Emails may not be being scanned, please check your servers.\n" msgstr "" -#: clamav-milter.c:4357 +#: clamav-milter.c:4413 msgid "Loading new database" msgstr "" -#: clamav-milter.c:4540 +#: clamav-milter.c:4596 #, c-format msgid "Stopping %s" msgstr "" -#: clamav-milter.c:4581 +#: clamav-milter.c:4637 msgid "Stopping clamav-milter" msgstr "" -#: clamav-milter.c:4682 +#: clamav-milter.c:4738 #, c-format msgid "ClamAV: Protecting against %d viruses" msgstr "" -#: clamav-milter.c:4685 +#: clamav-milter.c:4741 #, c-format msgid "Loaded %s\n" msgstr ""