Browse code

Added SESSION Code

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

Nigel Horne authored on 2004/09/12 23:28:07
Showing 4 changed files
... ...
@@ -1,3 +1,11 @@
1
+Sun Sep 12 15:25:12 BST 2004 (njh)
2
+----------------------------------
3
+  * clamav-milter:	Use .../share/clamav/clamav-milter/locale for the locale
4
+				information
5
+			Added first draft of SESSION code. Do NOT use in a
6
+				production environment. It is disabled by
7
+				default.
8
+
1 9
 Wed Sep  8 21:47:09 BST 2004 (njh)
2 10
 ----------------------------------
3 11
   * contrib/init/RedHat:	Start clamav before sendmail and shut it down
... ...
@@ -486,6 +486,10 @@ Changes
486 486
 		Added i18n support
487 487
 		Better error message if the quarantine directory is publically
488 488
 			accessable
489
+0.75o	12/9/04	Use .../share/clamav/clamav-milter/locale for the locale
490
+			information
491
+		Added first draft of SESSION code. Do NOT use in a production
492
+			environment.
489 493
 
490 494
 INTERNATIONALISATION
491 495
 
... ...
@@ -26,6 +26,9 @@
26 26
  *
27 27
  * Change History:
28 28
  * $Log: clamav-milter.c,v $
29
+ * Revision 1.123  2004/09/12 14:23:47  nigelhorne
30
+ * Added SESSION Code
31
+ *
29 32
  * Revision 1.122  2004/09/08 16:03:36  nigelhorne
30 33
  * i18n
31 34
  *
... ...
@@ -377,9 +380,9 @@
377 377
  * Revision 1.6  2003/09/28 16:37:23  nigelhorne
378 378
  * Added -f flag use MaxThreads if --max-children not set
379 379
  */
380
-static	char	const	rcsid[] = "$Id: clamav-milter.c,v 1.122 2004/09/08 16:03:36 nigelhorne Exp $";
380
+static	char	const	rcsid[] = "$Id: clamav-milter.c,v 1.123 2004/09/12 14:23:47 nigelhorne Exp $";
381 381
 
382
-#define	CM_VERSION	"0.75n"
382
+#define	CM_VERSION	"0.75o"
383 383
 
384 384
 /*#define	CONFDIR	"/usr/local/etc"*/
385 385
 
... ...
@@ -462,6 +465,12 @@ int	deny_severity = LOG_NOTICE;
462 462
 typedef	unsigned short	in_port_t;
463 463
 #endif
464 464
 
465
+/* Do not define SESSION - it puts clamd/acceptloop_th() into a loop */
466
+/*#define	SESSION	/*
467
+		 * Keep one command connection open to clamd, otherwise a new
468
+		 * command connection is created for each new email
469
+		 */
470
+
465 471
 /*
466 472
  * TODO: optional: xmessage on console when virus stopped (SNMP would be real nice!)
467 473
  *	Having said that, with LogSysLog you can (on Linux) configure the system
... ...
@@ -519,10 +528,12 @@ struct	privdata {
519 519
 	char	*from;	/* Who sent the message */
520 520
 	char	**to;	/* Who is the message going to */
521 521
 	int	numTo;	/* Number of people the message is going to */
522
+#ifndef	SESSION
522 523
 	int	cmdSocket;	/*
523 524
 				 * Socket to send/get commands e.g. PORT for
524 525
 				 * dataSocket
525 526
 				 */
527
+#endif
526 528
 	int	dataSocket;	/* Socket to send data to clamd */
527 529
 	char	*filename;	/* Where to store the message in quarantine */
528 530
 	u_char	*body;		/* body of the message if Sflag is set */
... ...
@@ -664,9 +675,14 @@ static	struct	cfgstruct	*copt;
664 664
 static	const	char	*localSocket;	/* milter->clamd comms */
665 665
 static	in_port_t	tcpSocket;	/* milter->clamd comms */
666 666
 static	char	*port = NULL;	/* sendmail->milter comms */
667
+
667 668
 static	const	char	*serverHostNames = "127.0.0.1";
668 669
 static	long	*serverIPs;	/* IPv4 only */
669
-static	int	numServers;	/* numer of elements in serverIPs */
670
+#ifdef	SESSION
671
+static	int	*cmdSockets;
672
+#endif	/*SESSION*/
673
+static	int	numServers;	/* number of elements in serverIPs/cmdSockets */
674
+
670 675
 static	const	char	*postmaster = "postmaster";
671 676
 static	const	char	*from = "MAILER-DAEMON";
672 677
 
... ...
@@ -726,6 +742,7 @@ int
726 726
 main(int argc, char **argv)
