Browse code

Keep date in quarantine directory path

git-svn-id: file:///var/lib/svn/clamav-devel/trunk/clamav-devel@1162 77e5149b-7576-45b1-b177-96237e5ba77b

Nigel Horne authored on 2004/12/07 07:34:09
Showing 4 changed files
... ...
@@ -1,3 +1,7 @@
1
+Mon Dec  6 22:33:26 GMT 2004 (njh)
2
+----------------------------------
3
+  * clamav-milter:	Ensure the date is kept in the quarantine path
4
+
1 5
 Sun Dec  5 15:00:35 GMT 2004 (njh)
2 6
 ----------------------------------
3 7
   * clamav-milter:	Fix array overrun on startup
... ...
@@ -579,6 +579,10 @@ Changes
579 579
 0.80y	5/12/04: --internal: fixed memory leak when a new database is loaded
580 580
 		Fixed array overrun on startup that caused problems on some
581 581
 			platforms
582
+0.80z	6/12/04: Quarantine files were not being renamed to contain the virus
583
+			name if --quiet is given
584
+		Fix compilation error if is SESSION not defined.
585
+		Quarantine files could lose the date from the path
582 586
 
583 587
 INTERNATIONALISATION
584 588
 
... ...
@@ -26,6 +26,9 @@
26 26
  *
27 27
  * Change History:
28 28
  * $Log: clamav-milter.c,v $
29
+ * Revision 1.160  2004/12/06 22:31:13  nigelhorne
30
+ * Keep date in quarantine directory path
31
+ *
29 32
  * Revision 1.159  2004/12/05 14:58:18  nigelhorne
30 33
  * Fix array overrun on startup
31 34
  *
... ...
@@ -488,9 +491,9 @@
488 488
  * Revision 1.6  2003/09/28 16:37:23  nigelhorne
489 489
  * Added -f flag use MaxThreads if --max-children not set
490 490
  */
491
-static	char	const	rcsid[] = "$Id: clamav-milter.c,v 1.159 2004/12/05 14:58:18 nigelhorne Exp $";
491
+static	char	const	rcsid[] = "$Id: clamav-milter.c,v 1.160 2004/12/06 22:31:13 nigelhorne Exp $";
492 492
 
493
-#define	CM_VERSION	"0.80y"
493
+#define	CM_VERSION	"0.80z"
494 494
 
495 495
 /*#define	CONFDIR	"/usr/local/etc"*/
496 496
 
... ...
@@ -626,7 +629,7 @@ typedef struct header_list_struct *header_list_t;
626 626
  * TODO: read this table in from a file (clamd.conf?)
627 627
  */
628 628
 #define PACKADDR(a, b, c, d) (((a) << 24) | ((b) << 16) | ((c) << 8) | (d))
629
-#define MAKEMASK(bits)       ((uint32_t)(0xffffffff << (bits)))
629
+#define MAKEMASK(bits)	((uint32_t)(0xffffffff << (bits)))
630 630
 
