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... | ... |
@@ -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 "" |