727 727
 {
728 728
 	extern char *optarg;
729
+	int i;
729 730
 	const char *cfgfile = CL_DEFAULT_CFG;
730 731
 	struct cfgstruct *cpt;
731 732
 	struct passwd *user;
... ...
@@ -763,7 +780,7 @@ main(int argc, char **argv)
763 763
 
764 764
 #ifdef	C_LINUX
765 765
 	setlocale(LC_ALL, "");
766
-	bindtextdomain("clamav-milter", "locale");
766
+	bindtextdomain("clamav-milter", DATADIR"/clamav-milter/locale");
767 767
 	textdomain("clamav-milter");
768 768
 #endif
769 769
 
... ...
@@ -1143,7 +1160,7 @@ main(int argc, char **argv)
1143 1143
 		serverIPs = (long *)cli_malloc(sizeof(long));
1144 1144
 		serverIPs[0] = inet_addr("127.0.0.1");
1145 1145
 	} else if((cpt = cfgopt(copt, "TCPSocket")) != NULL) {
1146
-		int i, activeServers;
1146
+		int activeServers;
1147 1147
 
1148 1148
 		/*
1149 1149
 		 * TCPSocket is in fact a port number not a full socket
... ...
@@ -1210,6 +1227,73 @@ main(int argc, char **argv)
1210 1210
 		return EX_CONFIG;
1211 1211
 	}
1212 1212
 
1213
+#ifdef	SESSION
1214
+	if(localSocket) {
1215
+		struct sockaddr_un server;
1216
+
1217
+		memset((char *)&server, 0, sizeof(struct sockaddr_un));
1218
+		server.sun_family = AF_UNIX;
1219
+		strncpy(server.sun_path, localSocket, sizeof(server.sun_path));
1220
+
1221
+		cmdSockets = (int *)cli_malloc(sizeof(int));
1222
+		if((cmdSockets[0] = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) {
1223
+			perror(localSocket);
1224
+			return EX_UNAVAILABLE;
1225
+		}
1226
+		if(connect(cmdSockets[0], (struct sockaddr *)&server, sizeof(struct sockaddr_un)) < 0) {
1227
+			perror(localSocket);
1228
+			return EX_UNAVAILABLE;
1229
+		}
1230
+		if(send(cmdSockets[0], "SESSION\n", 7, 0) < 7) {
1231
+			perror("send");
1232
+			if(use_syslog)
1233
+				syslog(LOG_ERR, _("Can't create a clamd session"));
1234
+			return EX_UNAVAILABLE;
1235
+		}
1236
+	} else {
1237
+		/*
1238
+		 * FIXME: Sessions code doesn't allow more than one datastream
1239
+		 * at a time to a server
1240
+		 */
1241
+		if(max_children > numServers) {
1242
+			fprintf(stderr, _("%s: Sessions does not multiplex\n"), argv[0]);
1243
+			return EX_CONFIG;
1244
+		}
1245
+
1246
+		cmdSockets = (int *)cli_malloc(numServers * sizeof(int));
1247
+
1248
+		assert(serverIPs != NULL);
1249
+
1250
+		for(i = 0; i < numServers; i++) {
1251
+			struct sockaddr_in server;
1252
+
1253
+			memset((char *)&server, 0, sizeof(struct sockaddr_in));
1254
+			server.sin_family = AF_INET;
1255
+			server.sin_port = (in_port_t)htons(tcpSocket);
1256
+
1257
+			server.sin_addr.s_addr = serverIPs[i];
1258
+
1259
+			if((cmdSockets[i] = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
1260
+				perror("socket");
1261
+				return EX_UNAVAILABLE;
1262
+			}
1263
+			if(connect(cmdSockets[i], (struct sockaddr *)&server, sizeof(struct sockaddr_in)) < 0) {
1264
+				perror("connect");
1265
+				return EX_UNAVAILABLE;
1266
+			}
1267
+			if(send(cmdSockets[i], "SESSION\n", 7, 0) < 7) {
1268
+				char *hostname = cli_strtok(serverHostNames, i, ":");
1269
+				perror("send");
1270
+				cli_warnmsg(_("Check clamd server %s - it may be down\n"), hostname);
1271
+				free(hostname);
1272
+
1273
+				close(cmdSockets[i]);
1274
+				cmdSockets[i] = -1;
1275
+			}
1276
+		}
1277
+	}
1278
+#endif
1279
+
1213 1280
 	if(!cfgopt(copt, "Foreground")) {
1214 1281
 #ifdef	CL_DEBUG
1215 1282
 		printf(_("When debugging it is recommended that you use Foreground mode in %s\n"), cfgfile);
... ...
@@ -1349,7 +1433,7 @@ pingServer(int serverNumber)
1349 1349
 		strncpy(server.sun_path, localSocket, sizeof(server.sun_path));
1350 1350
 
1351 1351
 		if((sock = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) {
1352
-			perror("socket");
1352
+			perror(localSocket);
1353 1353
 			return 0;
1354 1354
 		}
1355 1355
 		checkClamd();
... ...
@@ -1424,7 +1508,7 @@ pingServer(int serverNumber)
1424 1424
 	 *	are out of date (say more than a month old)
1425 1425
 	 */
1426 1426
 	snprintf(clamav_version, sizeof(clamav_version),
1427
-		"%s, clamav-milter version %s",
1427
+		"%s\n\tclamav-milter version %s",
1428 1428
 		buf, CM_VERSION);
1429 1429
 
1430 1430
 	return 1;
... ...
@@ -1473,6 +1557,16 @@ findServer(void)
1473 1473
 	for(i = 0, server = servers; i < numServers; i++, server++) {
1474 1474
 		int sock;
1475 1475
 
1476
+#ifdef	SESSION
1477
+		/*
1478
+		 * FIXME: Sessions code isn't flexible at handling servers
1479
+		 *	appearing and disappearing
1480
+		 * FIXME: ensure we don't try scanning with a server that's
1481
+		 *	already scanning
1482
+		 */
1483
+		if(cmdSockets[i] == -1)
1484
+			continue;
1485
+#endif
1476 1486
 		server->sin_family = AF_INET;
1477 1487
 		server->sin_port = (in_port_t)htons(tcpSocket);
1478 1488
 		server->sin_addr.s_addr = serverIPs[(i + j) % numServers];
... ...
@@ -1821,7 +1915,9 @@ clamfi_envfrom(SMFICTX *ctx, char **argv)
1821 1821
 		return cl_error;
1822 1822
 
1823 1823
 	privdata->dataSocket = -1;	/* 0.4 */
1824
+#ifndef	SESSION
1824 1825
 	privdata->cmdSocket = -1;	/* 0.4 */
1826
+#endif
1825 1827
 
1826 1828
 	/*
1827 1829
 	 * Rejection is via 550 until DATA is received. We know that
... ...
@@ -2060,8 +2156,10 @@ clamfi_eom(SMFICTX *ctx)
2060 2060
 #ifdef	CL_DEBUG
2061 2061
 	cli_dbgmsg("clamfi_eom\n");
2062 2062
 	assert(privdata != NULL);
2063
+#ifndef	SESSION
2063 2064
 	assert((privdata->cmdSocket >= 0) || (privdata->filename != NULL));
2064 2065
 	assert(!((privdata->cmdSocket >= 0) && (privdata->filename != NULL)));
2066
+#endif
2065 2067
 	assert(privdata->dataSocket >= 0);
2066 2068
 #endif
2067 2069
 
... ...
@@ -2082,6 +2180,19 @@ clamfi_eom(SMFICTX *ctx)
2082 2082
 		server.sun_family = AF_UNIX;
2083 2083
 		strncpy(server.sun_path, localSocket, sizeof(server.sun_path));
2084 2084
 
2085
+		snprintf(cmdbuf, sizeof(cmdbuf) - 1, "SCAN %s", privdata->filename);
2086
+
2087
+		nbytes = (int)strlen(cmdbuf);
2088
+
2089
+#ifdef	SESSION
2090
+		if(send(cmdSockets[0], cmdbuf, nbytes, 0) < nbytes) {
2091
+			perror("send");
2092
+			clamfi_cleanup(ctx);
2093
+			if(use_syslog)
2094
+				syslog(LOG_ERR, _("send failed to clamd"));
2095
+			return cl_error;
2096
+		}
2097
+#else
2085 2098
 		if((privdata->cmdSocket = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) {
2086 2099
 			perror("socket");
2087 2100
 			clamfi_cleanup(ctx);
... ...
@@ -2092,11 +2203,6 @@ clamfi_eom(SMFICTX *ctx)
2092 2092
 			clamfi_cleanup(ctx);
2093 2093
 			return cl_error;
2094 2094
 		}
2095
-
2096
-		snprintf(cmdbuf, sizeof(cmdbuf) - 1, "SCAN %s", privdata->filename);
2097
-
2098
-		nbytes = (int)strlen(cmdbuf);
2099
-
2100 2095
 		if(send(privdata->cmdSocket, cmdbuf, nbytes, 0) < nbytes) {
2101 2096
 			perror("send");
2102 2097
 			clamfi_cleanup(ctx);
... ...
@@ -2106,9 +2212,14 @@ clamfi_eom(SMFICTX *ctx)
2106 2106
 		}
2107 2107
 
2108 2108
 		shutdown(privdata->cmdSocket, SHUT_WR);
2109
+#endif
2109 2110
 	}
2110 2111
 
2112
+#ifdef	SESSION
2113
+	if(clamd_recv(cmdSockets[privdata->serverNumber], mess, sizeof(mess)) > 0) {
2114
+#else
2111 2115
 	if(clamd_recv(privdata->cmdSocket, mess, sizeof(mess)) > 0) {
2116
+#endif
2112 2117
 		if((ptr = strchr(mess, '\n')) != NULL)
2113 2118
 			*ptr = '\0';
2114 2119
 
... ...
@@ -2129,8 +2240,10 @@ clamfi_eom(SMFICTX *ctx)
2129 2129
 		return cl_error;
2130 2130
 	}
2131 2131
 
2132
+#ifndef	SESSION
2132 2133
 	close(privdata->cmdSocket);
2133 2134
 	privdata->cmdSocket = -1;
2135
+#endif
2134 2136
 
2135 2137
 	sendmailId = smfi_getsymval(ctx, "i");
2136 2138
 	if(sendmailId == NULL)
... ...
@@ -2579,17 +2692,30 @@ clamfi_free(struct privdata *privdata)
2579 2579
 			privdata->to = NULL;
2580 2580
 		}
2581 2581
 
2582
+#ifdef	SESSION
2583
+		if(readTimeout && (cmdSockets[privdata->serverNumber] >= 0)) for(;;) {
2584
+			char buf[64];
2585
+
2586
+			cli_dbgmsg("clamfi_free: Flush cmd server %d (fd %d)\n",
2587
+				privdata->serverNumber, cmdSockets[privdata->serverNumber]);
2588
+
2589
+			while(clamd_recv(cmdSockets[privdata->serverNumber], buf, sizeof(buf)) > 0)
2590
+				puts(buf);
2591
+		}
2592
+#else
2582 2593
 		if(privdata->cmdSocket >= 0) {
2583 2594
 			char buf[64];
2584 2595
 
2585 2596
 			/*
2586 2597
 			 * Flush the remote end so that clamd doesn't get a SIGPIPE
2587 2598
 			 */
2588
-			while(clamd_recv(privdata->cmdSocket, buf, sizeof(buf)) > 0)
2589
-				;
2599
+			if(readTimeout)
2600
+				while(clamd_recv(privdata->cmdSocket, buf, sizeof(buf)) > 0)
2601
+					;
2590 2602
 			close(privdata->cmdSocket);
2591 2603
 			privdata->cmdSocket = -1;
2592 2604
 		}
2605
+#endif
2593 2606
 		if(privdata->headers)
2594 2607
 			header_list_free(privdata->headers);
2595 2608
 
... ...
@@ -2744,6 +2870,8 @@ clamd_recv(int sock, char *buf, size_t len)
2744 2744
 	fd_set rfds;
2745 2745
 	struct timeval tv;
2746 2746
 
2747
+	assert(sock >= 0);
2748
+
2747 2749
 	if(readTimeout == 0)
2748 2750
 		return recv(sock, buf, len, 0);
2749 2751
 
... ...
@@ -2953,20 +3081,23 @@ connect2clamd(struct privdata *privdata)
2953 2953
 				syslog(LOG_ERR, _("Temporary quarantine file %s creation failed"), privdata->filename);
2954 2954
 			return 0;
2955 2955
 		}
2956
-		privdata->serverNumber = -1;
2956
+		privdata->serverNumber = 0;
2957 2957
 	} else {
2958 2958
 		int freeServer, nbytes;
2959 2959
 		struct sockaddr_in reply;
2960 2960
 		unsigned short p;
2961 2961
 		char buf[64];
2962 2962
 
2963
+#ifndef	SESSION
2963 2964
 		assert(privdata->cmdSocket == -1);
2965
+#endif
2964 2966
 
2965 2967
 		/*
2966 2968
 		 * Create socket to talk to clamd. It will tell us the port to
2967 2969
 		 * use to send the data. That will require another socket.
2968 2970
 		 */
2969 2971
 		if(localSocket) {
2972
+#ifndef	SESSION
2970 2973
 			struct sockaddr_un server;
2971 2974
 
2972 2975
 			memset((char *)&server, 0, sizeof(struct sockaddr_un));
... ...
@@ -2981,9 +3112,15 @@ connect2clamd(struct privdata *privdata)
2981 2981
 				perror(localSocket);
2982 2982
 				return 0;
2983 2983
 			}
2984
+			privdata->serverNumber = 0;
2985
+#endif
2984 2986
 			freeServer = 0;
2985
-			privdata->serverNumber = -1;
2986 2987
 		} else {
2988
+#ifdef	SESSION
2989
+			freeServer = findServer();
2990
+			if(freeServer < 0)
2991
+				return 0;
2992
+#else
2987 2993
 			struct sockaddr_in server;
2988 2994
 
2989 2995
 			memset((char *)&server, 0, sizeof(struct sockaddr_in));
... ...
@@ -3006,31 +3143,46 @@ connect2clamd(struct privdata *privdata)
3006 3006
 				perror("connect");
3007 3007
 				return 0;
3008 3008
 			}
3009
+#endif
3009 3010
 			privdata->serverNumber = freeServer;
3010 3011
 		}