631 631
 static const struct cidr_net {
632 632
 	uint32_t	base;
... ...
@@ -1305,7 +1308,27 @@ main(int argc, char **argv)
1305 1305
 		struct stat statb;
1306 1306
 
1307 1307
 		if(advisory) {
1308
-			fprintf(stderr, _("%s: Advisory mode doesn't work with quarantine directories\n"), argv[0]);
1308
+			fprintf(stderr,
1309
+				_("%s: Advisory mode doesn't work with quarantine directories\n"),
1310
+				argv[0]);
1311
+			return EX_USAGE;
1312
+		}
1313
+		if(strstr(quarantine_dir, "ERROR") != NULL) {
1314
+			fprintf(stderr,
1315
+				_("%s: the quarantine directory must not contain the string 'ERROR'\n"),
1316
+				argv[0]);
1317
+			return EX_USAGE;
1318
+		}
1319
+		if(strstr(quarantine_dir, "FOUND") != NULL) {
1320
+			fprintf(stderr,
1321
+				_("%s: the quarantine directory must not contain the string 'FOUND'\n"),
1322
+				argv[0]);
1323
+			return EX_USAGE;
1324
+		}
1325
+		if(strstr(quarantine_dir, "OK") != NULL) {
1326
+			fprintf(stderr,
1327
+				_("%s: the quarantine directory must not contain the string 'OK'\n"),
1328
+				argv[0]);
1309 1329
 			return EX_USAGE;
1310 1330
 		}
1311 1331
 		if(access(quarantine_dir, W_OK) < 0) {
... ...
@@ -1388,7 +1411,7 @@ main(int argc, char **argv)
1388 1388
 	 */
1389 1389
 	if(internal) {
1390 1390
 		if(!cfgopt(copt, "ScanMail")) {
1391
-			fprintf(stderr, _("%s: ScanMail not defined in %s\n"),
1391
+			fprintf(stderr, _("%s: ScanMail not defined in %s (needed with --internal)\n"),
1392 1392
 				argv[0], cfgfile);
1393 1393
 			return EX_CONFIG;
1394 1394
 		}
... ...
@@ -1590,12 +1613,17 @@ main(int argc, char **argv)
1590 1590
 	}
1591 1591
 
1592 1592
 	if(internal) {
1593
+#ifdef	SESSION
1593 1594
 		if(clamav_versions == NULL) {
1594 1595
 			clamav_versions = (char **)cli_malloc(sizeof(char *));
1595 1596
 			if(clamav_versions == NULL)
1596 1597
 				return EX_TEMPFAIL;
1597 1598
 			clamav_version = strdup(version);
1598 1599
 		}
1600
+#else
1601
+		strcpy(clamav_version, version);
1602
+#endif
1603
+
1599 1604
 #ifdef	SESSION
1600 1605
 	} else {
1601 1606
 		clamav_versions = (char **)cli_malloc(max_children * sizeof(char *));
... ...
@@ -1972,7 +2000,7 @@ pingServer(int serverNumber)
1972 1972
  * It is best to weight the order of the servers from most wanted to least
1973 1973
  * wanted
1974 1974
  *
1975
- * Return value is from 0 - index into serverIPs
1975
+ * Return value is from 0 - index into sessions array
1976 1976
  *
1977 1977
  * If the load balancing fails return the first server in the list, not
1978 1978
  * an error, to be on the safe side
... ...
@@ -2008,6 +2036,10 @@ findServer(void)
2008 2008
 	}
2009 2009
 	pthread_mutex_unlock(&sstatus_mutex);
2010 2010
 
2011
+	/*
2012
+	 * No session free - wait until one comes available. Only
2013
+	 * retries once.
2014
+	 */
2011 2015
 	if(pthread_cond_broadcast(&watchdog_cond) < 0)
2012 2016
 		perror("pthread_cond_broadcast");
2013 2017
 
... ...
@@ -2029,6 +2061,9 @@ findServer(void)
2029 2029
 	return -1;	/* none available - must fail */
2030 2030
 }
2031 2031
 #else
2032
+/*
2033
+ * Return value is from 0 - index into serverIPs
2034
+ */
2032 2035
 static int
2033 2036
 findServer(void)
2034 2037
 {
... ...
@@ -2885,6 +2920,11 @@ clamfi_eom(SMFICTX *ctx)
2885 2885
 			syslog(LOG_ERR, "%s: %s\n", sendmailId, mess);
2886 2886
 		rc = cl_error;
2887 2887
 	} else if((ptr = strstr(mess, "FOUND")) != NULL) {
2888
+		/*
2889
+		 * Fixme: This will give false positives if the
2890
+		 *	word "FOUND" is in the email, e.g. the
2891
+		 *	quarantine directory is /tmp/VIRUSES-FOUND
2892
+		 */
2888 2893
 		char reject[1024];
2889 2894
 		char **to, *virusname;
2890 2895
 
... ...
@@ -2951,6 +2991,9 @@ clamfi_eom(SMFICTX *ctx)
2951 2951
 			free(err);
2952 2952
 		}
2953 2953
 
2954
+		if(quarantine_dir != NULL)
2955
+			qfile(privdata, sendmailId, virusname);
2956
+
2954 2957
 		if(!qflag) {
2955 2958
 			char cmd[128];
2956 2959
 			FILE *sendmail;
... ...
@@ -3052,8 +3095,7 @@ clamfi_eom(SMFICTX *ctx)
3052 3052
 					fprintf(sendmail, _("contained %s and has not been delivered.\n"), virusname);
3053 3053
 
3054 3054
 					if(quarantine_dir != NULL)
3055
-						if(qfile(privdata, sendmailId, virusname) == 0)
3056
-							fprintf(sendmail, _("\nThe message in question has been quarantined as %s\n"), privdata->filename);
3055
+						fprintf(sendmail, _("\nThe message in question has been quarantined as %s\n"), privdata->filename);
3057 3056
 
3058 3057
 					if(hflag) {
3059 3058
 						fprintf(sendmail, _("\nThe message was received by %1$s from %2$s via %3$s\n\n"),
... ...
@@ -3219,6 +3261,7 @@ static void
3219 3219
 clamfi_free(struct privdata *privdata)
3220 3220
 {
3221 3221
 	cli_dbgmsg("clamfi_free\n");
3222
+
3222 3223
 	if(privdata) {
3223 3224
 #ifdef	SESSION
3224 3225
 		struct session *session;
... ...
@@ -3279,8 +3322,8 @@ clamfi_free(struct privdata *privdata)
3279 3279
 			privdata->to = NULL;
3280 3280
 		}
3281 3281
 
3282
-#ifdef	SESSION
3283 3282
 		if(!internal) {
3283
+#ifdef	SESSION
3284 3284
 			session = &sessions[privdata->serverNumber];
3285 3285
 			pthread_mutex_lock(&sstatus_mutex);
3286 3286
 			if(session->status == CMDSOCKET_INUSE) {
... ...
@@ -3650,38 +3693,18 @@ connect2clamd(struct privdata *privdata)
3650 3650
 
3651 3651
 	if(quarantine_dir || tmpdir) {	/* store message in a temporary file */
3652 3652
 		int ntries = 5;
3653
-		time_t t;
3654
-		int MM, YY, DD;
3655
-		const struct tm *tm;
3656 3653
 		const char *dir = (tmpdir) ? tmpdir : quarantine_dir;
3657 3654
 
3658
-		/*
3659
-		 * Based on an idea by Christian Pelissier
3660
-		 * <Christian.Pelissier@onera.fr>. Store different days
3661
-		 * in different directories to make them easier to manage
3662
-		 */
3663
-		t = time((time_t *)0);
3664
-		tm = localtime(&t);
3665
-		MM = tm->tm_mon + 1;
3666
-		YY = tm->tm_year - 100;
3667
-		DD = tm->tm_mday;
3668
-
3669
-		privdata->filename = (char *)cli_malloc(strlen(dir) + 19);
3670
-
3671
-		sprintf(privdata->filename, "%s/%02d%02d%02d", dir,
3672
-			YY, MM, DD);
3673
-
3674
-		if((mkdir(privdata->filename, 0700) < 0) && (errno != EEXIST)) {
3675
-			perror(privdata->filename);
3655
+		if((mkdir(dir, 0700) < 0) && (errno != EEXIST)) {
3656
+			perror(dir);
3676 3657
 			if(use_syslog)
3677
-				syslog(LOG_ERR, _("mkdir %s failed"), privdata->filename);
3658
+				syslog(LOG_ERR, _("mkdir %s failed"), dir);
3678 3659
 			return 0;
3679 3660
 		}
3661
+		privdata->filename = (char *)cli_malloc(strlen(dir) + 12);
3680 3662
 
3681 3663
 		do {
3682
-			sprintf(privdata->filename,
3683
-				"%s/%02d%02d%02d/msg.XXXXXX",
3684
-				dir, YY, MM, DD);
3664
+			sprintf(privdata->filename, "%s/msg.XXXXXX", dir);
3685 3665
 #if	defined(C_LINUX) || defined(C_BSD) || defined(HAVE_MKSTEMP) || defined(C_SOLARIS)
3686 3666
 			privdata->dataSocket = mkstemp(privdata->filename);
3687 3667
 #else
... ...
@@ -3707,9 +3730,10 @@ connect2clamd(struct privdata *privdata)
3707 3707
 		struct sockaddr_in reply;
3708 3708
 		unsigned short p;
3709 3709
 		char buf[64];
3710
-		struct session *session;
3711 3710
 
3712
-#ifndef	SESSION
3711
+#ifdef	SESSION
3712
+		struct session *session;
3713
+#else
3713 3714
 		assert(privdata->cmdSocket == -1);
3714 3715
 #endif
3715 3716
 
... ...
@@ -3829,10 +3853,13 @@ connect2clamd(struct privdata *privdata)
3829 3829
 
3830 3830
 #ifdef	SESSION
3831 3831
 		nbytes = clamd_recv(session->sock, buf, sizeof(buf));
3832
-		if(nbytes < 0) {
3833
-			perror("recv");
3834
-			if(use_syslog)
3835
-				syslog(LOG_ERR, _("recv failed from clamd getting PORT"));
3832
+		if(nbytes <= 0) {
3833
+			if(nbytes < 0) {
3834
+				perror("recv");
3835
+				if(use_syslog)
3836
+					syslog(LOG_ERR, _("recv failed from clamd getting PORT"));
3837
+			} else if(use_syslog)
3838
+				syslog(LOG_ERR, _("EOF from clamd getting PORT"));
3836 3839
 			pthread_mutex_lock(&sstatus_mutex);
3837 3840
 			session->status = CMDSOCKET_DOWN;
3838 3841
 			pthread_mutex_unlock(&sstatus_mutex);
... ...
@@ -3840,10 +3867,13 @@ connect2clamd(struct privdata *privdata)
3840 3840
 		}
3841 3841
 #else
3842 3842
 		nbytes = clamd_recv(privdata->cmdSocket, buf, sizeof(buf));
3843
-		if(nbytes < 0) {
3844
-			perror("recv");
3845
-			if(use_syslog)
3846
-				syslog(LOG_ERR, _("recv failed from clamd getting PORT"));
3843
+		if(nbytes <= 0) {
3844
+			if(nbytes < 0) {
3845
+				perror("recv");
3846
+				if(use_syslog)
3847
+					syslog(LOG_ERR, _("recv failed from clamd getting PORT"));
3848
+			} else if(use_syslog)
3849
+				syslog(LOG_ERR, _("EOF from clamd getting PORT"));
3847 3850
 			return 0;
3848 3851
 		}
3849 3852
 #endif
... ...
@@ -3908,7 +3938,9 @@ connect2clamd(struct privdata *privdata)
3908 3908
 		}
3909 3909
 	}
3910 3910
 
3911
+#ifdef	SESSION
3911 3912
 end:
3913
+#endif
3912 3914
 	/*
3913 3915
 	 * Combine the To and From into one clamfi_send to save bandwidth
3914 3916
 	 * 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
4104 4104
 static int
4105 4105
 qfile(struct privdata *privdata, const char *sendmailId, const char *virusname)
4106 4106
 {
4107
-	char *newname, *ptr;
4107
+	int MM, YY, DD;
4108
+	time_t t;
4108 4109
 	size_t len;
4110
+	char *newname, *ptr;
4111
+	const struct tm *tm;
4109 4112
 
4110 4113
 	assert(privdata != NULL);
4111 4114
 
4112 4115
 	if((privdata->filename == NULL) || (virusname == NULL))
4113 4116
 		return -1;
4114 4117
 
4115
-	len = strlen(privdata->filename);
4118
+	cli_dbgmsg("qfile filename '%s' sendmailId '%s' virusname '%s'\n", privdata->filename, sendmailId, virusname);
4116 4119
 
4117
-	newname = cli_malloc(len + strlen(sendmailId) + strlen(virusname) + 3);
4120
+	len = strlen(quarantine_dir);
4121
+
4122
+	newname = cli_malloc(len + strlen(sendmailId) + strlen(virusname) + 10);
4118 4123
 
4119 4124
 	if(newname == NULL)
4120 4125
 		return -1;
4121 4126
 
4122
-	sprintf(newname, "%s.%s.%s", privdata->filename, sendmailId, virusname);
4127
+	t = time((time_t *)0);
4128
+	tm = localtime(&t);
4129
+	MM = tm->tm_mon + 1;
4130
+	YY = tm->tm_year - 100;
4131
+	DD = tm->tm_mday;
4132
+
4133
+	sprintf(newname, "%s/%02d%02d%02d/%s.%s",
4134
+		quarantine_dir, YY, MM, DD, sendmailId, virusname);
4123 4135
 
4124 4136
 	/*
4125 4137
 	 * Strip out funnies that may be in the name of the virus, such as '/'
4126 4138
 	 * that would cause the quarantine to fail to save since the name
4127 4139
 	 * of the virus is included in the filename
4128 4140
 	 */
4129
-	for(ptr = &newname[len]; *ptr; ptr++) {
4141
+	for(ptr = &newname[len + 8]; *ptr; ptr++) {
4130 4142
 #ifdef	C_DARWIN
4131 4143
 		*ptr &= '\177';
4132 4144
 #endif
... ...
@@ -4137,6 +4181,12 @@ qfile(struct privdata *privdata, const char *sendmailId, const char *virusname)
4137 4137
 #endif
4138 4138
 			*ptr = '_';
4139 4139
 	}
4140
+	cli_dbgmsg("qfile move '%s' to '%s'\n", privdata->filename, newname);
4141
+
4142
+	/*
4143
+	 * FIXME: handle cross file linking failure meaning that we'd have
4144
+	 *	to copy
4145
+	 */
4140 4146
 	if(link(privdata->filename, newname) < 0) {
4141 4147
 		perror(newname);
4142 4148
 		if(use_syslog)
... ...
@@ -4149,6 +4199,9 @@ qfile(struct privdata *privdata, const char *sendmailId, const char *virusname)
4149 4149
 	free(privdata->filename);
4150 4150
 	privdata->filename = newname;
4151 4151
 
4152
+	if(use_syslog)
4153
+		syslog(LOG_INFO, _("File quarantined as %s"), newname);
4154
+
4152 4155
 	return 0;
4153 4156
 }
4154 4157
 
... ...
@@ -4445,7 +4498,7 @@ watchdog(void *a)
4445 4445
 			clamdIsDown();
4446 4446
 		pthread_mutex_unlock(&sstatus_mutex);
4447 4447
 	}
4448
-	cli_errmsg("watchdog quits\n");
4448
+	cli_dbgmsg("watchdog quits\n");
4449 4449
 	return NULL;
4450 4450
 }
4451 4451
 #endif
... ...
@@ -8,7 +8,7 @@ msgid ""
8 8
 msgstr ""
9 9
 "Project-Id-Version: PACKAGE VERSION\n"
10 10
 "Report-Msgid-Bugs-To: bugs@clamav.net\n"
11
-"POT-Creation-Date: 2004-12-05 14:57+0000\n"
11
+"POT-Creation-Date: 2004-12-06 22:31+0000\n"
12 12
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13 13
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14 14
 "Language-Team: LANGUAGE <LL@li.org>\n"
... ...
@@ -16,606 +16,621 @@ msgstr ""
16 16
 "Content-Type: text/plain; charset=CHARSET\n"
17 17
 "Content-Transfer-Encoding: 8bit\n"
18 18
 
19
-#: clamav-milter.c:877
19
+#: clamav-milter.c:883
20 20
 msgid "\t--advisory\t\t-A\tFlag viruses rather than deleting them."
21 21
 msgstr ""
22 22
 
23
-#: clamav-milter.c:878
23
+#: clamav-milter.c:884
24 24
 msgid "\t--bounce\t\t-b\tSend a failure message to the sender."
25 25
 msgstr ""
26 26
 
27
-#: clamav-milter.c:879
27
+#: clamav-milter.c:885
28 28
 msgid ""
29 29
 "\t--broadcast\t\t-B [IFACE]\tBroadcast to a network manager when a virus is "
30 30
 "found."
31 31
 msgstr ""
32 32
 
33
-#: clamav-milter.c:880
33
+#: clamav-milter.c:886
34 34
 msgid "\t--config-file=FILE\t-c FILE\tRead configuration from FILE."
35 35
 msgstr ""
36 36
 
37
-#: clamav-milter.c:881
37
+#: clamav-milter.c:887
38 38
 msgid "\t--debug\t\t\t-D\tPrint debug messages."
39 39
 msgstr ""
40 40
 
41
-#: clamav-milter.c:882
41
+#: clamav-milter.c:888
42 42
 msgid ""
43 43
 "\t--dont-log-clean\t-C\tDon't add an entry to syslog that a mail is clean."
44 44
 msgstr ""
45 45
 
46
-#: clamav-milter.c:883
46
+#: clamav-milter.c:889
47 47
 msgid ""
48 48
 "\t--dont-scan-on-error\t-d\tPass e-mails through unscanned if a system error "
49 49
 "occurs."
50 50
 msgstr ""
51 51
 
52
-#: clamav-milter.c:884
52
+#: clamav-milter.c:890
53 53
 msgid "\t--dont-wait\t\t\tAsk remote end to resend if max-children exceeded."
54 54
 msgstr ""
55 55
 
56
-#: clamav-milter.c:885
56
+#: clamav-milter.c:891
57 57
 msgid "\t--from=EMAIL\t\t-a EMAIL\tError messages come from here."
58 58
 msgstr ""
59 59
 
60
-#: clamav-milter.c:886
60
+#: clamav-milter.c:892
61 61
 msgid "\t--force-scan\t\t-f\tForce scan all messages (overrides (-o and -l)."
62 62
 msgstr ""
63 63
 
64
-#: clamav-milter.c:887
64
+#: clamav-milter.c:893
65 65
 msgid "\t--help\t\t\t-h\tThis message."
66 66
 msgstr ""
67 67
 
68
-#: clamav-milter.c:888
68
+#: clamav-milter.c:894
69 69
 msgid "\t--headers\t\t-H\tInclude original message headers in the report."
70 70
 msgstr ""
71 71
 
72
-#: clamav-milter.c:889
72
+#: clamav-milter.c:895
73 73
 msgid "\t--internal\t\t-I\tUse the internal scanner."
74 74
 msgstr ""
75 75
 
76
-#: clamav-milter.c:890
76
+#: clamav-milter.c:896
77 77
 msgid "\t--local\t\t\t-l\tScan messages sent from machines on our LAN."
78 78
 msgstr ""
79 79
 
80
-#: clamav-milter.c:891
80
+#: clamav-milter.c:897
81 81
 msgid "\t--max-childen\t\t-m\tMaximum number of concurrent scans."
82 82
 msgstr ""
83 83
 
84
-#: clamav-milter.c:892
84
+#: clamav-milter.c:898
85 85
 msgid "\t--outgoing\t\t-o\tScan outgoing messages from this machine."
86 86
 msgstr ""
87 87
 
88
-#: clamav-milter.c:893
88
+#: clamav-milter.c:899
89 89
 msgid "\t--noreject\t\t-N\tDon't reject viruses, silently throw them away."
90 90
 msgstr ""
91 91
 
92
-#: clamav-milter.c:894
92
+#: clamav-milter.c:900
93 93
 msgid "\t--noxheader\t\t-n\tSuppress X-Virus-Scanned/X-Virus-Status headers."
94 94
 msgstr ""
95 95
 
96
-#: clamav-milter.c:895
96
+#: clamav-milter.c:901
97 97
 msgid "\t--pidfile=FILE\t\t-i FILE\tLocation of pidfile."
98 98
 msgstr ""
99 99
 
100
-#: clamav-milter.c:896
100
+#: clamav-milter.c:902
101 101
 msgid "\t--postmaster\t\t-p EMAIL\tPostmaster address [default=postmaster]."
102 102
 msgstr ""
103 103
 
104
-#: clamav-milter.c:897
104
+#: clamav-milter.c:903
105 105
 msgid "\t--postmaster-only\t-P\tSend warnings only to the postmaster."
106 106
 msgstr ""
107 107
 
108
-#: clamav-milter.c:898
108
+#: clamav-milter.c:904
109 109
 msgid "\t--quiet\t\t\t-q\tDon't send e-mail notifications of interceptions."
110 110
 msgstr ""
111 111
 
112
-#: clamav-milter.c:899
112
+#: clamav-milter.c:905
113 113
 msgid "\t--quarantine=USER\t-Q EMAIL\tQuanrantine e-mail account."
114 114
 msgstr ""
115 115
 
116
-#: clamav-milter.c:900
116
+#: clamav-milter.c:906
117 117
 msgid "\t--quarantine-dir=DIR\t-U DIR\tDirectory to store infected emails."
118 118
 msgstr ""
119 119
 
120
-#: clamav-milter.c:901
120
+#: clamav-milter.c:907
121 121
 msgid ""
122 122
 "\t--server=SERVER\t\t-s SERVER\tHostname/IP address of server(s) running "
123 123
 "clamd (when using TCPsocket)."
124 124
 msgstr ""
125 125
 
126
-#: clamav-milter.c:902
126
+#: clamav-milter.c:908
127 127
 msgid "\t--sign\t\t\t-S\tAdd a hard-coded signature to each scanned message."
128 128
 msgstr ""
129 129
 
130
-#: clamav-milter.c:903
130
+#: clamav-milter.c:909
131 131
 msgid "\t--signature-file=FILE\t-F FILE\tLocation of signature file."
132 132
 msgstr ""
133 133
 
134
-#: clamav-milter.c:904
134
+#: clamav-milter.c:910
135 135
 msgid "\t--template-file=FILE\t-t FILE\tLocation of e-mail template file."
136 136
 msgstr ""
137 137
 
138
-#: clamav-milter.c:905
138
+#: clamav-milter.c:911
139 139
 msgid "\t--timeout=SECS\t\t-T SECS\tTimeout waiting to childen to die."
140 140
 msgstr ""
141 141
 
142
-#: clamav-milter.c:906
142
+#: clamav-milter.c:912
143 143
 msgid "\t--version\t\t-V\tPrint the version number of this software."
144 144
 msgstr ""
145 145
 
146
-#: clamav-milter.c:908
146
+#: clamav-milter.c:914
147 147
 msgid "\t--debug-level=n\t\t-x n\tSets the debug level to 'n'."
148 148
 msgstr ""
149 149
 
150
-#: clamav-milter.c:910
150
+#: clamav-milter.c:916
151 151
 msgid ""
152 152
 "\n"
153 153
 "For more information type \"man clamav-milter\"."
154 154
 msgstr ""
155 155
 
156
-#: clamav-milter.c:911
156
+#: clamav-milter.c:917
157 157
 msgid "Report bugs to bugs@clamav.net."
158 158
 msgstr ""
159 159
 
160
-#: clamav-milter.c:1203
160
+#: clamav-milter.c:1209
161 161
 #, c-format
162 162
 msgid "%s: No socket-addr given\n"
163 163
 msgstr ""
164 164
 
165
-#: clamav-milter.c:1212
165
+#: clamav-milter.c:1218
166 166
 #, c-format
167 167
 msgid "%s: Can't parse the config file %s\n"
168 168
 msgstr ""
169 169
 
170
-#: clamav-milter.c:1251
170
+#: clamav-milter.c:1257
171 171
 #, c-format
172 172
 msgid ""
173 173
 "%s: The iface option to --broadcast is not supported on your operating "
174 174
 "system\n"
175 175
 msgstr ""
176 176
 
177
-#: clamav-milter.c:1260
177
+#: clamav-milter.c:1266
178 178
 #, c-format
179 179
 msgid "%s: Can't get information about user %s\n"
180 180
 msgstr ""
181 181
 
182
-#: clamav-milter.c:1271
182
+#: clamav-milter.c:1277
183 183
 #, c-format
184 184
 msgid "%s: AllowSupplementaryGroups: initgroups not supported.\n"
185 185
 msgstr ""
186 186
 
187
-#: clamav-milter.c:1288
187
+#: clamav-milter.c:1294
188 188
 #, c-format
189 189
 msgid "Running as user %s (UID %d, GID %d)\n"
190 190
 msgstr ""
191 191
 
192
-#: clamav-milter.c:1291
192
+#: clamav-milter.c:1297
193 193
 #, c-format
194 194
 msgid "%s: running as root is not recommended (check \"User\" in clamd.conf)\n"
195 195
 msgstr ""
196 196
 
197
-#: clamav-milter.c:1293
197
+#: clamav-milter.c:1299
198 198
 #, c-format
199 199
 msgid "%s: Only root can set an interface for --broadcast\n"
200 200
 msgstr ""
201 201
 
202
-#: clamav-milter.c:1298
202
+#: clamav-milter.c:1304
203 203
 #, c-format
204 204
 msgid "%s: Advisory mode doesn't work with quarantine mode\n"
205 205
 msgstr ""
206 206
 
207
-#: clamav-milter.c:1305
207
+#: clamav-milter.c:1312
208 208
 #, c-format
209 209
 msgid "%s: Advisory mode doesn't work with quarantine directories\n"
210 210
 msgstr ""
211 211
 
212
-#: clamav-milter.c:1321
212
+#: clamav-milter.c:1318
213 213
 #, c-format
214
-msgid "%s: insecure quarantine directory %s (mode 0%o)\n"
214
+msgid "%s: the quarantine directory must not contain the string 'ERROR'\n"
215
+msgstr ""
216
+
217
+#: clamav-milter.c:1324
218
+#, c-format
219
+msgid "%s: the quarantine directory must not contain the string 'FOUND'\n"
220
+msgstr ""
221
+
222
+#: clamav-milter.c:1330
223
+#, c-format
224
+msgid "%s: the quarantine directory must not contain the string 'OK'\n"
215 225
 msgstr ""
216 226
 
217 227
 #: clamav-milter.c:1347
218 228
 #, c-format
229
+msgid "%s: insecure quarantine directory %s (mode 0%o)\n"
230
+msgstr ""
231
+
232
+#: clamav-milter.c:1373
233
+#, c-format
219 234
 msgid "%s: ReadTimeout must not be negative in %s\n"
220 235
 msgstr ""
221 236
 
222
-#: clamav-milter.c:1355
237
+#: clamav-milter.c:1381
223 238
 #, c-format
224 239
 msgid "%s: StreamMaxLength must not be negative in %s\n"
225 240
 msgstr ""
226 241
 
227
-#: clamav-milter.c:1378
242
+#: clamav-milter.c:1404
228 243
 #, c-format
229 244
 msgid ""
230 245
 "%s: (-q && !LogSyslog): warning - all interception message methods are off\n"
231 246
 msgstr ""
232 247
 
233
-#: clamav-milter.c:1388
248
+#: clamav-milter.c:1414
234 249
 #, c-format
235
-msgid "%s: ScanMail not defined in %s\n"
250
+msgid "%s: ScanMail not defined in %s (needed with --internal)\n"
236 251
 msgstr ""
237 252
 
238
-#: clamav-milter.c:1393
253
+#: clamav-milter.c:1419
239 254
 #, c-format
240 255
 msgid "%s: --max-children must be given in internal mode\n"
241 256
 msgstr ""
242 257
 
243
-#: clamav-milter.c:1397
258
+#: clamav-milter.c:1423
244 259
 #, c-format
245 260
 msgid "%s: --timeout must not be given in internal mode\n"
246 261
 msgstr ""
247 262
 
248
-#: clamav-milter.c:1410
263
+#: clamav-milter.c:1436
249 264
 #, c-format
250 265
 msgid "%s: You can select one server type only (local/TCP) in %s\n"
251 266
 msgstr ""
252 267
 
253
-#: clamav-milter.c:1420
268
+#: clamav-milter.c:1446
254 269
 #, c-format
255 270
 msgid "The connection from sendmail to %s (%s) must not\n"
256 271
 msgstr ""
257 272
 
258
-#: clamav-milter.c:1422
273
+#: clamav-milter.c:1448
259 274
 #, c-format
260 275
 msgid "be the same as the connection to clamd (%s) in %s\n"
261 276
 msgstr ""
262 277
 
263
-#: clamav-milter.c:1432 clamav-milter.c:1455
278
+#: clamav-milter.c:1458 clamav-milter.c:1481
264 279
 #, c-format
265 280
 msgid "Can't talk to clamd server via %s\n"
266 281
 msgstr ""
267 282
 
268
-#: clamav-milter.c:1434 clamav-milter.c:1457
283
+#: clamav-milter.c:1460 clamav-milter.c:1483
269 284
 #, c-format
270 285
 msgid "Check your entry for LocalSocket in %s\n"
271 286
 msgstr ""
272 287
 
273
-#: clamav-milter.c:1468
288
+#: clamav-milter.c:1494
274 289
 msgid "Can't create a clamd session"
275 290
 msgstr ""
276 291
 
277
-#: clamav-milter.c:1485
292
+#: clamav-milter.c:1511
278 293
 #, c-format
279 294
 msgid ""
280 295
 "%s: --quarantine-dir not supported for remote scanning - use --quarantine\n"
281 296
 msgstr ""
282 297
 
283
-#: clamav-milter.c:1500
298
+#: clamav-milter.c:1526
284 299
 #, c-format
285 300
 msgid "%s: hostname %s is longer than %d characters\n"
286 301
 msgstr ""
287 302
 
288
-#: clamav-milter.c:1519
303
+#: clamav-milter.c:1545
289 304
 #, c-format
290 305
 msgid "%s: --max-children must be given in sessions mode\n"
291 306
 msgstr ""
292 307
 
293
-#: clamav-milter.c:1542
308
+#: clamav-milter.c:1568
294 309
 #, c-format
295 310
 msgid "%s: Unknown host %s\n"
296 311
 msgstr ""
297 312
 
298
-#: clamav-milter.c:1554
313
+#: clamav-milter.c:1580
299 314
 #, c-format
300 315
 msgid "Can't talk to clamd server %s on port %d\n"
301 316
 msgstr ""
302 317
 
303
-#: clamav-milter.c:1571
318
+#: clamav-milter.c:1597
304 319
 msgid "Can't find any active clamd servers\n"
305 320
 msgstr ""
306 321
 
307
-#: clamav-milter.c:1572 clamav-milter.c:1578
322
+#: clamav-milter.c:1598 clamav-milter.c:1604
308 323
 #, c-format
309 324
 msgid "Check your entry for TCPSocket in %s\n"
310 325
 msgstr ""
311 326
 
312
-#: clamav-milter.c:1577
327
+#: clamav-milter.c:1603
313 328
 msgid "Can't find any clamd servers\n"
314 329
 msgstr ""
315 330
 
316
-#: clamav-milter.c:1584
331
+#: clamav-milter.c:1610
317 332
 #, c-format
318 333
 msgid "%s: You must select server type (local/TCP) in %s\n"
319 334
 msgstr ""
320 335
 
321
-#: clamav-milter.c:1635
336
+#: clamav-milter.c:1666
322 337
 #, c-format
323 338
 msgid "When debugging it is recommended that you use Foreground mode in %s\n"
324 339
 msgstr ""
325 340
 
326
-#: clamav-milter.c:1636
341
+#: clamav-milter.c:1667
327 342
 msgid "\tso that you can see all of the messages"
328 343
 msgstr ""
329 344
 
330
-#: clamav-milter.c:1737
345
+#: clamav-milter.c:1768
331 346
 msgid "Starting clamav-milter"
332 347
 msgstr ""
333 348
 
334
-#: clamav-milter.c:1746
349
+#: clamav-milter.c:1777
335 350
 #, c-format
336 351
 msgid "Can't save PID in file %s"
337 352
 msgstr ""
338 353
 
339
-#: clamav-milter.c:1748
354
+#: clamav-milter.c:1779
340 355
 #, c-format
341 356
 msgid "Can't save PID in file %s\n"
342 357
 msgstr ""
343 358
 
344
-#: clamav-milter.c:1776
359
+#: clamav-milter.c:1807
345 360
 #, c-format
346 361
 msgid "%s: smfi_setconn failed\n"
347 362
 msgstr ""
348 363
 
349
-#: clamav-milter.c:1789
364
+#: clamav-milter.c:1820
350 365
 #, c-format
351 366
 msgid "Starting %s"
352 367
 msgstr ""
353 368
 
354
-#: clamav-milter.c:1792
369
+#: clamav-milter.c:1823
355 370
 msgid "Debugging is on"
356 371
 msgstr ""
357 372
 
358
-#: clamav-milter.c:1848 clamav-milter.c:2098
373
+#: clamav-milter.c:1879 clamav-milter.c:2136
359 374
 #, c-format
360 375
 msgid "Check clamd server %s - it may be down\n"
361 376
 msgstr ""
362 377
 
363
-#: clamav-milter.c:1853 clamav-milter.c:2107
378
+#: clamav-milter.c:1884 clamav-milter.c:2145
364 379
 msgid "Check clamd server - it may be down\n"
365 380
 msgstr ""
366 381
 
367
-#: clamav-milter.c:2024
382
+#: clamav-milter.c:2059
368 383
 msgid "No free clamd sessions\n"
369 384
 msgstr ""
370 385
 
371
-#: clamav-milter.c:2101
386
+#: clamav-milter.c:2139
372 387
 #, c-format
373 388
 msgid "Check clamd server %s - it may be down"
374 389
 msgstr ""
375 390
 
376
-#: clamav-milter.c:2143
391
+#: clamav-milter.c:2181
377 392
 msgid "findServer: select failed"
378 393
 msgstr ""
379 394
 
380
-#: clamav-milter.c:2152
395
+#: clamav-milter.c:2190
381 396
 #, c-format
382 397
 msgid "findServer: using server %d\n"
383 398
 msgstr ""
384 399
 
385
-#: clamav-milter.c:2157
400
+#: clamav-milter.c:2195
386 401
 msgid "findServer: No response from any server\n"
387 402
 msgstr ""
388 403
 
389
-#: clamav-milter.c:2159
404
+#: clamav-milter.c:2197
390 405
 msgid "findServer: No response from any server"
391 406
 msgstr ""
392 407
 
393
-#: clamav-milter.c:2180
408
+#: clamav-milter.c:2218
394 409
 msgid "clamfi_connect: ctx is null"
395 410
 msgstr ""
396 411
 
397
-#: clamav-milter.c:2185
412
+#: clamav-milter.c:2223
398 413
 msgid "clamfi_connect: hostname is null"
399 414
 msgstr ""
400 415
 
401
-#: clamav-milter.c:2206
416
+#: clamav-milter.c:2244
402 417
 msgid "clamfi_connect: remoteIP is null"
403 418
 msgstr ""
404 419
 
405
-#: clamav-milter.c:2215
420
+#: clamav-milter.c:2253
406 421
 #, c-format
407 422
 msgid "clamfi_connect: connection from %s"
408 423
 msgstr ""
409 424
 
410
-#: clamav-milter.c:2216
425
+#: clamav-milter.c:2254
411 426
 #, c-format
412 427
 msgid "clamfi_connect: connection from %s\n"
413 428
 msgstr ""
414 429
 
415
-#: clamav-milter.c:2219
430
+#: clamav-milter.c:2257
416 431
 #, c-format
417 432
 msgid "clamfi_connect: connection from %s [%s]"
418 433
 msgstr ""
419 434
 
420
-#: clamav-milter.c:2220
435
+#: clamav-milter.c:2258
421 436
 #, c-format
422 437
 msgid "clamfi_connect: connection from %s [%s]\n"
423 438
 msgstr ""
424 439
 
425
-#: clamav-milter.c:2240
440
+#: clamav-milter.c:2278
426 441
 msgid "Can't get sendmail hostname"
427 442
 msgstr ""
428 443
 
429
-#: clamav-milter.c:2245
444
+#: clamav-milter.c:2283
430 445
 #, c-format
431 446
 msgid "Access Denied: Host Unknown (%s)"
432 447
 msgstr ""
433 448
 
434
-#: clamav-milter.c:2255
449
+#: clamav-milter.c:2293
435 450
 #, c-format
436 451
 msgid "Access Denied: Can't get IP address for (%s)"
437 452
 msgstr ""
438 453
 
439
-#: clamav-milter.c:2272
454
+#: clamav-milter.c:2310
440 455
 #, c-format
441 456
 msgid "Access Denied for %s[%s]"
442 457
 msgstr ""
443 458
 
444
-#: clamav-milter.c:2290
459
+#: clamav-milter.c:2328
445 460
 msgid "clamfi_connect: not scanning outgoing messages"
446 461
 msgstr ""
447 462
 
448
-#: clamav-milter.c:2291
463
+#: clamav-milter.c:2329
449 464
 msgid "clamfi_connect: not scanning outgoing messages\n"
450 465
 msgstr ""
451 466
 
452
-#: clamav-milter.c:2299
467
+#: clamav-milter.c:2337
453 468
 msgid "clamfi_connect: not scanning local messages"
454 469
 msgstr ""
455 470
 
456
-#: clamav-milter.c:2300
471
+#: clamav-milter.c:2338
457 472
 msgid "clamfi_connect: not scanning local messages\n"
458 473
 msgstr ""
459 474
 
460
-#: clamav-milter.c:2332
475
+#: clamav-milter.c:2370
461 476
 #, c-format
462 477
 msgid "hit max-children limit (%u >= %u)\n"
463 478
 msgstr ""
464 479
 
465
-#: clamav-milter.c:2333
480
+#: clamav-milter.c:2371
466 481
 #, c-format
467 482
 msgid "hit max-children limit (%u >= %u): waiting for some to exit\n"
468 483
 msgstr ""
469 484
 
470
-#: clamav-milter.c:2339
485
+#: clamav-milter.c:2377
471 486
 #, c-format
472 487
 msgid "hit max-children limit (%u >= %u)"
473 488
 msgstr ""
474 489
 
475
-#: clamav-milter.c:2340
490
+#: clamav-milter.c:2378
476 491
 #, c-format
477 492
 msgid "hit max-children limit (%u >= %u): waiting for some to exit"
478 493
 msgstr ""
479 494
 
480
-#: clamav-milter.c:2345
495
+#: clamav-milter.c:2383
481 496
 msgid "AV system temporarily overloaded - please try later"
482 497
 msgstr ""
483 498
 
484
-#: clamav-milter.c:2378
499
+#: clamav-milter.c:2416
485 500
 #, c-format
486 501
 msgid ">n_children = %d\n"
487 502
 msgstr ""
488 503
 
489
-#: clamav-milter.c:2384
504
+#: clamav-milter.c:2422
490 505
 msgid "Timeout waiting for a child to die"
491 506
 msgstr ""
492 507
 
493
-#: clamav-milter.c:2386
508
+#: clamav-milter.c:2424
494 509
 msgid "Timeout waiting for a child to die\n"
495 510
 msgstr ""
496 511
 
497
-#: clamav-milter.c:2496
512
+#: clamav-milter.c:2534
498 513
 #, c-format
499 514
 msgid "Failed to delete X-Virus-Status header %d"
500 515
 msgstr ""
501 516
 
502
-#: clamav-milter.c:2524
517
+#: clamav-milter.c:2562
503 518
 msgid "clamfi_eoh"
504 519
 msgstr ""
505 520
 
506
-#: clamav-milter.c:2527
521
+#: clamav-milter.c:2565
507 522
 msgid "clamfi_eoh\n"
508 523
 msgstr ""
509 524
 
510
-#: clamav-milter.c:2584
525
+#: clamav-milter.c:2622
511 526
 msgid "clamfi_eoh: ignoring whitelisted message"
512 527
 msgstr ""
513 528
 
514
-#: clamav-milter.c:2586
529
+#: clamav-milter.c:2624
515 530
 msgid "clamfi_eoh: ignoring whitelisted message\n"
516 531
 msgstr ""
517 532
 
518
-#: clamav-milter.c:2600
533
+#: clamav-milter.c:2638
519 534
 #, c-format
520 535
 msgid "clamfi_envbody: %u bytes"
521 536
 msgstr ""
522 537
 
523
-#: clamav-milter.c:2602
538
+#: clamav-milter.c:2640
524 539
 #, c-format
525 540
 msgid "clamfi_envbody: %u bytes\n"
526 541
 msgstr ""
527 542
 
528
-#: clamav-milter.c:2612 clamav-milter.c:2870
543
+#: clamav-milter.c:2650 clamav-milter.c:2908
529 544
 #, c-format
530 545
 msgid "%s: Message more than StreamMaxLength (%ld) bytes - not scanned"
531 546
 msgstr ""
532 547
 
533
-#: clamav-milter.c:2616 clamav-milter.c:2873
548
+#: clamav-milter.c:2654 clamav-milter.c:2911
534 549
 msgid "Not Scanned - StreamMaxLength exceeded"
535 550
 msgstr ""
536 551
 
537
-#: clamav-milter.c:2714
552
+#: clamav-milter.c:2752
538 553
 #, c-format
539 554
 msgid "failed to send SCAN %s command to clamd"
540 555
 msgstr ""
541 556
 
542
-#: clamav-milter.c:2736
557
+#: clamav-milter.c:2774
543 558
 msgid "failed to send SCAN command to clamd"
544 559
 msgstr ""
545 560
 
546
-#: clamav-milter.c:2752
561
+#: clamav-milter.c:2790
547 562
 #, c-format
548 563
 msgid "Wating to read status from fd %d\n"
549 564
 msgstr ""
550 565
 
551
-#: clamav-milter.c:2763
566
+#: clamav-milter.c:2801
552 567
 #, c-format
553 568
 msgid "clamfi_eom: read %s"
554 569
 msgstr ""
555 570
 
556
-#: clamav-milter.c:2764
571
+#: clamav-milter.c:2802
557 572
 #, c-format
558 573
 msgid "clamfi_eom: read %s\n"
559 574
 msgstr ""
560 575
 
561
-#: clamav-milter.c:2772
576
+#: clamav-milter.c:2810
562 577
 msgid "clamfi_eom: read nothing from clamd"
563 578
 msgstr ""
564 579
 
565
-#: clamav-milter.c:2774
580
+#: clamav-milter.c:2812
566 581
 msgid "clamfi_eom: read nothing from clamd\n"
567 582
 msgstr ""
568 583
 
569
-#: clamav-milter.c:2819 clamav-milter.c:2859
584
+#: clamav-milter.c:2857 clamav-milter.c:2897
570 585
 msgid "Error determining host"
571 586
 msgstr ""
572 587
 
573
-#: clamav-milter.c:2878
588
+#: clamav-milter.c:2916
574 589
 msgid "Not Scanned"
575 590
 msgstr ""
576 591
 
577
-#: clamav-milter.c:2900
592
+#: clamav-milter.c:2943
578 593
 msgid "Infected"
579 594
 msgstr ""
580 595
 
581
-#: clamav-milter.c:2918
596
+#: clamav-milter.c:2961
582 597
 #, c-format
583 598
 msgid "Intercepted virus from %s to"
584 599
 msgstr ""
585 600
 
586
-#: clamav-milter.c:3012
601
+#: clamav-milter.c:3058
587 602
 msgid ""
588 603
 "Subject: Virus intercepted\n"
589 604
 "\n"
590 605
 msgstr ""
591 606
 
592
-#: clamav-milter.c:3034
607
+#: clamav-milter.c:3080
593 608
 msgid "A message you sent to\n"
594 609
 msgstr ""
595 610
 
596
-#: clamav-milter.c:3041
611
+#: clamav-milter.c:3087
597 612
 #, c-format
598 613
 msgid "The message %1$s sent from %2$s to\n"
599 614
 msgstr ""
600 615
 
601
-#: clamav-milter.c:3044
616
+#: clamav-milter.c:3090
602 617
 #, c-format
603 618
 msgid "A message sent from %s to\n"
604 619
 msgstr ""
605 620
 
606
-#: clamav-milter.c:3049
621
+#: clamav-milter.c:3095
607 622
 #, c-format
608 623
 msgid "contained %s and has not been delivered.\n"
609 624
 msgstr ""
610 625
 
611
-#: clamav-milter.c:3053
626
+#: clamav-milter.c:3098
612 627
 #, c-format
613 628
 msgid ""
614 629
 "\n"
615 630
 "The message in question has been quarantined as %s\n"
616 631
 msgstr ""
617 632
 
618
-#: clamav-milter.c:3056
633
+#: clamav-milter.c:3101
619 634
 #, c-format
620 635
 msgid ""
621 636
 "\n"
... ...
@@ -623,13 +638,13 @@ msgid ""
623 623
 "\n"
624 624
 msgstr ""
625 625
 
626
-#: clamav-milter.c:3059
626
+#: clamav-milter.c:3104
627 627
 msgid ""
628 628
 "For your information, the original message headers were:\n"
629 629
 "\n"
630 630
 msgstr ""
631 631
 
632
-#: clamav-milter.c:3072
632
+#: clamav-milter.c:3117
633 633
 #, c-format
634 634
 msgid ""
635 635
 "\n"
... ...
@@ -637,225 +652,234 @@ msgid ""
637 637
 "%s\t\n"
638 638
 msgstr ""
639 639
 
640
-#: clamav-milter.c:3083
640
+#: clamav-milter.c:3128
641 641
 #, c-format
642 642
 msgid "Quarantined infected mail as %s"
643 643
 msgstr ""
644 644
 
645
-#: clamav-milter.c:3107
645
+#: clamav-milter.c:3152
646 646
 #, c-format
647 647
 msgid "Can't set quarantine user %s"
648 648
 msgstr ""
649 649
 
650
-#: clamav-milter.c:3109
650
+#: clamav-milter.c:3154
651 651
 #, c-format
652 652
 msgid "Can't set quarantine user %s\n"
653 653
 msgstr ""
654 654
 
655
-#: clamav-milter.c:3122
655
+#: clamav-milter.c:3167
656 656
 #, c-format
657 657
 msgid "virus %s detected by ClamAV - http://www.clamav.net"
658 658
 msgstr ""
659 659
 
660
-#: clamav-milter.c:3127
660
+#: clamav-milter.c:3172
661 661
 msgid "Unknown"
662 662
 msgstr ""
663 663
 
664
-#: clamav-milter.c:3129
664
+#: clamav-milter.c:3174
665 665
 #, c-format
666 666
 msgid "%s: incorrect message \"%s\" from clamd"
667 667
 msgstr ""
668 668
 
669
-#: clamav-milter.c:3135
669
+#: clamav-milter.c:3180
670 670
 msgid "Clean"
671 671
 msgstr ""
672 672
 
673
-#: clamav-milter.c:3139
673
+#: clamav-milter.c:3184
674 674
 #, c-format
675 675
 msgid "%s: clean message from %s"
676 676
 msgstr ""
677 677
 
678
-#: clamav-milter.c:3141
678
+#: clamav-milter.c:3186
679 679
 msgid "an unknown sender"
680 680
 msgstr ""
681 681
 
682
-#: clamav-milter.c:3240
682
+#: clamav-milter.c:3286
683 683
 #, c-format
684 684
 msgid "Can't remove clean file %s"
685 685
 msgstr ""
686 686
 
687
-#: clamav-milter.c:3420 clamav-milter.c:3423
687
+#: clamav-milter.c:3466 clamav-milter.c:3469
688 688
 #, c-format
689 689
 msgid "write failure (%u bytes) to %s: %s"
690 690
 msgstr ""
691 691
 
692
-#: clamav-milter.c:3437 clamav-milter.c:3440
692
+#: clamav-milter.c:3483 clamav-milter.c:3486
693 693
 #, c-format
694 694
 msgid "write failure (%u bytes) to clamd: %s"
695 695
 msgstr ""
696 696
 
697
-#: clamav-milter.c:3506
697
+#: clamav-milter.c:3552
698 698
 #, c-format
699 699
 msgid "No data received from clamd in %d seconds\n"
700 700
 msgstr ""
701 701
 
702
-#: clamav-milter.c:3528
702
+#: clamav-milter.c:3574
703 703
 #, c-format
704 704
 msgid "Can't stat %s"
705 705
 msgstr ""
706 706
 
707
-#: clamav-milter.c:3539 clamav-milter.c:3969
707
+#: clamav-milter.c:3585 clamav-milter.c:4004
708 708
 #, c-format
709 709
 msgid "Can't open %s"
710 710
 msgstr ""
711 711
 
712
-#: clamav-milter.c:3674
712
+#: clamav-milter.c:3701
713 713
 #, c-format
714 714
 msgid "mkdir %s failed"
715 715
 msgstr ""
716 716
 
717
-#: clamav-milter.c:3687
717
+#: clamav-milter.c:3713
718 718
 #, c-format
719 719
 msgid "mktemp %s failed"
720 720
 msgstr ""
721 721
 
722
-#: clamav-milter.c:3697
722
+#: clamav-milter.c:3723
723 723
 #, c-format
724 724
 msgid "Temporary quarantine file %s creation failed"
725 725
 msgstr ""
726 726
 
727
-#: clamav-milter.c:3800
727
+#: clamav-milter.c:3827
728 728
 #, c-format
729 729
 msgid "failed to send STREAM command clamd server %d"
730 730
 msgstr ""
731 731
 
732
-#: clamav-milter.c:3809
732
+#: clamav-milter.c:3836
733 733
 msgid "failed to send STREAM command clamd"
734 734
 msgstr ""
735 735
 
736
-#: clamav-milter.c:3821
736
+#: clamav-milter.c:3848
737 737
 msgid "failed to create TCPSocket to talk to clamd"
738 738
 msgstr ""
739 739
 
740
-#: clamav-milter.c:3832 clamav-milter.c:3843
740
+#: clamav-milter.c:3860 clamav-milter.c:3874
741 741
 msgid "recv failed from clamd getting PORT"
742 742
 msgstr ""
743 743
 
744
-#: clamav-milter.c:3854
744
+#: clamav-milter.c:3862 clamav-milter.c:3876
745
+msgid "EOF from clamd getting PORT"
746
+msgstr ""
747
+
748
+#: clamav-milter.c:3887
745 749
 #, c-format
746 750
 msgid "Expected port information from clamd, got '%s'"
747 751
 msgstr ""
748 752
 
749
-#: clamav-milter.c:3857
753
+#: clamav-milter.c:3890
750 754
 #, c-format
751 755
 msgid "Expected port information from clamd, got '%s'\n"
752 756
 msgstr ""
753 757
 
754
-#: clamav-milter.c:3877 clamav-milter.c:3880
758
+#: clamav-milter.c:3910 clamav-milter.c:3913
755 759
 #, c-format
756 760
 msgid "Connecting to local port %d - data %d cmd %d\n"
757 761
 msgstr ""
758 762
 
759
-#: clamav-milter.c:3893 clamav-milter.c:3896
763
+#: clamav-milter.c:3926 clamav-milter.c:3929
760 764
 #, c-format
761 765
 msgid "Failed to connect to port %d given by clamd: %s"
762 766
 msgstr ""
763 767
 
764
-#: clamav-milter.c:3981
768
+#: clamav-milter.c:4016
765 769
 #, c-format
766 770
 msgid "Clamd (pid %d) seems to have died"
767 771
 msgstr ""
768 772
 
769
-#: clamav-milter.c:4007
773
+#: clamav-milter.c:4042
770 774
 #, c-format
771 775
 msgid "Can't open e-mail template file %s"
772 776
 msgstr ""
773 777
 
774
-#: clamav-milter.c:4016
778
+#: clamav-milter.c:4051
775 779
 #, c-format
776 780
 msgid "Can't stat e-mail template file %s"
777 781
 msgstr ""
778 782
 
779
-#: clamav-milter.c:4025
783
+#: clamav-milter.c:4060
780 784
 msgid "Out of memory"
781 785
 msgstr ""
782 786
 
783
-#: clamav-milter.c:4052
787
+#: clamav-milter.c:4087
784 788
 #, c-format
785 789
 msgid "%s: Unknown clamAV variable \"%c\"\n"
786 790
 msgstr ""
787 791
 
788
-#: clamav-milter.c:4063
792
+#: clamav-milter.c:4098
789 793
 #, c-format
790 794
 msgid "%s: Unterminated sendmail variable \"%s\"\n"
791 795
 msgstr ""
792 796
 
793
-#: clamav-milter.c:4074
797
+#: clamav-milter.c:4109
794 798
 #, c-format
795 799
 msgid "%s: Unknown sendmail variable \"%s\"\n"
796 800
 msgstr ""
797 801
 
798
-#: clamav-milter.c:4140
802
+#: clamav-milter.c:4193
799 803
 #, c-format
800 804
 msgid "Can't rename %1$s to %2$s"
801 805
 msgstr ""
802 806
 
803
-#: clamav-milter.c:4164
807
+#: clamav-milter.c:4203
808
+#, c-format
809
+msgid "File quarantined as %s"
810
+msgstr ""
811
+
812
+#: clamav-milter.c:4220
804 813
 #, c-format
805 814
 msgid "[Virus] %s"
806 815
 msgstr ""
807 816
 
808
-#: clamav-milter.c:4257
817
+#: clamav-milter.c:4313
809 818
 msgid ""
810 819
 "No response from any clamd server - your AV system is not scanning emails\n"
811 820
 msgstr ""
812 821
 
813
-#: clamav-milter.c:4260
822
+#: clamav-milter.c:4316
814 823
 msgid ""
815 824
 "No response from any clamd server - your AV system is not scanning emails"
816 825
 msgstr ""
817 826
 
818
-#: clamav-milter.c:4278
827
+#: clamav-milter.c:4334
819 828
 msgid "Subject: ClamAV Down\n"
820 829
 msgstr ""
821 830
 
822
-#: clamav-milter.c:4281
831
+#: clamav-milter.c:4337
823 832
 msgid ""
824 833
 "This is an automatic message\n"
825 834
 "\n"
826 835
 msgstr ""
827 836
 
828
-#: clamav-milter.c:4284
837
+#: clamav-milter.c:4340
829 838
 msgid "The clamd program cannot be contacted.\n"
830 839
 msgstr ""
831 840
 
832
-#: clamav-milter.c:4286
841
+#: clamav-milter.c:4342
833 842
 msgid "No clamd server can be contacted.\n"
834 843
 msgstr ""
835 844
 
836
-#: clamav-milter.c:4288
845
+#: clamav-milter.c:4344
837 846
 msgid "Emails may not be being scanned, please check your servers.\n"
838 847
 msgstr ""
839 848
 
840
-#: clamav-milter.c:4357
849
+#: clamav-milter.c:4413
841 850
 msgid "Loading new database"
842 851
 msgstr ""
843 852
 
844
-#: clamav-milter.c:4540
853
+#: clamav-milter.c:4596
845 854
 #, c-format
846 855
 msgid "Stopping %s"
847 856
 msgstr ""
848 857
 
849
-#: clamav-milter.c:4581
858
+#: clamav-milter.c:4637
850 859
 msgid "Stopping clamav-milter"
851 860
 msgstr ""
852 861
 
853
-#: clamav-milter.c:4682
862
+#: clamav-milter.c:4738
854 863
 #, c-format
855 864
 msgid "ClamAV: Protecting against %d viruses"
856 865
 msgstr ""
857 866
 
858
-#: clamav-milter.c:4685
867
+#: clamav-milter.c:4741
859 868
 #, c-format
860 869
 msgid "Loaded %s\n"
861 870
 msgstr ""