3011 3012
 
3012
-		/*
3013
-		 * Create socket that we'll use to send the data to clamd
3014
-		 */
3015
-		if((privdata->dataSocket = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
3016
-			perror("socket");
3013
+#ifdef	SESSION
3014
+		if(send(cmdSockets[freeServer], "STREAM\n", 7, 0) < 7) {
3015
+			cli_dbgmsg("Sending stream to server %d (fd %d)\n",
3016
+				freeServer, cmdSockets[freeServer]);
3017
+			perror("send");
3017 3018
 			if(use_syslog)
3018
-				syslog(LOG_ERR, _("failed to create socket"));
3019
+				syslog(LOG_ERR, _("send failed to clamd"));
3019 3020
 			return 0;
3020 3021
 		}
3021
-
3022
-		shutdown(privdata->dataSocket, SHUT_RD);
3023
-
3022
+#else
3024 3023
 		if(send(privdata->cmdSocket, "STREAM\n", 7, 0) < 7) {
3025 3024
 			perror("send");
3026 3025
 			if(use_syslog)
3027 3026
 				syslog(LOG_ERR, _("send failed to clamd"));
3028 3027
 			return 0;
3029 3028
 		}
3030
-
3031 3029
 		shutdown(privdata->cmdSocket, SHUT_WR);
3030
+#endif
3031
+
3032
+		/*
3033
+		 * Create socket that we'll use to send the data to clamd
3034
+		 */
3035
+		if((privdata->dataSocket = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
3036
+			perror("socket");
3037
+			if(use_syslog)
3038
+				syslog(LOG_ERR, _("failed to create TCPSocket to talk to clamd"));
3039
+			return 0;
3040
+		}
3032 3041
 
3042
+		shutdown(privdata->dataSocket, SHUT_RD);
3043
+
3044
+#ifdef	SESSION
3045
+		nbytes = clamd_recv(cmdSockets[privdata->serverNumber], buf, sizeof(buf));
3046
+#else
3033 3047
 		nbytes = clamd_recv(privdata->cmdSocket, buf, sizeof(buf));
3048
+#endif
3034 3049
 		if(nbytes < 0) {
3035 3050
 			perror("recv");
3036 3051
 			if(use_syslog)
... ...
@@ -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-09-08 17:03+0100\n"
11
+"POT-Creation-Date: 2004-09-12 15:11+0100\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,537 +16,547 @@ msgstr ""
16 16
 "Content-Type: text/plain; charset=CHARSET\n"
17 17
 "Content-Transfer-Encoding: 8bit\n"
18 18
 
19
-#: clamav-milter.c:688
19
+#: clamav-milter.c:704
20 20
 msgid "\t--advisory\t\t-A\tFlag viruses rather than deleting them."
21 21
 msgstr ""
22 22
 
23
-#: clamav-milter.c:689
23
+#: clamav-milter.c:705
24 24
 msgid "\t--bounce\t\t-b\tSend a failure message to the sender."
25 25
 msgstr ""
26 26
 
27
-#: clamav-milter.c:690
27
+#: clamav-milter.c:706
28 28
 msgid "\t--config-file=FILE\t-c FILE\tRead configuration from FILE."
29 29
 msgstr ""
30 30
 
31
-#: clamav-milter.c:691
31
+#: clamav-milter.c:707
32 32
 msgid "\t--debug\t\t\t-D\tPrint debug messages."
33 33
 msgstr ""
34 34
 
35
-#: clamav-milter.c:692
35
+#: clamav-milter.c:708
36 36
 msgid ""
37 37
 "\t--dont-log-clean\t-C\tDon't add an entry to syslog that a mail is clean."
38 38
 msgstr ""
39 39
 
40
-#: clamav-milter.c:693
40
+#: clamav-milter.c:709
41 41
 msgid ""
42 42
 "\t--dont-scan-on-error\t-d\tPass e-mails through unscanned if a system error "
43 43
 "occurs."
44 44
 msgstr ""
45 45
 
46
-#: clamav-milter.c:694
46
+#: clamav-milter.c:710
47 47
 msgid "\t--dont-wait\t\t\tAsk remote end to resend if max-children exceeded."
48 48
 msgstr ""
49 49
 
50
-#: clamav-milter.c:695
50
+#: clamav-milter.c:711
51 51
 msgid "\t--from=EMAIL\t\t-a EMAIL\tError messages come from here."
52 52
 msgstr ""
53 53
 
54
-#: clamav-milter.c:696
54
+#: clamav-milter.c:712
55 55
 msgid "\t--force-scan\t\t-f\tForce scan all messages (overrides (-o and -l)."
56 56
 msgstr ""
57 57
 
58
-#: clamav-milter.c:697
58
+#: clamav-milter.c:713
59 59
 msgid "\t--help\t\t\t-h\tThis message."
60 60
 msgstr ""
61 61
 
62
-#: clamav-milter.c:698
62
+#: clamav-milter.c:714
63 63
 msgid "\t--headers\t\t-H\tInclude original message headers in the report."
64 64
 msgstr ""
65 65
 
66
-#: clamav-milter.c:699
66
+#: clamav-milter.c:715
67 67
 msgid "\t--local\t\t\t-l\tScan messages sent from machines on our LAN."
68 68
 msgstr ""
69 69
 
70
-#: clamav-milter.c:700
70
+#: clamav-milter.c:716
71 71
 msgid "\t--outgoing\t\t-o\tScan outgoing messages from this machine."
72 72
 msgstr ""
73 73
 
74
-#: clamav-milter.c:701
74
+#: clamav-milter.c:717
75 75
 msgid "\t--noreject\t\t-N\tDon't reject viruses, silently throw them away."
76 76
 msgstr ""
77 77
 
78
-#: clamav-milter.c:702
78
+#: clamav-milter.c:718
79 79
 msgid "\t--noxheader\t\t-n\tSuppress X-Virus-Scanned/X-Virus-Status headers."
80 80
 msgstr ""
81 81
 
82
-#: clamav-milter.c:703
82
+#: clamav-milter.c:719
83 83
 msgid "\t--pidfile=FILE\t\t-i FILE\tLocation of pidfile."
84 84
 msgstr ""
85 85
 
86
-#: clamav-milter.c:704
86
+#: clamav-milter.c:720
87 87
 msgid "\t--postmaster\t\t-p EMAIL\tPostmaster address [default=postmaster]."
88 88
 msgstr ""
89 89
 
90
-#: clamav-milter.c:705
90
+#: clamav-milter.c:721
91 91
 msgid "\t--postmaster-only\t-P\tSend warnings only to the postmaster."
92 92
 msgstr ""
93 93
 
94
-#: clamav-milter.c:706
94
+#: clamav-milter.c:722
95 95
 msgid "\t--quiet\t\t\t-q\tDon't send e-mail notifications of interceptions."
96 96
 msgstr ""
97 97
 
98
-#: clamav-milter.c:707
98
+#: clamav-milter.c:723
99 99
 msgid "\t--quarantine=USER\t-Q EMAIL\tQuanrantine e-mail account."
100 100
 msgstr ""
101 101
 
102
-#: clamav-milter.c:708
102
+#: clamav-milter.c:724
103 103
 msgid "\t--quarantine-dir=DIR\t-U DIR\tDirectory to store infected emails."
104 104
 msgstr ""
105 105
 
106
-#: clamav-milter.c:709
106
+#: clamav-milter.c:725
107 107
 msgid ""
108 108
 "\t--server=SERVER\t\t-s SERVER\tHostname/IP address of server(s) running "
109 109
 "clamd (when using TCPsocket)."
110 110
 msgstr ""
111 111
 
112
-#: clamav-milter.c:710
112
+#: clamav-milter.c:726
113 113
 msgid "\t--sign\t\t\t-S\tAdd a hard-coded signature to each scanned message."
114 114
 msgstr ""
115 115
 
116
-#: clamav-milter.c:711
116
+#: clamav-milter.c:727
117 117
 msgid "\t--signature-file=FILE\t-F FILE\tLocation of signature file."
118 118
 msgstr ""
119 119
 
120
-#: clamav-milter.c:712
120
+#: clamav-milter.c:728
121 121
 msgid "\t--template-file=FILE\t-t FILE\tLocation of e-mail template file."
122 122
 msgstr ""
123 123
 
124
-#: clamav-milter.c:713
124
+#: clamav-milter.c:729
125 125
 msgid "\t--timeout=SECS\t\t-T SECS\tTimeout waiting to childen to die."
126 126
 msgstr ""
127 127
 
128
-#: clamav-milter.c:714
128
+#: clamav-milter.c:730
129 129
 msgid "\t--version\t\t-V\tPrint the version number of this software."
130 130
 msgstr ""
131 131
 
132
-#: clamav-milter.c:716
132
+#: clamav-milter.c:732
133 133
 msgid "\t--debug-level=n\t\t-x n\tSets the debug level to 'n'."
134 134
 msgstr ""
135 135
 
136
-#: clamav-milter.c:718
136
+#: clamav-milter.c:734
137 137
 msgid ""
138 138
 "\n"
139 139
 "For more information type \"man clamav-milter\"."
140 140
 msgstr ""
141 141
 
142
-#: clamav-milter.c:719
142
+#: clamav-milter.c:735
143 143
 msgid "Report bugs to bugs@clamav.net."
144 144
 msgstr ""
145 145
 
146
-#: clamav-milter.c:983
146
+#: clamav-milter.c:1000
147 147
 #, c-format
148 148
 msgid "%s: No socket-addr given\n"
149 149
 msgstr ""
150 150
 
151
-#: clamav-milter.c:992
151
+#: clamav-milter.c:1009
152 152
 #, c-format
153 153
 msgid "%s: Can't parse the config file %s\n"
154 154
 msgstr ""
155 155
 
156
-#: clamav-milter.c:1003
156
+#: clamav-milter.c:1020
157 157
 #, c-format
158 158
 msgid "%s: Can't get information about user %s\n"
159 159
 msgstr ""
160 160
 
161
-#: clamav-milter.c:1014
161
+#: clamav-milter.c:1031
162 162
 #, c-format
163 163
 msgid "%s: AllowSupplementaryGroups: initgroups not supported.\n"
164 164
 msgstr ""
165 165
 
166
-#: clamav-milter.c:1031
166
+#: clamav-milter.c:1048
167 167
 #, c-format
168 168
 msgid "Running as user %s (UID %d, GID %d)\n"
169 169
 msgstr ""
170 170
 
171
-#: clamav-milter.c:1034
171
+#: clamav-milter.c:1051
172 172
 #, c-format
173 173
 msgid ""
174 174
 "%s: running as root is not recommended (check \"User\" in clamav.conf)\n"
175 175
 msgstr ""
176 176
 
177
-#: clamav-milter.c:1037
177
+#: clamav-milter.c:1054
178 178
 #, c-format
179 179
 msgid "%s: Advisory mode doesn't work with quarantine mode\n"
180 180
 msgstr ""
181 181
 
182
-#: clamav-milter.c:1044
182
+#: clamav-milter.c:1061
183 183
 #, c-format
184 184
 msgid "%s: Advisory mode doesn't work with quarantine directories\n"
185 185
 msgstr ""
186 186
 
187
-#: clamav-milter.c:1060
187
+#: clamav-milter.c:1077
188 188
 #, c-format
189 189
 msgid "%s: insecure quarantine directory %s (mode 0%o)\n"
190 190
 msgstr ""
191 191
 
192
-#: clamav-milter.c:1075
192
+#: clamav-milter.c:1092
193 193
 #, c-format
194 194
 msgid "%s: StreamSavetoDisk not enabled in %s\n"
195 195
 msgstr ""
196 196
 
197
-#: clamav-milter.c:1085
197
+#: clamav-milter.c:1102
198 198
 #, c-format
199 199
 msgid "%s: ScanMail not enabled in %s\n"
200 200
 msgstr ""
201 201
 
202
-#: clamav-milter.c:1102
202
+#: clamav-milter.c:1119
203 203
 #, c-format
204 204
 msgid "%s: ReadTimeout must not be negative in %s\n"
205 205
 msgstr ""
206 206
 
207
-#: clamav-milter.c:1109
207
+#: clamav-milter.c:1126
208 208
 #, c-format
209 209
 msgid "%s: StreamMaxLength must not be negative in %s\n"
210 210
 msgstr ""
211 211
 
212
-#: clamav-milter.c:1120
212
+#: clamav-milter.c:1137
213 213
 #, c-format
214 214
 msgid "%s: You can select one server type only (local/TCP) in %s\n"
215 215
 msgstr ""
216 216
 
217
-#: clamav-milter.c:1129
217
+#: clamav-milter.c:1146
218 218
 #, c-format
219 219
 msgid "Can't talk to clamd server via %s\n"
220 220
 msgstr ""
221 221
 
222
-#: clamav-milter.c:1131
222
+#: clamav-milter.c:1148
223 223
 #, c-format
224 224
 msgid "Check your entry for LocalSocket in %s\n"
225 225
 msgstr ""
226 226
 
227
-#: clamav-milter.c:1149
227
+#: clamav-milter.c:1166
228 228
 #, c-format
229 229
 msgid ""
230 230
 "%s: --quarantine-dir not supported for remote scanning - use --quarantine\n"
231 231
 msgstr ""
232 232
 
233
-#: clamav-milter.c:1182
233
+#: clamav-milter.c:1199
234 234
 #, c-format
235 235
 msgid "%s: Unknown host %s\n"
236 236
 msgstr ""
237 237
 
238
-#: clamav-milter.c:1193
238
+#: clamav-milter.c:1210
239 239
 #, c-format
240 240
 msgid "Can't talk to clamd server %s on port %d\n"
241 241
 msgstr ""
242 242
 
243
-#: clamav-milter.c:1199
243
+#: clamav-milter.c:1216
244 244
 msgid "Can't find any clamd servers\n"
245 245
 msgstr ""
246 246
 
247
-#: clamav-milter.c:1200
247
+#: clamav-milter.c:1217
248 248
 #, c-format
249 249
 msgid "Check your entry for TCPSocket in %s\n"
250 250
 msgstr ""
251 251
 
252
-#: clamav-milter.c:1205
252
+#: clamav-milter.c:1222
253 253
 #, c-format
254 254
 msgid "%s: You must select server type (local/TCP) in %s\n"
255 255
 msgstr ""
256 256
 
257
-#: clamav-milter.c:1212
257
+#: clamav-milter.c:1247
258
+msgid "Can't create a clamd session"
259
+msgstr ""
260
+
261
+#: clamav-milter.c:1256
262
+#, c-format
263
+msgid "%s: Sessions does not multiplex\n"
264
+msgstr ""
265
+
266
+#: clamav-milter.c:1284 clamav-milter.c:1589
267
+#, c-format
268
+msgid "Check clamd server %s - it may be down\n"
269
+msgstr ""
270
+
271
+#: clamav-milter.c:1296
258 272
 #, c-format
259 273
 msgid "When debugging it is recommended that you use Foreground mode in %s\n"
260 274
 msgstr ""
261 275
 
262
-#: clamav-milter.c:1213
276
+#: clamav-milter.c:1297
263 277
 msgid "So that you can see all of the messages"
264 278
 msgstr ""
265 279
 
266
-#: clamav-milter.c:1259
280
+#: clamav-milter.c:1343
267 281
 #, c-format
268 282
 msgid "Starting: %s"
269 283
 msgstr ""
270 284
 
271
-#: clamav-milter.c:1264
285
+#: clamav-milter.c:1348
272 286
 msgid "Debugging is on"
273 287
 msgstr ""
274 288
 
275
-#: clamav-milter.c:1268
289
+#: clamav-milter.c:1352
276 290
 #, c-format
277 291
 msgid ""
278 292
 "%s: (-q && !LogSyslog): warning - all interception message methods are off\n"
279 293
 msgstr ""
280 294
 
281
-#: clamav-milter.c:1280
295
+#: clamav-milter.c:1364
282 296
 #, c-format
283 297
 msgid "Can't save PID in file %s"
284 298
 msgstr ""
285 299
 
286
-#: clamav-milter.c:1282
300
+#: clamav-milter.c:1366
287 301
 #, c-format
288 302
 msgid "Can't save PID in file %s\n"
289 303
 msgstr ""
290 304
 
291
-#: clamav-milter.c:1310
305
+#: clamav-milter.c:1394
292 306
 #, c-format
293 307
 msgid "%s: smfi_setconn failed\n"
294 308
 msgstr ""
295 309
 
296
-#: clamav-milter.c:1323
310
+#: clamav-milter.c:1407
297 311
 #, c-format
298 312
 msgid "Started: %s"
299 313
 msgstr ""
300 314
 
301
-#: clamav-milter.c:1495
302
-#, c-format
303
-msgid "Check clamd server %s - it may be down\n"
304
-msgstr ""
305
-
306
-#: clamav-milter.c:1498
315
+#: clamav-milter.c:1592
307 316
 #, c-format
308 317
 msgid "Check clamd server %s - it may be down"
309 318
 msgstr ""
310 319
 
311
-#: clamav-milter.c:1542 clamav-milter.c:1599
320
+#: clamav-milter.c:1636 clamav-milter.c:1693
312 321
 msgid "findServer: No response from any server\n"
313 322
 msgstr ""
314 323
 
315
-#: clamav-milter.c:1544 clamav-milter.c:1601
324
+#: clamav-milter.c:1638 clamav-milter.c:1695
316 325
 msgid "findServer: No response from any server"
317 326
 msgstr ""
318 327
 
319
-#: clamav-milter.c:1562
328
+#: clamav-milter.c:1656
320 329
 msgid "Subject: ClamAV Down\n"
321 330
 msgstr ""
322 331
 
323
-#: clamav-milter.c:1565
332
+#: clamav-milter.c:1659
324 333
 msgid ""
325 334
 "This is an automatic message\n"
326 335
 "\n"
327 336
 msgstr ""
328 337
 
329
-#: clamav-milter.c:1568
338
+#: clamav-milter.c:1662
330 339
 msgid "The clamd program cannot be contacted.\n"
331 340
 msgstr ""
332 341
 
333
-#: clamav-milter.c:1570
342
+#: clamav-milter.c:1664
334 343
 msgid "No clamd server can be contacted.\n"
335 344
 msgstr ""
336 345
 
337
-#: clamav-milter.c:1572
346
+#: clamav-milter.c:1666
338 347
 msgid "Emails may not be being scanned, please check your servers.\n"
339 348
 msgstr ""
340 349
 
341
-#: clamav-milter.c:1585
350
+#: clamav-milter.c:1679
342 351
 msgid "findServer: select failed"
343 352
 msgstr ""
344 353
 
345
-#: clamav-milter.c:1594
354
+#: clamav-milter.c:1688
346 355
 #, c-format
347 356
 msgid "findServer: using server %d\n"
348 357
 msgstr ""
349 358
 
350
-#: clamav-milter.c:1618
359
+#: clamav-milter.c:1712
351 360
 msgid "clamfi_connect: ctx is null"
352 361
 msgstr ""
353 362
 
354
-#: clamav-milter.c:1623
363
+#: clamav-milter.c:1717
355 364
 msgid "clamfi_connect: hostname is null"
356 365
 msgstr ""
357 366
 
358
-#: clamav-milter.c:1644
367
+#: clamav-milter.c:1738
359 368
 msgid "clamfi_connect: remoteIP is null"
360 369
 msgstr ""
361 370
 
362
-#: clamav-milter.c:1652
371
+#: clamav-milter.c:1746
363 372
 #, c-format
364 373
 msgid "clamfi_connect: connection from %s [%s]"
365 374
 msgstr ""
366 375
 
367
-#: clamav-milter.c:1653
376
+#: clamav-milter.c:1747
368 377
 #, c-format
369 378
 msgid "clamfi_connect: connection from %s [%s]\n"
370 379
 msgstr ""
371 380
 
372
-#: clamav-milter.c:1672
381
+#: clamav-milter.c:1766
373 382
 msgid "Can't get sendmail hostname"
374 383
 msgstr ""
375 384
 
376
-#: clamav-milter.c:1677
385
+#: clamav-milter.c:1771
377 386
 #, c-format
378 387
 msgid "Access Denied: Host Unknown (%s)"
379 388
 msgstr ""
380 389
 
381
-#: clamav-milter.c:1687
390
+#: clamav-milter.c:1781
382 391
 #, c-format
383 392
 msgid "Access Denied: Can't get IP address for (%s)"
384 393
 msgstr ""
385 394
 
386
-#: clamav-milter.c:1704
395
+#: clamav-milter.c:1798
387 396
 #, c-format
388 397
 msgid "Access Denied for %s[%s]"
389 398
 msgstr ""
390 399
 
391
-#: clamav-milter.c:1722
400
+#: clamav-milter.c:1816
392 401
 msgid "clamfi_connect: not scanning outgoing messages"
393 402
 msgstr ""
394 403
 
395
-#: clamav-milter.c:1723 clamav-milter.c:1732
404
+#: clamav-milter.c:1817 clamav-milter.c:1826
396 405
 msgid "clamfi_connect: not scanning outgoing messages\n"
397 406
 msgstr ""
398 407
 
399
-#: clamav-milter.c:1731
408
+#: clamav-milter.c:1825
400 409
 msgid "clamfi_connect: not scanning local messages"
401 410
 msgstr ""
402 411
 
403
-#: clamav-milter.c:1768
412
+#: clamav-milter.c:1862
404 413
 #, c-format
405 414
 msgid "hit max-children limit (%u >= %u)"
406 415
 msgstr ""
407 416
 
408
-#: clamav-milter.c:1769
417
+#: clamav-milter.c:1863
409 418
 #, c-format
410 419
 msgid "hit max-children limit (%u >= %u): waiting for some to exit"
411 420
 msgstr ""
412 421
 
413
-#: clamav-milter.c:1774
422
+#: clamav-milter.c:1868
414 423
 msgid "AV system temporarily overloaded - please try later"
415 424
 msgstr ""
416 425
 
417
-#: clamav-milter.c:1804
426
+#: clamav-milter.c:1898
418 427
 #, c-format
419 428
 msgid ">n_children = %d\n"
420 429
 msgstr ""
421 430
 
422
-#: clamav-milter.c:1810
431
+#: clamav-milter.c:1904
423 432
 msgid "Timeout waiting for a child to die"
424 433
 msgstr ""
425 434
 
426
-#: clamav-milter.c:1812
435
+#: clamav-milter.c:1906
427 436
 msgid "Timeout waiting for a child to die\n"
428 437
 msgstr ""
429 438
 
430
-#: clamav-milter.c:1929
439
+#: clamav-milter.c:2025
431 440
 msgid "clamfi_eoh"
432 441
 msgstr ""
433 442
 
434
-#: clamav-milter.c:1932
443
+#: clamav-milter.c:2028
435 444
 msgid "clamfi_eoh\n"
436 445
 msgstr ""
437 446
 
438
-#: clamav-milter.c:1989
447
+#: clamav-milter.c:2085
439 448
 msgid "clamfi_eoh: ignoring whitelisted message"
440 449
 msgstr ""
441 450
 
442
-#: clamav-milter.c:1991
451
+#: clamav-milter.c:2087
443 452
 msgid "clamfi_eoh: not scanning outgoing messages\n"
444 453
 msgstr ""
445 454
 
446
-#: clamav-milter.c:2005
455
+#: clamav-milter.c:2101
447 456
 #, c-format
448 457
 msgid "clamfi_envbody: %u bytes"
449 458
 msgstr ""
450 459
 
451
-#: clamav-milter.c:2007
460
+#: clamav-milter.c:2103
452 461
 #, c-format
453 462
 msgid "clamfi_envbody: %u bytes\n"
454 463
 msgstr ""
455 464
 
456
-#: clamav-milter.c:2017 clamav-milter.c:2186
465
+#: clamav-milter.c:2113 clamav-milter.c:2299
457 466
 #, c-format
458 467
 msgid "%s: Message more than StreamMaxLength (%ld) bytes - not scanned"
459 468
 msgstr ""
460 469
 
461
-#: clamav-milter.c:2021 clamav-milter.c:2189
470
+#: clamav-milter.c:2117 clamav-milter.c:2302
462 471
 msgid "Not Scanned - StreamMaxLength exceeded"
463 472
 msgstr ""
464 473
 
465
-#: clamav-milter.c:2101 clamav-milter.c:3024
474
+#: clamav-milter.c:2189 clamav-milter.c:2207 clamav-milter.c:3153
475
+#: clamav-milter.c:3160
466 476
 msgid "send failed to clamd"
467 477
 msgstr ""
468 478
 
469
-#: clamav-milter.c:2113
479
+#: clamav-milter.c:2224
470 480
 #, c-format
471 481
 msgid "clamfi_eom: read %s"
472 482
 msgstr ""
473 483
 
474
-#: clamav-milter.c:2114
484
+#: clamav-milter.c:2225
475 485
 #, c-format
476 486
 msgid "clamfi_eom: read %s\n"
477 487
 msgstr ""
478 488
 
479
-#: clamav-milter.c:2122
489
+#: clamav-milter.c:2233
480 490
 msgid "clamfi_eom: read nothing from clamd"
481 491
 msgstr ""
482 492
 
483
-#: clamav-milter.c:2124
493
+#: clamav-milter.c:2235
484 494
 msgid "clamfi_eom: read nothing from clamd\n"
485 495
 msgstr ""
486 496
 
487
-#: clamav-milter.c:2152 clamav-milter.c:2175
497
+#: clamav-milter.c:2265 clamav-milter.c:2288
488 498
 msgid "Error determining host"
489 499
 msgstr ""
490 500
 
491
-#: clamav-milter.c:2194
501
+#: clamav-milter.c:2307
492 502
 msgid "Not Scanned"
493 503
 msgstr ""
494 504
 
495
-#: clamav-milter.c:2205
505
+#: clamav-milter.c:2318
496 506
 msgid "Clean"
497 507
 msgstr ""
498 508
 
499
-#: clamav-milter.c:2209
509
+#: clamav-milter.c:2322
500 510
 #, c-format
501 511
 msgid "%s: clean message from %s"
502 512
 msgstr ""
503 513
 
504
-#: clamav-milter.c:2211
514
+#: clamav-milter.c:2324
505 515
 msgid "an unknown sender"
506 516
 msgstr ""
507 517
 
508
-#: clamav-milter.c:2245
518
+#: clamav-milter.c:2358
509 519
 msgid "Infected"
510 520
 msgstr ""
511 521
 
512
-#: clamav-milter.c:2263
522
+#: clamav-milter.c:2376
513 523
 #, c-format
514 524
 msgid "Intercepted virus from %s to"
515 525
 msgstr ""
516 526
 
517
-#: clamav-milter.c:2354
527
+#: clamav-milter.c:2467
518 528
 msgid ""
519 529
 "Subject: Virus intercepted\n"
520 530
 "\n"
521 531
 msgstr ""
522 532
 
523
-#: clamav-milter.c:2376
533
+#: clamav-milter.c:2489
524 534
 msgid "A message you sent to\n"
525 535
 msgstr ""
526 536
 
527
-#: clamav-milter.c:2383
537
+#: clamav-milter.c:2496
528 538
 #, c-format
529 539
 msgid "The message %1$s sent from %2$s to\n"
530 540
 msgstr ""
531 541
 
532
-#: clamav-milter.c:2386
542
+#: clamav-milter.c:2499
533 543
 #, c-format
534 544
 msgid "A message sent from %s to\n"
535 545
 msgstr ""
536 546
 
537
-#: clamav-milter.c:2391
547
+#: clamav-milter.c:2504
538 548
 #, c-format
539 549
 msgid "contained %s and has not been delivered.\n"
540 550
 msgstr ""
541 551
 
542
-#: clamav-milter.c:2395
552
+#: clamav-milter.c:2508
543 553
 #, c-format
544 554
 msgid ""
545 555
 "\n"
546 556
 "The message in question has been quarantined as %s\n"
547 557
 msgstr ""
548 558
 
549
-#: clamav-milter.c:2398
559
+#: clamav-milter.c:2511
550 560
 #, c-format
551 561
 msgid ""
552 562
 "\n"
... ...
@@ -554,13 +564,13 @@ msgid ""
554 554
 "\n"
555 555
 msgstr ""
556 556
 
557
-#: clamav-milter.c:2401
557
+#: clamav-milter.c:2514
558 558
 msgid ""
559 559
 "For your information, the original message headers were:\n"
560 560
 "\n"
561 561
 msgstr ""
562 562
 
563
-#: clamav-milter.c:2414
563
+#: clamav-milter.c:2527
564 564
 #, c-format
565 565
 msgid ""
566 566
 "\n"
... ...
@@ -568,139 +578,139 @@ msgid ""
568 568
 "%s\t\n"
569 569
 msgstr ""
570 570
 
571
-#: clamav-milter.c:2427
571
+#: clamav-milter.c:2540
572 572
 #, c-format
573 573
 msgid "Quarantined infected mail as %s"
574 574
 msgstr ""
575 575
 
576
-#: clamav-milter.c:2451
576
+#: clamav-milter.c:2564
577 577
 #, c-format
578 578
 msgid "Can't set quarantine user %s"
579 579
 msgstr ""
580 580
 
581
-#: clamav-milter.c:2453
581
+#: clamav-milter.c:2566
582 582
 #, c-format
583 583
 msgid "Can't set quarantine user %s\n"
584 584
 msgstr ""
585 585
 
586
-#: clamav-milter.c:2466
586
+#: clamav-milter.c:2579
587 587
 #, c-format
588 588
 msgid "%s detected by ClamAV - http://www.clamav.net"
589 589
 msgstr ""
590 590
 
591
-#: clamav-milter.c:2545
591
+#: clamav-milter.c:2658
592 592
 #, c-format
593 593
 msgid "Can't remove clean file %s"
594 594
 msgstr ""
595 595
 
596
-#: clamav-milter.c:2675 clamav-milter.c:2678
596
+#: clamav-milter.c:2801 clamav-milter.c:2804
597 597
 #, c-format
598 598
 msgid "write failure (%u bytes) to %s: %s"
599 599
 msgstr ""
600 600
 
601
-#: clamav-milter.c:2692 clamav-milter.c:2695
601
+#: clamav-milter.c:2818 clamav-milter.c:2821
602 602
 #, c-format
603 603
 msgid "write failure (%u bytes) to clamd: %s"
604 604
 msgstr ""
605 605
 
606
-#: clamav-milter.c:2759
606
+#: clamav-milter.c:2887
607 607
 #, c-format
608 608
 msgid "No data received from clamd in %d seconds\n"
609 609
 msgstr ""
610 610
 
611
-#: clamav-milter.c:2781
611
+#: clamav-milter.c:2909
612 612
 #, c-format
613 613
 msgid "Can't stat %s"
614 614
 msgstr ""
615 615
 
616
-#: clamav-milter.c:2792 clamav-milter.c:3143
616
+#: clamav-milter.c:2920 clamav-milter.c:3295
617 617
 #, c-format
618 618
 msgid "Can't open %s"
619 619
 msgstr ""
620 620
 
621
-#: clamav-milter.c:2927
621
+#: clamav-milter.c:3055
622 622
 #, c-format
623 623
 msgid "mkdir %s failed"
624 624
 msgstr ""
625 625
 
626
-#: clamav-milter.c:2940
626
+#: clamav-milter.c:3068
627 627
 #, c-format
628 628
 msgid "mktemp %s failed"
629 629
 msgstr ""
630 630
 
631
-#: clamav-milter.c:2950
631
+#: clamav-milter.c:3078
632 632
 #, c-format
633 633
 msgid "Temporary quarantine file %s creation failed"
634 634
 msgstr ""
635 635
 
636
-#: clamav-milter.c:3015
637
-msgid "failed to create socket"
636
+#: clamav-milter.c:3172
637
+msgid "failed to create TCPSocket to talk to clamd"
638 638
 msgstr ""
639 639
 
640
-#: clamav-milter.c:3034
640
+#: clamav-milter.c:3186
641 641
 msgid "recv failed from clamd getting PORT"
642 642
 msgstr ""
643 643
 
644
-#: clamav-milter.c:3044
644
+#: clamav-milter.c:3196
645 645
 #, c-format
646 646
 msgid "Expected port information from clamd, got '%s'"
647 647
 msgstr ""
648 648
 
649
-#: clamav-milter.c:3047
649
+#: clamav-milter.c:3199
650 650
 #, c-format
651 651
 msgid "Expected port information from clamd, got '%s'\n"
652 652
 msgstr ""
653 653
 
654
-#: clamav-milter.c:3062
654
+#: clamav-milter.c:3214
655 655
 #, c-format
656 656
 msgid "Connecting to local port %d\n"
657 657
 msgstr ""
658 658
 
659
-#: clamav-milter.c:3073 clamav-milter.c:3076
659
+#: clamav-milter.c:3225 clamav-milter.c:3228
660 660
 #, c-format
661 661
 msgid "Failed to connect to port %d given by clamd: %s"
662 662
 msgstr ""
663 663
 
664
-#: clamav-milter.c:3155
664
+#: clamav-milter.c:3307
665 665
 #, c-format
666 666
 msgid "Clamd (pid %d) seems to have died"
667 667
 msgstr ""
668 668
 
669
-#: clamav-milter.c:3181
669
+#: clamav-milter.c:3333
670 670
 #, c-format
671 671
 msgid "Can't open e-mail template file %s"
672 672
 msgstr ""
673 673
 
674
-#: clamav-milter.c:3190
674
+#: clamav-milter.c:3342
675 675
 #, c-format
676 676
 msgid "Can't stat e-mail template file %s"
677 677
 msgstr ""
678 678
 
679
-#: clamav-milter.c:3199
679
+#: clamav-milter.c:3351
680 680
 msgid "Out of memory"
681 681
 msgstr ""
682 682
 
683
-#: clamav-milter.c:3226
683
+#: clamav-milter.c:3378
684 684
 #, c-format
685 685
 msgid "%s: Unknown clamAV variable \"%c\"\n"
686 686
 msgstr ""
687 687
 
688
-#: clamav-milter.c:3236
688
+#: clamav-milter.c:3388
689 689
 #, c-format
690 690
 msgid "%s: Unterminated sendmail variable \"%s\"\n"
691 691
 msgstr ""
692 692
 
693
-#: clamav-milter.c:3247
693
+#: clamav-milter.c:3399
694 694
 #, c-format
695 695
 msgid "%s: Unknown sendmail variable \"%s\"\n"
696 696
 msgstr ""
697 697
 
698
-#: clamav-milter.c:3309
698
+#: clamav-milter.c:3461
699 699
 #, c-format
700 700
 msgid "Can't rename %1$s to %2$s"
701 701
 msgstr ""
702 702
 
703
-#: clamav-milter.c:3331
703
+#: clamav-milter.c:3483
704 704
 #, c-format
705 705
 msgid "[Virus] %s"
706 706
 msgstr ""