Browse code

Improved SPF checking for phish false positives

git-svn: trunk@3312

Nigel Horne authored on 2007/10/24 18:08:28
Showing 4 changed files
... ...
@@ -1,3 +1,9 @@
1
+Wed Oct 24 09:08:12 BST 2007 (njh)
2
+----------------------------------
3
+  * clamav-milter:	Improved SPF checking for phish false positives
4
+  			Improved chroot failure diagnostics
5
+			Added option to report phish false positives
6
+
1 7
 Tue Oct 23 12:05:05 BST 2007 (trog)
2 8
 -----------------------------------
3 9
   * libclamunrar: move unrar to a separate library, under an unrar license.
... ...
@@ -33,7 +33,7 @@
33 33
  */
34 34
 static	char	const	rcsid[] = "$Id: clamav-milter.c,v 1.312 2007/02/12 22:24:21 njh Exp $";
35 35
 
36
-#define	CM_VERSION	"0.92rc2"
36
+#define	CM_VERSION	"devel-20081024"
37 37
 
38 38
 #if HAVE_CONFIG_H
39 39
 #include "clamav-config.h"
... ...
@@ -517,6 +517,7 @@ static	const	char	*postmaster = "postmaster";
517 517
 static	const	char	*from = "MAILER-DAEMON";
518 518
 static	int	quitting;
519 519
 static	const	char	*report;	/* Report Phishing to this address */
520
+static	const	char	*report_fps;	/* Report Phish FPs to this address */
520 521
 
521 522
 static	const	char	*whitelistFile;	/*
522 523
 					 * file containing destination email
... ...
@@ -613,6 +614,7 @@ help(void)
613 613
 	puts(_("\t--quiet\t\t\t-q\tDon't send e-mail notifications of interceptions."));
614 614
 	puts(_("\t--quarantine=USER\t-Q EMAIL\tQuarantine e-mail account."));
615 615
 	puts(_("\t--report-phish=EMAIL\t-r EMAIL\tReport phish to this email address."));
616
+	puts(_("\t--report-phish-false-positives=EMAIL\t-R EMAIL\tReport phish false positves to this email address."));
616 617
 	puts(_("\t--quarantine-dir=DIR\t-U DIR\tDirectory to store infected emails."));
617 618
 	puts(_("\t--server=SERVER\t\t-s SERVER\tHostname/IP address of server(s) running clamd (when using TCPsocket)."));
618 619
 	puts(_("\t--sendmail-cf=FILE\t\tLocation of the sendmail.cf file to verify"));
... ...
@@ -710,15 +712,15 @@ main(int argc, char **argv)
710 710
 		int opt_index = 0;
711 711
 #ifdef	BOUNCE
712 712
 #ifdef	CL_DEBUG
713
-		const char *args = "a:AbB:c:C:dDefF:I:k:K:lLm:M:nNop:PqQ:r:hHs:St:T:U:VwW:x:0:1:2";
713
+		const char *args = "a:AbB:c:C:dDefF:I:k:K:lLm:M:nNop:PqQ:r:R:hHs:St:T:U:VwW:x:0:1:2";
714 714
 #else
715
-		const char *args = "a:AbB:c:C:dDefF:I:k:K:lLm:M:nNop:PqQ:r:hHs:St:T:U:VwW:0:1:2";
715
+		const char *args = "a:AbB:c:C:dDefF:I:k:K:lLm:M:nNop:PqQ:r:R:hHs:St:T:U:VwW:0:1:2";
716 716
 #endif
717 717
 #else	/*!BOUNCE*/
718 718
 #ifdef	CL_DEBUG
719
-		const char *args = "a:AB:c:C:dDefF:I:k:K:lLm:M:nNop:PqQ:r:hHs:St:T:U:VwW:x:0:1:2";
719
+		const char *args = "a:AB:c:C:dDefF:I:k:K:lLm:M:nNop:PqQ:r:R:hHs:St:T:U:VwW:x:0:1:2";
720 720
 #else
721
-		const char *args = "a:AB:c:C:dDefF:I:k:K:lLm:M:nNop:PqQ:r:hHs:St:T:U:VwW:0:1:2";
721
+		const char *args = "a:AB:c:C:dDefF:I:k:K:lLm:M:nNop:PqQ:r:R:hHs:St:T:U:VwW:0:1:2";
722 722
 #endif
723 723
 #endif	/*BOUNCE*/
724 724
 
... ...
@@ -804,7 +806,10 @@ main(int argc, char **argv)
804 804
 				"quarantine", 1, NULL, 'Q',
805 805
 			},
806 806
 			{
807
-				"report-phishing", 1, NULL, 'r'
807
+				"report-phish", 1, NULL, 'r'
808
+			},
809
+			{
810
+				"report-phish-false-positives", 1, NULL, 'R'
808 811
 			},
809 812
 			{
810 813
 				"quarantine-dir", 1, NULL, 'U',
... ...
@@ -974,6 +979,9 @@ main(int argc, char **argv)
974 974
 				/* e.g. reportphishing@antiphishing.org */
975 975
 				report = optarg;
976 976
 				break;
977
+			case 'R':	/* report phishing false positives here */
978
+				report_fps = optarg;
979
+				break;
977 980
 			case 's':	/* server running clamd */
978 981
 				server++;
979 982
 				serverHostNames = optarg;
... ...
@@ -1731,7 +1739,7 @@ main(int argc, char **argv)
1731 1731
 
1732 1732
 	if(report) {
1733 1733
 		if(!cfgopt(copt, "PhishingSignatures")->enabled) {
1734
-			fprintf(stderr, "%s: You have chosen --report, but PhishingSignatures is off in %s\n",
1734
+			fprintf(stderr, "%s: You have chosen --report-phish, but PhishingSignatures is off in %s\n",
1735 1735
 				argv[0], cfgfile);
1736 1736
 			return EX_USAGE;
1737 1737
 		}
... ...
@@ -1754,6 +1762,12 @@ main(int argc, char **argv)
1754 1754
 			return EX_USAGE;
1755 1755
 		}
1756 1756
 	}
1757
+	if(report_fps)
1758
+		if(!cfgopt(copt, "PhishingSignatures")->enabled) {
1759
+			fprintf(stderr, "%s: You have chosen --report-phish-false-positives, but PhishingSignatures is off in %s\n",
1760
+				argv[0], cfgfile);
1761
+			return EX_USAGE;
1762
+		}
1757 1763
 
1758 1764
 	if(cfgopt(copt, "Foreground")->enabled)
1759 1765
 		logg_foreground = 1;
... ...
@@ -1935,10 +1949,12 @@ main(int argc, char **argv)
1935 1935
 		if(getuid() == 0) {
1936 1936
 			if(chdir(rootdir) < 0) {
1937 1937
 				perror(rootdir);
1938
+				logg("!chdir %s failed\n", rootdir);
1938 1939
 				return EX_CONFIG;
1939 1940
 			}
1940 1941
 			if(chroot(rootdir) < 0) {
1941 1942
 				perror(rootdir);
1943
+				logg("!chroot %s failed\n", rootdir);
1942 1944
 				return EX_CONFIG;
1943 1945
 			}
1944 1946
 			logg("Chrooted to %s\n", rootdir);
... ...
@@ -2205,6 +2221,9 @@ pingServer(int serverNumber)
2205 2205
 			perror("socket");
2206 2206
 			return 0;
2207 2207
 		}
2208
+		/*
2209
+		 * FIXME: use non-blocking connect
2210
+		 */
2208 2211
 		if(connect(sock, (struct sockaddr *)&server, sizeof(struct sockaddr_in)) < 0) {
2209 2212
 			int is_connected = 0;
2210 2213
 
... ...
@@ -3027,19 +3046,32 @@ clamfi_header(SMFICTX *ctx, char *headerf, char *headerv)
3027 3027
 	if((strcasecmp(headerf, "Message-ID") == 0) &&
3028 3028
 	   (strncasecmp(headerv, "<MDAEMON", 8) == 0))
3029 3029
 		privdata->discard = 1;
3030
-	else if(strcasecmp(headerf, "Subject") == 0) {
3030
+	else if((strcasecmp(headerf, "Subject") == 0) && headerv) {
3031 3031
 		if(privdata->subject)
3032 3032
 			free(privdata->subject);
3033 3033
 		if(headerv)
3034 3034
 			privdata->subject = cli_strdup(headerv);
3035 3035
 	} else if(strcasecmp(headerf, "X-Virus-Status") == 0)
3036 3036
 		privdata->statusCount++;
3037
-	else if(strcasecmp(headerf, "Sender") == 0) {
3037
+	else if((strcasecmp(headerf, "Sender") == 0) && headerv) {
3038 3038
 		if(privdata->sender)
3039 3039
 			free(privdata->sender);
3040
-		if(headerv)
3041
-			privdata->sender = cli_strdup(headerv);
3040
+		privdata->sender = cli_strdup(headerv);
3041
+	}
3042
+#ifdef	HAVE_RESOLV_H
3043
+	else if((strcasecmp(headerf, "From") == 0) && headerv) {
3044
+		/*
3045
+		 * SPF check against the from header, since the SMTP header
3046
+		 * may be valid. This is not what the SPF spec says, but I
3047
+		 * have seen SPF matches on what are clearly phishes, so by
3048
+		 * checking against the from: header we're less likely to
3049
+		 * FP a real phish
3050
+		 */
3051
+		if(privdata->from)
3052
+			free(privdata->from);
3053
+		privdata->from = cli_strdup(headerv);
3042 3054
 	}
3055
+#endif
3043 3056
 
3044 3057
 	if(!useful_header(headerf)) {
3045 3058
 		logg("*Discarded the header\n");
... ...
@@ -3519,6 +3551,32 @@ clamfi_eom(SMFICTX *ctx)
3519 3519
 			logg(_("%s: Ignoring %s false positive from %s received from %s\n"),
3520 3520
 				sendmailId, mess, privdata->from, privdata->ip);
3521 3521
 			strcpy(mess, "OK");
3522
+			/*
3523
+			 * Report false positive to ClamAV, works best when
3524
+			 * clamav-milter has had to create a local copy of
3525
+			 * the email, e.g. when --quarantine-dir is on
3526
+			 */
3527
+			if(report_fps &&
3528
+			   (smfi_addrcpt(ctx, report_fps) == MI_FAILURE)) {
3529
+				if(privdata->filename) {
3530
+					char cmd[1024];
3531
+
3532
+					snprintf(cmd, sizeof(cmd) - 1,
3533
+						"mail -s \"False Positive: %s\" %s < %s",
3534
+						mess, report_fps,
3535
+						privdata->filename);
3536
+					if(system(cmd) == 0)
3537
+						logg(_("#Reported phishing false positive to %s"), report_fps);
3538
+					else
3539
+						logg(_("^Couldn't report false positive to %s\n"), report_fps);
3540
+				} else
3541
+					/*
3542
+					 * Most likely this is because we're
3543
+					 * attempting to add a recipient on
3544
+					 * another host
3545
+					 */
3546
+					logg(_("^Can't set phish FP header\n"));
3547
+			}
3522 3548
 		}
3523 3549
 		tableDestroy(prevhosts);
3524 3550
 	}
... ...
@@ -6213,7 +6271,7 @@ spf(struct privdata *privdata, table_t *prevhosts)
6213 6213
 
6214 6214
 	if(privdata->from == NULL)
6215 6215
 		return 0;
6216
-	if((host = strchr(privdata->from, '@')) == NULL)
6216
+	if((host = strrchr(privdata->from, '@')) == NULL)
6217 6217
 		return 0;
6218 6218
 
6219 6219
 	host = cli_strdup(++host);
... ...
@@ -6322,7 +6380,11 @@ spf(struct privdata *privdata, table_t *prevhosts)
6322 6322
 #endif
6323 6323
 					mask = MAKEMASK(preflen);
6324 6324
 					if((ntohl(remote_ip.s_addr) & mask) == (ntohl(spf_range.s_addr) & mask)) {
6325
-						logg("#SPF ip4 pass\n");
6325
+						if(privdata->subject)
6326
+							logg("#SPF ip4 pass (%s) %s is valid for %s\n",
6327
+								privdata->subject, ip, host);
6328
+						else
6329
+							logg("#SPF ip4 pass %s is valid for %s\n", ip, host);
6326 6330
 						privdata->spf_ok = 1;
6327 6331
 					}
6328 6332
 				} else if(strcmp(record, "mx") == 0) {
... ...
@@ -6402,7 +6464,10 @@ spf_ip(char *ip, int zero, void *v)
6402 6402
 	struct privdata *privdata = (struct privdata *)v;
6403 6403
 
6404 6404
 	if(strcmp(ip, privdata->ip) == 0) {
6405
-		logg("#SPF mx/a pass %s\n", ip);
6405
+		if(privdata->subject)
6406
+			logg("#SPF mx/a pass (%s) %s\n", privdata->subject, ip);
6407
+		else
6408
+			logg("#SPF mx/a pass %s\n", ip);
6406 6409
 		privdata->spf_ok = 1;
6407 6410
 	}
6408 6411
 }
... ...
@@ -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: 2007-07-17 14:13+0100\n"
11
+"POT-Creation-Date: 2007-10-24 09:05+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,746 +16,775 @@ msgstr ""
16 16
 "Content-Type: text/plain; charset=CHARSET\n"
17 17
 "Content-Transfer-Encoding: 8bit\n"
18 18
 
19
-#: clamav-milter.c:583
19
+#: clamav-milter.c:585
20 20
 msgid "\t--advisory\t\t-A\tFlag viruses rather than deleting them."
21 21
 msgstr ""
22 22
 
23
-#: clamav-milter.c:584
23
+#: clamav-milter.c:586
24 24
 msgid "\t--blacklist-time=SECS\t-k\tTime (in seconds) to blacklist an IP."
25 25
 msgstr ""
26 26
 
27
-#: clamav-milter.c:585
27
+#: clamav-milter.c:587
28 28
 msgid "\t--black-hole-mode\t\tDon't scan messages aliased to /dev/null."
29 29
 msgstr ""
30 30
 
31
-#: clamav-milter.c:587
31
+#: clamav-milter.c:589
32 32
 msgid "\t--bounce\t\t-b\tSend a failure message to the sender."
33 33
 msgstr ""
34 34
 
35
-#: clamav-milter.c:589
35
+#: clamav-milter.c:591
36 36
 msgid ""
37 37
 "\t--broadcast\t\t-B [IFACE]\tBroadcast to a network manager when a virus is "
38 38
 "found."
39 39
 msgstr ""
40 40
 
41
-#: clamav-milter.c:590
41
+#: clamav-milter.c:592
42 42
 msgid "\t--chroot=DIR\t\t-C DIR\tChroot to dir when starting."
43 43
 msgstr ""
44 44
 
45
-#: clamav-milter.c:591
45
+#: clamav-milter.c:593
46 46
 msgid "\t--config-file=FILE\t-c FILE\tRead configuration from FILE."
47 47
 msgstr ""
48 48
 
49
-#: clamav-milter.c:592
49
+#: clamav-milter.c:594
50 50
 msgid "\t--debug\t\t\t-D\tPrint debug messages."
51 51
 msgstr ""
52 52
 
53
-#: clamav-milter.c:593
53
+#: clamav-milter.c:595
54 54
 msgid ""
55 55
 "\t--detect-forged-local-address\t-L\tReject mails that claim to be from us."
56 56
 msgstr ""
57 57
 
58
-#: clamav-milter.c:594
58
+#: clamav-milter.c:596
59 59
 msgid "\t--dont-blacklist\t-K\tDon't blacklist a given IP."
60 60
 msgstr ""
61 61
 
62
-#: clamav-milter.c:595
62
+#: clamav-milter.c:597
63 63
 msgid ""
64 64
 "\t--dont-scan-on-error\t-d\tPass e-mails through unscanned if a system error "
65 65
 "occurs."
66 66
 msgstr ""
67 67
 
68
-#: clamav-milter.c:596
68
+#: clamav-milter.c:598
69 69
 msgid "\t--dont-wait\t\t\tAsk remote end to resend if max-children exceeded."
70 70
 msgstr ""
71 71
 
72
-#: clamav-milter.c:597
72
+#: clamav-milter.c:599
73 73
 msgid "\t--external\t\t-e\tUse an external scanner (usually clamd)."
74 74
 msgstr ""
75 75
 
76
-#: clamav-milter.c:598
76
+#: clamav-milter.c:600
77 77
 msgid ""
78 78
 "\t--freshclam-monitor=SECS\t-M SECS\tHow often to check for database update."
79 79
 msgstr ""
80 80
 
81
-#: clamav-milter.c:599
81
+#: clamav-milter.c:601
82 82
 msgid "\t--from=EMAIL\t\t-a EMAIL\tError messages come from here."
83 83
 msgstr ""
84 84
 
85
-#: clamav-milter.c:600
85
+#: clamav-milter.c:602
86 86
 msgid "\t--force-scan\t\t-f\tForce scan all messages (overrides (-o and -l)."
87 87
 msgstr ""
88 88
 
89
-#: clamav-milter.c:601
89
+#: clamav-milter.c:603
90 90
 msgid "\t--help\t\t\t-h\tThis message."
91 91
 msgstr ""
92 92
 
93
-#: clamav-milter.c:602
93
+#: clamav-milter.c:604
94 94
 msgid "\t--headers\t\t-H\tInclude original message headers in the report."
95 95
 msgstr ""
96 96
 
97
-#: clamav-milter.c:603
97
+#: clamav-milter.c:605
98 98
 msgid ""
99 99
 "\t--ignore IPaddr\t\t-I IPaddr\tAdd IPaddr to LAN IP list (see --local)."
100 100
 msgstr ""
101 101
 
102
-#: clamav-milter.c:604
102
+#: clamav-milter.c:606
103 103
 msgid "\t--local\t\t\t-l\tScan messages sent from machines on our LAN."
104 104
 msgstr ""
105 105
 
106
-#: clamav-milter.c:605
106
+#: clamav-milter.c:607
107 107
 msgid "\t--max-childen\t\t-m\tMaximum number of concurrent scans."
108 108
 msgstr ""
109 109
 
110
-#: clamav-milter.c:606
110
+#: clamav-milter.c:608
111 111
 msgid "\t--outgoing\t\t-o\tScan outgoing messages from this machine."
112 112
 msgstr ""
113 113
 
114
-#: clamav-milter.c:607
114
+#: clamav-milter.c:609
115 115
 msgid "\t--noreject\t\t-N\tDon't reject viruses, silently throw them away."
116 116
 msgstr ""
117 117
 
118
-#: clamav-milter.c:608
118
+#: clamav-milter.c:610
119 119
 msgid "\t--noxheader\t\t-n\tSuppress X-Virus-Scanned/X-Virus-Status headers."
120 120
 msgstr ""
121 121
 
122
-#: clamav-milter.c:609
122
+#: clamav-milter.c:611
123 123
 msgid "\t--pidfile=FILE\t\t-i FILE\tLocation of pidfile."
124 124
 msgstr ""
125 125
 
126
-#: clamav-milter.c:610
126
+#: clamav-milter.c:612
127 127
 msgid "\t--postmaster\t\t-p EMAIL\tPostmaster address [default=postmaster]."
128 128
 msgstr ""
129 129
 
130
-#: clamav-milter.c:611
130
+#: clamav-milter.c:613
131 131
 msgid "\t--postmaster-only\t-P\tSend notifications only to the postmaster."
132 132
 msgstr ""
133 133
 
134
-#: clamav-milter.c:612
134
+#: clamav-milter.c:614
135 135
 msgid "\t--quiet\t\t\t-q\tDon't send e-mail notifications of interceptions."
136 136
 msgstr ""
137 137
 
138
-#: clamav-milter.c:613
138
+#: clamav-milter.c:615
139 139
 msgid "\t--quarantine=USER\t-Q EMAIL\tQuarantine e-mail account."
140 140
 msgstr ""
141 141
 
142
-#: clamav-milter.c:614
142
+#: clamav-milter.c:616
143 143
 msgid "\t--report-phish=EMAIL\t-r EMAIL\tReport phish to this email address."
144 144
 msgstr ""
145 145
 
146
-#: clamav-milter.c:615
146
+#: clamav-milter.c:617
147
+msgid ""
148
+"\t--report-phish-false-positives=EMAIL\t-R EMAIL\tReport phish false "
149
+"positves to this email address."
150
+msgstr ""
151
+
152
+#: clamav-milter.c:618
147 153
 msgid "\t--quarantine-dir=DIR\t-U DIR\tDirectory to store infected emails."
148 154
 msgstr ""
149 155
 
150
-#: clamav-milter.c:616
156
+#: clamav-milter.c:619
151 157
 msgid ""
152 158
 "\t--server=SERVER\t\t-s SERVER\tHostname/IP address of server(s) running "
153 159
 "clamd (when using TCPsocket)."
154 160
 msgstr ""
155 161
 
156
-#: clamav-milter.c:617
162
+#: clamav-milter.c:620
157 163
 msgid "\t--sendmail-cf=FILE\t\tLocation of the sendmail.cf file to verify"
158 164
 msgstr ""
159 165
 
160
-#: clamav-milter.c:618
166
+#: clamav-milter.c:621
161 167
 msgid "\t--sign\t\t\t-S\tAdd a hard-coded signature to each scanned message."
162 168
 msgstr ""
163 169
 
164
-#: clamav-milter.c:619
170
+#: clamav-milter.c:622
165 171
 msgid "\t--signature-file=FILE\t-F FILE\tLocation of signature file."
166 172
 msgstr ""
167 173
 
168
-#: clamav-milter.c:620
174
+#: clamav-milter.c:623
169 175
 msgid "\t--template-file=FILE\t-t FILE\tLocation of e-mail template file."
170 176
 msgstr ""
171 177
 
172
-#: clamav-milter.c:621
178
+#: clamav-milter.c:624
173 179
 msgid ""
174 180
 "\t--template-headers=FILE\t\tLocation of e-mail headers for template file."
175 181
 msgstr ""
176 182
 
177
-#: clamav-milter.c:622
183
+#: clamav-milter.c:625
178 184
 msgid "\t--timeout=SECS\t\t-T SECS\tTimeout waiting to childen to die."
179 185
 msgstr ""
180 186
 
181
-#: clamav-milter.c:623
187
+#: clamav-milter.c:626
182 188
 msgid ""
183 189
 "\t--whitelist-file=FILE\t-W FILE\tLocation of the file of whitelisted "
184 190
 "addresses"
185 191
 msgstr ""
186 192
 
187
-#: clamav-milter.c:624
193
+#: clamav-milter.c:627
188 194
 msgid "\t--version\t\t-V\tPrint the version number of this software."
189 195
 msgstr ""
190 196
 
191
-#: clamav-milter.c:626
197
+#: clamav-milter.c:629
192 198
 msgid "\t--debug-level=n\t\t-x n\tSets the debug level to 'n'."
193 199
 msgstr ""
194 200
 
195
-#: clamav-milter.c:628
201
+#: clamav-milter.c:631
196 202
 msgid ""
197 203
 "\n"
198 204
 "For more information type \"man clamav-milter\"."
199 205
 msgstr ""
200 206
 
201
-#: clamav-milter.c:629
207
+#: clamav-milter.c:632
202 208
 msgid "For bug reports, please refer to http://www.clamav.net/bugs"
203 209
 msgstr ""
204 210
 
205
-#: clamav-milter.c:925
211
+#: clamav-milter.c:931
206 212
 #, c-format
207 213
 msgid "%s: %s, -I may only be given %d times\n"
208 214
 msgstr ""
209 215
 
210
-#: clamav-milter.c:931
216
+#: clamav-milter.c:937
211 217
 #, c-format
212 218
 msgid "%s: Cannot convert -I%s to IPaddr\n"
213 219
 msgstr ""
214 220
 
215
-#: clamav-milter.c:1042
221
+#: clamav-milter.c:1051
216 222
 #, c-format
217 223
 msgid "%s: SESSIONS mode requires --external\n"
218 224
 msgstr ""
219 225
 
220
-#: clamav-milter.c:1050
226
+#: clamav-milter.c:1059
221 227
 #, c-format
222 228
 msgid "%s: No socket-addr given\n"
223 229
 msgstr ""
224 230
 
225
-#: clamav-milter.c:1057
231
+#: clamav-milter.c:1066
226 232
 #, c-format
227 233
 msgid "%s: socket-addr (%s) doesn't agree with sendmail.cf\n"
228 234
 msgstr ""
229 235
 
230
-#: clamav-milter.c:1073
236
+#: clamav-milter.c:1082
231 237
 #, c-format
232 238
 msgid "%s: when using inet: connexion to sendmail you must enable --local\n"
233 239
 msgstr ""
234 240
 
235
-#: clamav-milter.c:1085
241
+#: clamav-milter.c:1094
236 242
 #, c-format
237 243
 msgid "%s: Can't parse the config file %s\n"
238 244
 msgstr ""
239 245
 
240
-#: clamav-milter.c:1092
246
+#: clamav-milter.c:1101
241 247
 #, c-format
242 248
 msgid "%s: --detect-forged-local-addresses is not compatible with --outgoing\n"
243 249
 msgstr ""
244 250
 
245
-#: clamav-milter.c:1096
251
+#: clamav-milter.c:1105
246 252
 #, c-format
247 253
 msgid "%s: --detect-forged-local-addresses is not compatible with --local\n"
248 254
 msgstr ""
249 255
 
250
-#: clamav-milter.c:1100
256
+#: clamav-milter.c:1109
251 257
 #, c-format
252 258
 msgid "%s: --detect-forged-local-addresses is not compatible with --force\n"
253 259
 msgstr ""
254 260
 
255
-#: clamav-milter.c:1144
261
+#: clamav-milter.c:1153
256 262
 #, c-format
257 263
 msgid ""
258 264
 "%s: The iface option to --broadcast is not supported on your operating "
259 265
 "system\n"
260 266
 msgstr ""
261 267
 
262
-#: clamav-milter.c:1153
268
+#: clamav-milter.c:1162
263 269
 #, c-format
264 270
 msgid "%s: Can't get information about user %s\n"
265 271
 msgstr ""
266 272
 
267
-#: clamav-milter.c:1164
273
+#: clamav-milter.c:1173
268 274
 #, c-format
269 275
 msgid "%s: AllowSupplementaryGroups: initgroups not supported.\n"
270 276
 msgstr ""
271 277
 
272
-#: clamav-milter.c:1178
278
+#: clamav-milter.c:1191
273 279
 #, c-format
274
-msgid "%s: You cannot use black hole mode unless you are root\n"
280
+msgid "Running as user %s (UID %d, GID %d)\n"
275 281
 msgstr ""
276 282
 
277
-#: clamav-milter.c:1188
283
+#: clamav-milter.c:1247
278 284
 #, c-format
279
-msgid "Running as user %s (UID %d, GID %d)\n"
285
+msgid "%s: You cannot use black hole mode unless %s is a TrustedUser\n"
280 286
 msgstr ""
281 287
 
282
-#: clamav-milter.c:1191
288
+#: clamav-milter.c:1253
283 289
 #, c-format
284
-msgid "%s: running as root is not recommended (check \"User\" in %s)\n"
290
+msgid "^%s: running as root is not recommended (check \"User\" in %s)\n"
285 291
 msgstr ""
286 292
 
287
-#: clamav-milter.c:1194
293
+#: clamav-milter.c:1255
288 294
 #, c-format
289 295
 msgid "%s: Only root can set an interface for --broadcast\n"
290 296
 msgstr ""
291 297
 
292
-#: clamav-milter.c:1199
298
+#: clamav-milter.c:1260
293 299
 #, c-format
294 300
 msgid "%s: Advisory mode doesn't work with quarantine mode\n"
295 301
 msgstr ""
296 302
 
297
-#: clamav-milter.c:1207
303
+#: clamav-milter.c:1268
298 304
 #, c-format
299 305
 msgid "%s: Advisory mode doesn't work with quarantine directories\n"
300 306
 msgstr ""
301 307
 
302
-#: clamav-milter.c:1213
308
+#: clamav-milter.c:1274
303 309
 #, c-format
304 310
 msgid "%s: the quarantine directory must not contain the string 'ERROR'\n"
305 311
 msgstr ""
306 312
 
307
-#: clamav-milter.c:1219
313
+#: clamav-milter.c:1280
308 314
 #, c-format
309 315
 msgid "%s: the quarantine directory must not contain the string 'FOUND'\n"
310 316
 msgstr ""
311 317
 
312
-#: clamav-milter.c:1225
318
+#: clamav-milter.c:1286
313 319
 #, c-format
314 320
 msgid "%s: the quarantine directory must not contain the string 'OK'\n"
315 321
 msgstr ""
316 322
 
317
-#: clamav-milter.c:1242
323
+#: clamav-milter.c:1303
318 324
 #, c-format
319 325
 msgid "%s: insecure quarantine directory %s (mode 0%o)\n"
320 326
 msgstr ""
321 327
 
322
-#: clamav-milter.c:1284
328
+#: clamav-milter.c:1344
323 329
 #, c-format
324 330
 msgid "%s: ReadTimeout must not be negative in %s\n"
325 331
 msgstr ""
326 332
 
327
-#: clamav-milter.c:1293
333
+#: clamav-milter.c:1353
328 334
 #, c-format
329 335
 msgid "%s: StreamMaxLength must not be negative in %s\n"
330 336
 msgstr ""
331 337
 
332
-#: clamav-milter.c:1326
338
+#: clamav-milter.c:1386
333 339
 #, c-format
334 340
 msgid ""
335 341
 "%s: (-q && !LogSyslog): warning - all interception message methods are off\n"
336 342
 msgstr ""
337 343
 
338
-#: clamav-milter.c:1342
344
+#: clamav-milter.c:1402
339 345
 #, c-format
340 346
 msgid "%s: --max-children must be given if --external is not given\n"
341 347
 msgstr ""
342 348
 
343
-#: clamav-milter.c:1346
349
+#: clamav-milter.c:1406
344 350
 #, c-format
345 351
 msgid "%s: --freshclam_monitor must be at least one second\n"
346 352
 msgstr ""
347 353
 
348
-#: clamav-milter.c:1360
354
+#: clamav-milter.c:1420
349 355
 #, c-format
350 356
 msgid "%s: --timeout must not be given if --external is not given\n"
351 357
 msgstr ""
352 358
 
353
-#: clamav-milter.c:1373
359
+#: clamav-milter.c:1433
354 360
 #, c-format
355 361
 msgid "%s: No emails will be scanned"
356 362
 msgstr ""
357 363
 
358
-#: clamav-milter.c:1384
364
+#: clamav-milter.c:1444
359 365
 #, c-format
360 366
 msgid "%s: You can select one server type only (local/TCP) in %s\n"
361 367
 msgstr ""
362 368
 
363
-#: clamav-milter.c:1389
369
+#: clamav-milter.c:1449
364 370
 #, c-format
365 371
 msgid "%s: You cannot use the --server option when using LocalSocket in %s\n"
366 372
 msgstr ""
367 373
 
368
-#: clamav-milter.c:1399
374
+#: clamav-milter.c:1459
369 375
 #, c-format
370 376
 msgid "The connexion from sendmail to %s (%s) must not\n"
371 377
 msgstr ""
372 378
 
373
-#: clamav-milter.c:1401
379
+#: clamav-milter.c:1461
374 380
 #, c-format
375 381
 msgid "be the same as the connexion to clamd (%s) in %s\n"
376 382
 msgstr ""
377 383
 
378
-#: clamav-milter.c:1411 clamav-milter.c:1438
384
+#: clamav-milter.c:1471 clamav-milter.c:1498
379 385
 #, c-format
380 386
 msgid "Can't talk to clamd server via %s\n"
381 387
 msgstr ""
382 388
 
383
-#: clamav-milter.c:1413 clamav-milter.c:1440
389
+#: clamav-milter.c:1473 clamav-milter.c:1500
384 390
 #, c-format
385 391
 msgid "Check your entry for LocalSocket in %s\n"
386 392
 msgstr ""
387 393
 
388
-#: clamav-milter.c:1450
394
+#: clamav-milter.c:1510
389 395
 msgid "!Can't create a clamd session"
390 396
 msgstr ""
391 397
 
392
-#: clamav-milter.c:1467
398
+#: clamav-milter.c:1527
393 399
 #, c-format
394 400
 msgid "%s: --quarantine-dir not supported for TCPSocket - use --quarantine\n"
395 401
 msgstr ""
396 402
 
397
-#: clamav-milter.c:1482
403
+#: clamav-milter.c:1542
398 404
 #, c-format
399 405
 msgid "%s: hostname %s is longer than %d characters\n"
400 406
 msgstr ""
401 407
 
402
-#: clamav-milter.c:1501 clamav-milter.c:1634
408
+#: clamav-milter.c:1561 clamav-milter.c:1694
403 409
 #, c-format
404 410
 msgid "%s: --max-children must be given in sessions mode\n"
405 411
 msgstr ""
406 412
 
407
-#: clamav-milter.c:1507
413
+#: clamav-milter.c:1567
408 414
 #, c-format
409 415
 msgid ""
410 416
 "%1$s: --max-children (%2$d) is lower than the number of servers you have (%3"
411 417
 "$d)\n"
412 418
 msgstr ""
413 419
 
414
-#: clamav-milter.c:1534
420
+#: clamav-milter.c:1594
415 421
 #, c-format
416 422
 msgid "%s: Unknown host %s\n"
417 423
 msgstr ""
418 424
 
419
-#: clamav-milter.c:1564
425
+#: clamav-milter.c:1624
420 426
 msgid "Waiting for clamd to come up\n"
421 427
 msgstr ""
422 428
 
423
-#: clamav-milter.c:1578
429
+#: clamav-milter.c:1638
424 430
 #, c-format
425 431
 msgid "Can't talk to clamd server %s on port %d\n"
426 432
 msgstr ""
427 433
 
428
-#: clamav-milter.c:1582
434
+#: clamav-milter.c:1642
429 435
 #, c-format
430 436
 msgid "Check the value for TCPAddr in %s\n"
431 437
 msgstr ""
432 438
 
433
-#: clamav-milter.c:1584
439
+#: clamav-milter.c:1644
434 440
 #, c-format
435 441
 msgid "Check the value for TCPAddr in clamd.conf on %s\n"
436 442
 msgstr ""
437 443
 
438
-#: clamav-milter.c:1600 clamav-milter.c:1608 clamav-milter.c:4646
444
+#: clamav-milter.c:1660 clamav-milter.c:1668 clamav-milter.c:4773
439 445
 msgid "!Can't find any clamd server\n"
440 446
 msgstr ""
441 447
 
442
-#: clamav-milter.c:1601 clamav-milter.c:1606
448
+#: clamav-milter.c:1661 clamav-milter.c:1666
443 449
 #, c-format
444 450
 msgid "Check your entry for TCPSocket in %s\n"
445 451
 msgstr ""
446 452
 
447
-#: clamav-milter.c:1614
453
+#: clamav-milter.c:1674
448 454
 #, c-format
449 455
 msgid "%s: You must select server type (local/TCP) in %s\n"
450 456
 msgstr ""
451 457
 
452
-#: clamav-milter.c:1711
458
+#: clamav-milter.c:1777
453 459
 #, c-format
454 460
 msgid "When debugging it is recommended that you use Foreground mode in %s\n"
455 461
 msgstr ""
456 462
 
457
-#: clamav-milter.c:1712
463
+#: clamav-milter.c:1778
458 464
 msgid "\tso that you can see all of the messages"
459 465
 msgstr ""
460 466
 
461
-#: clamav-milter.c:1820
467
+#: clamav-milter.c:1886
462 468
 #, c-format
463 469
 msgid "%s: ScanMail not defined in %s (needed without --external), enabling\n"
464 470
 msgstr ""
465 471
 
466
-#: clamav-milter.c:1880
472
+#: clamav-milter.c:1946
467 473
 msgid "Starting clamav-milter"
468 474
 msgstr ""
469 475
 
470
-#: clamav-milter.c:1906
476
+#: clamav-milter.c:1974
471 477
 #, c-format
472 478
 msgid "!pidfile: '%s' must be a full pathname"
473 479
 msgstr ""
474 480
 
475
-#: clamav-milter.c:1922
481
+#: clamav-milter.c:1990
476 482
 #, c-format
477 483
 msgid "!Can't save PID in file %s\n"
478 484
 msgstr ""
479 485
 
480
-#: clamav-milter.c:1990
486
+#: clamav-milter.c:2058
481 487
 #, c-format
482 488
 msgid "Starting %s\n"
483 489
 msgstr ""
484 490
 
485
-#: clamav-milter.c:1991
491
+#: clamav-milter.c:2059
486 492
 msgid "*Debugging is on\n"
487 493
 msgstr ""
488 494
 
489
-#: clamav-milter.c:2084
495
+#: clamav-milter.c:2159
490 496
 #, c-format
491 497
 msgid "Check clamd server %s - it may be down\n"
492 498
 msgstr ""
493 499
 
494
-#: clamav-milter.c:2089
500
+#: clamav-milter.c:2164
495 501
 msgid "Check clamd server - it may be down"
496 502
 msgstr ""
497 503
 
498
-#: clamav-milter.c:2297
504
+#: clamav-milter.c:2374
499 505
 msgid "No free clamd sessions\n"
500 506
 msgstr ""
501 507
 
502
-#: clamav-milter.c:2418
508
+#: clamav-milter.c:2495
503 509
 msgid "^Couldn't establish a connexion to any clamd server\n"
504 510
 msgstr ""
505 511
 
506
-#: clamav-milter.c:2442
512
+#: clamav-milter.c:2519
507 513
 #, c-format
508 514
 msgid "^findServer: select failed (maxsock = %d)\n"
509 515
 msgstr ""
510 516
 
511
-#: clamav-milter.c:2456
517
+#: clamav-milter.c:2533
512 518
 msgid "^findServer: No response from any server\n"
513 519
 msgstr ""
514 520
 
515
-#: clamav-milter.c:2525
521
+#: clamav-milter.c:2602
516 522
 #, c-format
517 523
 msgid "^Check clamd server %s - it may be down\n"
518 524
 msgstr ""
519 525
 
520
-#: clamav-milter.c:2529
526
+#: clamav-milter.c:2606
521 527
 msgid "Check clamd server - it may be down\n"
522 528
 msgstr ""
523 529
 
524
-#: clamav-milter.c:2553
530
+#: clamav-milter.c:2630
525 531
 msgid "!clamfi_connect: ctx is null"
526 532
 msgstr ""
527 533
 
528
-#: clamav-milter.c:2557
534
+#: clamav-milter.c:2634
529 535
 msgid "!clamfi_connect: hostname is null"
530 536
 msgstr ""
531 537
 
532
-#: clamav-milter.c:2593
538
+#: clamav-milter.c:2670
533 539
 #, c-format
534 540
 msgid "clamfi_connect: Unexpected sa_family %d\n"
535 541
 msgstr ""
536 542
 
537
-#: clamav-milter.c:2603
543
+#: clamav-milter.c:2680
538 544
 msgid "clamfi_connect: remoteIP is null"
539 545
 msgstr ""
540 546
 
541
-#: clamav-milter.c:2611
547
+#: clamav-milter.c:2688
542 548
 #, c-format
543 549
 msgid "clamfi_connect: connexion from %s"
544 550
 msgstr ""
545 551
 
546
-#: clamav-milter.c:2613
552
+#: clamav-milter.c:2690
547 553
 #, c-format
548 554
 msgid "clamfi_connect: connexion from %s [%s]"
549 555
 msgstr ""
550 556
 
551
-#: clamav-milter.c:2632
557
+#: clamav-milter.c:2709
552 558
 msgid "Can't get sendmail hostname"
553 559
 msgstr ""
554 560
 
555
-#: clamav-milter.c:2640
561
+#: clamav-milter.c:2717
556 562
 #, c-format
557 563
 msgid "^Access Denied: Host Unknown (%s)"
558 564
 msgstr ""
559 565
 
560
-#: clamav-milter.c:2649
566
+#: clamav-milter.c:2726
561 567
 #, c-format
562 568
 msgid "Can't find entry for IP address %s in DNS - check your DNS setting\n"
563 569
 msgstr ""
564 570
 
565
-#: clamav-milter.c:2659
571
+#: clamav-milter.c:2736
566 572
 #, c-format
567 573
 msgid "^Access Denied: Can't get IP address for (%s)"
568 574
 msgstr ""
569 575
 
570
-#: clamav-milter.c:2675
576
+#: clamav-milter.c:2752
571 577
 #, c-format
572 578
 msgid "^Access Denied for %s[%s]"
573 579
 msgstr ""
574 580
 
575
-#: clamav-milter.c:2691
581
+#: clamav-milter.c:2768
576 582
 msgid "*clamfi_connect: not scanning outgoing messages"
577 583
 msgstr ""
578 584
 
579
-#: clamav-milter.c:2697
585
+#: clamav-milter.c:2774
580 586
 msgid "*clamfi_connect: not scanning local messages\n"
581 587
 msgstr ""
582 588
 
583
-#: clamav-milter.c:2710
589
+#: clamav-milter.c:2787
584 590
 msgid "^clamfi_connect: gethostname failed"
585 591
 msgstr ""
586 592
 
587
-#: clamav-milter.c:2715
593
+#: clamav-milter.c:2792
588 594
 msgid "Rejected connexion falsely claiming to be from here\n"
589 595
 msgstr ""
590 596
 
591
-#: clamav-milter.c:2716
597
+#: clamav-milter.c:2793
592 598
 msgid "You have claimed to be me, but you are not"
593 599
 msgstr ""
594 600
 
595
-#: clamav-milter.c:2717 clamav-milter.c:3032
601
+#: clamav-milter.c:2794 clamav-milter.c:3141
596 602
 msgid "Forged local address detected"
597 603
 msgstr ""
598 604
 
599
-#: clamav-milter.c:2733
605
+#: clamav-milter.c:2810
600 606
 #, c-format
601 607
 msgid "%s is blacklisted because your machine is infected with a virus"
602 608
 msgstr ""
603 609
 
604
-#: clamav-milter.c:2735 clamav-milter.c:2847
610
+#: clamav-milter.c:2812 clamav-milter.c:2924
605 611
 msgid "Blacklisted IP detected"
606 612
 msgstr ""
607 613
 
608
-#: clamav-milter.c:2791
614
+#: clamav-milter.c:2868
609 615
 msgid "*clamfi_envfrom: ignoring whitelisted message"
610 616
 msgstr ""
611 617
 
612
-#: clamav-milter.c:2805
618
+#: clamav-milter.c:2882
613 619
 msgid "Rejected email with empty from field"
614 620
 msgstr ""
615 621
 
616
-#: clamav-milter.c:2806
622
+#: clamav-milter.c:2883
617 623
 msgid "You have not said who the email is from"
618 624
 msgstr ""
619 625
 
620
-#: clamav-milter.c:2807
626
+#: clamav-milter.c:2884
621 627
 msgid "Reject email with empty from field"
622 628
 msgstr ""
623 629
 
624
-#: clamav-milter.c:2825
630
+#: clamav-milter.c:2902
625 631
 msgid "AV system temporarily overloaded - please try later"
626 632
 msgstr ""
627 633
 
628
-#: clamav-milter.c:2999
634
+#: clamav-milter.c:2994
635
+msgid "Suspicious recipient address blocked"
636
+msgstr ""
637
+
638
+#: clamav-milter.c:2998
639
+#, c-format
640
+msgid "Will blacklist %s for %d seconds because of cracking attempt\n"
641
+msgstr ""
642
+
643
+#: clamav-milter.c:3108
629 644
 msgid "*clamfi_eoh\n"
630 645
 msgstr ""
631 646
 
632
-#: clamav-milter.c:3024
647
+#: clamav-milter.c:3133
633 648
 msgid "clamfi_eoh: gethostname failed"
634 649
 msgstr ""
635 650
 
636
-#: clamav-milter.c:3030
651
+#: clamav-milter.c:3139
637 652
 #, c-format
638 653
 msgid "Rejected email falsely claiming to be from %s"
639 654
 msgstr ""
640 655
 
641
-#: clamav-milter.c:3031
656
+#: clamav-milter.c:3140
642 657
 msgid "You have claimed to be from me, but you are not"
643 658
 msgstr ""
644 659
 
645
-#: clamav-milter.c:3078
660
+#: clamav-milter.c:3187
646 661
 msgid "*clamfi_enveoh: ignoring whitelisted message"
647 662
 msgstr ""
648 663
 
649
-#: clamav-milter.c:3090
664
+#: clamav-milter.c:3199
650 665
 #, c-format
651 666
 msgid "*clamfi_envbody: %lu bytes"
652 667
 msgstr ""
653 668
 
654
-#: clamav-milter.c:3147
669
+#: clamav-milter.c:3256
655 670
 #, c-format
656 671
 msgid "%s: Message more than StreamMaxLength (%ld) bytes - not scanned\n"
657 672
 msgstr ""
658 673
 
659
-#: clamav-milter.c:3150 clamav-milter.c:3457
674
+#: clamav-milter.c:3259 clamav-milter.c:3585
660 675
 msgid "Not Scanned - StreamMaxLength exceeded"
661 676
 msgstr ""
662 677
 
663
-#: clamav-milter.c:3213
678
+#: clamav-milter.c:3322
664 679
 #, c-format
665
-msgid "^Failed to delete X-Virus-Status header %d"
680
+msgid "^Failed to delete X-Virus-Status header %d\n"
666 681
 msgstr ""
667 682
 
668
-#: clamav-milter.c:3268
683
+#: clamav-milter.c:3377
669 684
 #, c-format
670
-msgid "failed to send SCAN %s command to clamd"
685
+msgid "failed to send SCAN %s command to clamd\n"
671 686
 msgstr ""
672 687
 
673
-#: clamav-milter.c:3289
674
-msgid "failed to send SCAN command to clamd"
688
+#: clamav-milter.c:3398
689
+msgid "failed to send SCAN command to clamd\n"
675 690
 msgstr ""
676 691
 
677
-#: clamav-milter.c:3306
692
+#: clamav-milter.c:3415
678 693
 #, c-format
679 694
 msgid "Waiting to read status from fd %d\n"
680 695
 msgstr ""
681 696
 
682
-#: clamav-milter.c:3318
697
+#: clamav-milter.c:3427
683 698
 #, c-format
684 699
 msgid "*clamfi_eom: read %s\n"
685 700
 msgstr ""
686 701
 
687
-#: clamav-milter.c:3336
702
+#: clamav-milter.c:3445
688 703
 #, c-format
689
-msgid "clamfi_eom: read nothing from clamd on %s"
704
+msgid "clamfi_eom: read nothing from clamd on %s\n"
690 705
 msgstr ""
691 706
 
692
-#: clamav-milter.c:3381 clamav-milter.c:3428
707
+#: clamav-milter.c:3490 clamav-milter.c:3537
693 708
 msgid "Error determining host"
694 709
 msgstr ""
695 710
 
696
-#: clamav-milter.c:3442
711
+#: clamav-milter.c:3551
712
+#, c-format
713
+msgid "%s: Ignoring %s false positive from %s received from %s\n"
714
+msgstr ""
715
+
716
+#: clamav-milter.c:3567
717
+#, c-format
718
+msgid "#Reported phishing false positive to %s"
719
+msgstr ""
720
+
721
+#: clamav-milter.c:3569
697 722
 #, c-format
698
-msgid "%s: ignoring phish false positive from %s received from %s\n"
723
+msgid "^Couldn't report false positive to %s\n"
724
+msgstr ""
725
+
726
+#: clamav-milter.c:3571
727
+msgid "^Can't set phish FP header\n"
699 728
 msgstr ""
700 729
 
701
-#: clamav-milter.c:3454
730
+#: clamav-milter.c:3582
702 731
 #, c-format
703 732
 msgid "%s: Message more than StreamMaxLength (%ld) bytes - not scanned"
704 733
 msgstr ""
705 734
 
706
-#: clamav-milter.c:3462
735
+#: clamav-milter.c:3590
707 736
 msgid "Not Scanned"
708 737
 msgstr ""
709 738
 
710
-#: clamav-milter.c:3490
739
+#: clamav-milter.c:3618
711 740
 msgid "Infected with"
712 741
 msgstr ""
713 742
 
714
-#: clamav-milter.c:3512
743
+#: clamav-milter.c:3640
715 744
 #, c-format
716 745
 msgid "Intercepted virus from %s to"
717 746
 msgstr ""
718 747
 
719
-#: clamav-milter.c:3604
748
+#: clamav-milter.c:3732
720 749
 msgid "Subject: Virus intercepted\n"
721 750
 msgstr ""
722 751
 
723
-#: clamav-milter.c:3619
752
+#: clamav-milter.c:3747
724 753
 #, c-format
725 754
 msgid "!Can't open e-mail template header file %s"
726 755
 msgstr ""
727 756
 
728
-#: clamav-milter.c:3634 clamav-milter.c:3638
757
+#: clamav-milter.c:3762 clamav-milter.c:3766
729 758
 msgid "\n"
730 759
 msgstr ""
731 760
 
732
-#: clamav-milter.c:3647
761
+#: clamav-milter.c:3775
733 762
 msgid "A message you sent to\n"
734 763
 msgstr ""
735 764
 
736
-#: clamav-milter.c:3657
765
+#: clamav-milter.c:3785
737 766
 #, c-format
738 767
 msgid "The message %1$s sent from %2$s to\n"
739 768
 msgstr ""
740 769
 
741
-#: clamav-milter.c:3660
770
+#: clamav-milter.c:3788
742 771
 #, c-format
743 772
 msgid "A message sent from %s to\n"
744 773
 msgstr ""
745 774
 
746
-#: clamav-milter.c:3665
775
+#: clamav-milter.c:3793
747 776
 #, c-format
748 777
 msgid "contained %s and has not been accepted for delivery.\n"
749 778
 msgstr ""
750 779
 
751
-#: clamav-milter.c:3668
780
+#: clamav-milter.c:3796
752 781
 #, c-format
753 782
 msgid ""
754 783
 "\n"
755 784
 "The message in question has been quarantined as %s\n"
756 785
 msgstr ""
757 786
 
758
-#: clamav-milter.c:3671
787
+#: clamav-milter.c:3799
759 788
 #, c-format
760 789
 msgid ""
761 790
 "\n"
... ...
@@ -763,13 +792,13 @@ msgid ""
763 763
 "\n"
764 764
 msgstr ""
765 765
 
766
-#: clamav-milter.c:3674
766
+#: clamav-milter.c:3802
767 767
 msgid ""
768 768
 "For your information, the original message headers were:\n"
769 769
 "\n"
770 770
 msgstr ""
771 771
 
772
-#: clamav-milter.c:3687
772
+#: clamav-milter.c:3815
773 773
 #, c-format
774 774
 msgid ""
775 775
 "\n"
... ...
@@ -777,309 +806,317 @@ msgid ""
777 777
 "%s\t\n"
778 778
 msgstr ""
779 779
 
780
-#: clamav-milter.c:3694
780
+#: clamav-milter.c:3822
781 781
 #, c-format
782 782
 msgid "%s: Failed to notify clamAV interception - see dead.letter\n"
783 783
 msgstr ""
784 784
 
785
-#: clamav-milter.c:3696
785
+#: clamav-milter.c:3824
786 786
 #, c-format
787 787
 msgid "^Can't execute '%s' to send virus notice"
788 788
 msgstr ""
789 789
 
790
-#: clamav-milter.c:3718
790
+#: clamav-milter.c:3846
791 791
 #, c-format
792 792
 msgid "#Reported phishing to %s"
793 793
 msgstr ""
794 794
 
795
-#: clamav-milter.c:3720
795
+#: clamav-milter.c:3848
796 796
 #, c-format
797 797
 msgid "^Couldn't report to %s\n"
798 798
 msgstr ""
799 799
 
800
-#: clamav-milter.c:3726
800
+#: clamav-milter.c:3854
801 801
 msgid "^Can't set anti-phish header\n"
802 802
 msgstr ""
803 803
 
804
-#: clamav-milter.c:3744
804
+#: clamav-milter.c:3872
805 805
 #, c-format
806 806
 msgid "^Can't set quarantine user %s"
807 807
 msgstr ""
808 808
 
809
-#: clamav-milter.c:3778
809
+#: clamav-milter.c:3906
810 810
 #, c-format
811 811
 msgid "virus %s detected by ClamAV - http://www.clamav.net"
812 812
 msgstr ""
813 813
 
814
-#: clamav-milter.c:3783
814
+#: clamav-milter.c:3911
815 815
 #, c-format
816 816
 msgid "Will blacklist %s for %d seconds because of %s\n"
817 817
 msgstr ""
818 818
 
819
-#: clamav-milter.c:3792
819
+#: clamav-milter.c:3920
820 820
 msgid "Unknown"
821 821
 msgstr ""
822 822
 
823
-#: clamav-milter.c:3793
823
+#: clamav-milter.c:3921
824 824
 #, c-format
825 825
 msgid "!%s: incorrect message \"%s\" from clamd"
826 826
 msgstr ""
827 827
 
828
-#: clamav-milter.c:3798
828
+#: clamav-milter.c:3926
829 829
 msgid "Clean"
830 830
 msgstr ""
831 831
 
832
-#: clamav-milter.c:3802
832
+#: clamav-milter.c:3930
833 833
 #, c-format
834 834
 msgid "%s: clean message from %s\n"
835 835
 msgstr ""
836 836
 
837
-#: clamav-milter.c:3804
837
+#: clamav-milter.c:3932
838 838
 msgid "an unknown sender"
839 839
 msgstr ""
840 840
 
841
-#: clamav-milter.c:3892
841
+#: clamav-milter.c:4020
842 842
 #, c-format
843 843
 msgid "!Can't remove clean file %s"
844 844
 msgstr ""
845 845
 
846
-#: clamav-milter.c:4065 clamav-milter.c:4069
846
+#: clamav-milter.c:4193 clamav-milter.c:4197
847 847
 #, c-format
848 848
 msgid "!write failure (%lu bytes) to %s: %s\n"
849 849
 msgstr ""
850 850
 
851
-#: clamav-milter.c:4081 clamav-milter.c:4085
851
+#: clamav-milter.c:4209 clamav-milter.c:4213
852 852
 #, c-format
853 853
 msgid "!write failure (%lu bytes) to clamd: %s\n"
854 854
 msgstr ""
855 855
 
856
-#: clamav-milter.c:4162
856
+#: clamav-milter.c:4290
857 857
 #, c-format
858 858
 msgid "!No data received from clamd in %d seconds\n"
859 859
 msgstr ""
860 860
 
861
-#: clamav-milter.c:4190
861
+#: clamav-milter.c:4318
862 862
 #, c-format
863 863
 msgid "Can't stat %s"
864 864
 msgstr ""
865 865
 
866
-#: clamav-milter.c:4200
866
+#: clamav-milter.c:4328
867 867
 #, c-format
868 868
 msgid "Can't open %s"
869 869
 msgstr ""
870 870
 
871
-#: clamav-milter.c:4319
871
+#: clamav-milter.c:4447
872 872
 #, c-format
873 873
 msgid "mkdir %s failed"
874 874
 msgstr ""
875 875
 
876
-#: clamav-milter.c:4333
876
+#: clamav-milter.c:4461
877 877
 #, c-format
878 878
 msgid "mktemp %s failed"
879 879
 msgstr ""
880 880
 
881
-#: clamav-milter.c:4342
881
+#: clamav-milter.c:4470
882 882
 #, c-format
883 883
 msgid "Temporary quarantine file %s creation failed"
884 884
 msgstr ""
885 885
 
886
-#: clamav-milter.c:4453
886
+#: clamav-milter.c:4581
887 887
 #, c-format
888 888
 msgid "!failed to send STREAM command clamd server %d"
889 889
 msgstr ""
890 890
 
891
-#: clamav-milter.c:4461
891
+#: clamav-milter.c:4589
892 892
 msgid "!failed to send STREAM command clamd"
893 893
 msgstr ""
894 894
 
895
-#: clamav-milter.c:4472
895
+#: clamav-milter.c:4600
896 896
 msgid "!failed to create TCPSocket to talk to clamd"
897 897
 msgstr ""
898 898
 
899
-#: clamav-milter.c:4483 clamav-milter.c:4497
899
+#: clamav-milter.c:4611 clamav-milter.c:4624
900 900
 msgid "!recv failed from clamd getting PORT"
901 901
 msgstr ""
902 902
 
903
-#: clamav-milter.c:4485 clamav-milter.c:4499
903
+#: clamav-milter.c:4613 clamav-milter.c:4626
904 904
 msgid "!EOF from clamd getting PORT"
905 905
 msgstr ""
906 906
 
907
-#: clamav-milter.c:4510
907
+#: clamav-milter.c:4637
908 908
 #, c-format
909 909
 msgid "!Expected port information from clamd, got '%s'"
910 910
 msgstr ""
911 911
 
912
-#: clamav-milter.c:4530 clamav-milter.c:4533
912
+#: clamav-milter.c:4657 clamav-milter.c:4660
913 913
 #, c-format
914 914
 msgid "Connecting to local port %d - data %d cmd %d\n"
915 915
 msgstr ""
916 916
 
917
-#: clamav-milter.c:4546 clamav-milter.c:4549
917
+#: clamav-milter.c:4673 clamav-milter.c:4676
918 918
 #, c-format
919 919
 msgid "!Failed to connect to port %d given by clamd: %s"
920 920
 msgstr ""
921 921
 
922
-#: clamav-milter.c:4658
922
+#: clamav-milter.c:4785
923 923
 #, c-format
924 924
 msgid "!Can't open %s\n"
925 925
 msgstr ""
926 926
 
927
-#: clamav-milter.c:4672
927
+#: clamav-milter.c:4799
928 928
 #, c-format
929 929
 msgid "!Clamd (pid %d) seems to have died\n"
930 930
 msgstr ""
931 931
 
932
-#: clamav-milter.c:4698
932
+#: clamav-milter.c:4825
933 933
 #, c-format
934 934
 msgid "!Can't open e-mail template file %s"
935 935
 msgstr ""
936 936
 
937
-#: clamav-milter.c:4705
937
+#: clamav-milter.c:4832
938 938
 #, c-format
939 939
 msgid "!Can't stat e-mail template file %s"
940 940
 msgstr ""
941 941
 
942
-#: clamav-milter.c:4712
942
+#: clamav-milter.c:4839
943 943
 msgid "!Out of memory"
944 944
 msgstr ""
945 945
 
946
-#: clamav-milter.c:4717
946
+#: clamav-milter.c:4844
947 947
 #, c-format
948 948
 msgid "!Error reading e-mail template file %s"
949 949
 msgstr ""
950 950
 
951
-#: clamav-milter.c:4745
951
+#: clamav-milter.c:4872
952 952
 #, c-format
953 953
 msgid "!%s: Unknown clamAV variable \"%c\"\n"
954 954
 msgstr ""
955 955
 
956
-#: clamav-milter.c:4755
956
+#: clamav-milter.c:4882
957 957
 #, c-format
958 958
 msgid "!%s: Unterminated sendmail variable \"%s\"\n"
959 959
 msgstr ""
960 960
 
961
-#: clamav-milter.c:4764
961
+#: clamav-milter.c:4891
962 962
 #, c-format
963 963
 msgid "!%s: Unknown sendmail variable \"%s\"\n"
964 964
 msgstr ""
965 965
 
966
-#: clamav-milter.c:4830
966
+#: clamav-milter.c:4957
967 967
 #, c-format
968 968
 msgid "!mkdir %s failed\n"
969 969
 msgstr ""
970 970
 
971
-#: clamav-milter.c:4855
971
+#: clamav-milter.c:4982
972 972
 #, c-format
973 973
 msgid "^Can't rename %1$s to %2$s\n"
974 974
 msgstr ""
975 975
 
976
-#: clamav-milter.c:4863
976
+#: clamav-milter.c:4990
977 977
 #, c-format
978 978
 msgid "Email quarantined as %s\n"
979 979
 msgstr ""
980 980
 
981
-#: clamav-milter.c:4971
981
+#: clamav-milter.c:5098
982 982
 #, c-format
983 983
 msgid "[Virus] %s"
984 984
 msgstr ""
985 985
 
986
-#: clamav-milter.c:5176
986
+#: clamav-milter.c:5307
987 987
 msgid ""
988 988
 "!No response from any clamd server - your AV system is not scanning emails\n"
989 989
 msgstr ""
990 990
 
991
-#: clamav-milter.c:5194
991
+#: clamav-milter.c:5325
992 992
 msgid "Subject: ClamAV Down\n"
993 993
 msgstr ""
994 994
 
995
-#: clamav-milter.c:5197
995
+#: clamav-milter.c:5328
996 996
 msgid ""
997 997
 "This is an automatic message\n"
998 998
 "\n"
999 999
 msgstr ""
1000 1000
 
1001
-#: clamav-milter.c:5200
1001
+#: clamav-milter.c:5331
1002 1002
 msgid "The clamd program cannot be contacted.\n"
1003 1003
 msgstr ""
1004 1004
 
1005
-#: clamav-milter.c:5202
1005
+#: clamav-milter.c:5333
1006 1006
 msgid "No clamd server can be contacted.\n"
1007 1007
 msgstr ""
1008 1008
 
1009
-#: clamav-milter.c:5204
1009
+#: clamav-milter.c:5335
1010 1010
 msgid "Emails may not be being scanned, please check your servers.\n"
1011 1011
 msgstr ""
1012 1012
 
1013
-#: clamav-milter.c:5265 clamav-milter.c:5411
1013
+#: clamav-milter.c:5396 clamav-milter.c:5542
1014 1014
 msgid "!No emails will be scanned"
1015 1015
 msgstr ""
1016 1016
 
1017
-#: clamav-milter.c:5477
1017
+#: clamav-milter.c:5606
1018 1018
 #, c-format
1019 1019
 msgid "Stopping %s\n"
1020 1020
 msgstr ""
1021 1021
 
1022
-#: clamav-milter.c:5525
1022
+#: clamav-milter.c:5654
1023 1023
 msgid "Stopping clamav-milter"
1024 1024
 msgstr ""
1025 1025
 
1026
-#: clamav-milter.c:5673
1026
+#: clamav-milter.c:5802
1027 1027
 #, c-format
1028 1028
 msgid "Loaded %s\n"
1029 1029
 msgstr ""
1030 1030
 
1031
-#: clamav-milter.c:5677
1031
+#: clamav-milter.c:5806
1032 1032
 #, c-format
1033 1033
 msgid "ClamAV: Protecting against %u viruses\n"
1034 1034
 msgstr ""
1035 1035
 
1036
-#: clamav-milter.c:5825
1036
+#: clamav-milter.c:5954
1037 1037
 #, c-format
1038 1038
 msgid "!Can't open whitelist file %s"
1039 1039
 msgstr ""
1040 1040
 
1041
-#: clamav-milter.c:5832
1041
+#: clamav-milter.c:5961
1042 1042
 msgid "!Can't create whitelist table"
1043 1043
 msgstr ""
1044 1044
 
1045
-#: clamav-milter.c:5920
1045
+#: clamav-milter.c:6049
1046 1046
 msgid "!Can't create blacklist table"
1047 1047
 msgstr ""
1048 1048
 
1049
-#: clamav-milter.c:6351
1049
+#: clamav-milter.c:6472
1050 1050
 msgid "^MX peers will not be immune from being blacklisted"
1051 1051
 msgstr ""
1052 1052
 
1053
-#: clamav-milter.c:6398
1053
+#: clamav-milter.c:6498
1054
+msgid "!Can't create pipe\n"
1055
+msgstr ""
1056
+
1057
+#: clamav-milter.c:6519
1058
+msgid "!Can't fork\n"
1059
+msgstr ""
1060
+
1061
+#: clamav-milter.c:6567
1054 1062
 #, c-format
1055
-msgid "^Can't execute '%s' to expand '%s'"
1063
+msgid "^Can't execute '%s' to expand '%s' (error %d)\n"
1056 1064
 msgstr ""
1057 1065
 
1058
-#: clamav-milter.c:6456
1066
+#: clamav-milter.c:6625
1059 1067
 #, c-format
1060 1068
 msgid "hit max-children limit (%u >= %u)\n"
1061 1069
 msgstr ""
1062 1070
 
1063
-#: clamav-milter.c:6457
1071
+#: clamav-milter.c:6626
1064 1072
 #, c-format
1065 1073
 msgid "hit max-children limit (%u >= %u): waiting for some to exit\n"
1066 1074
 msgstr ""
1067 1075
 
1068
-#: clamav-milter.c:6479
1076
+#: clamav-milter.c:6648
1069 1077
 #, c-format
1070 1078
 msgid "n_children %d: waiting %d seconds for some to exit\n"
1071 1079
 msgstr ""
1072 1080
 
1073
-#: clamav-milter.c:6492
1081
+#: clamav-milter.c:6661
1074 1082
 #, c-format
1075 1083
 msgid "Finished waiting, n_children = %d\n"
1076 1084
 msgstr ""
1077 1085
 
1078
-#: clamav-milter.c:6500
1086
+#: clamav-milter.c:6669
1079 1087
 msgid "*Timeout waiting for a child to die\n"
1080 1088
 msgstr ""
1081 1089
 
1082
-#: clamav-milter.c:6534
1090
+#: clamav-milter.c:6703
1083 1091
 #, c-format
1084 1092
 msgid "Won't blacklist %s\n"
1085 1093
 msgstr ""
... ...
@@ -194,6 +194,9 @@ redirected to it.
194 194
 Report caught phishing to an anti-phish organisation's email address such
195 195
 as pirt_clamav@castlecops.com and reportphishing@antiphishing.org.
196 196
 .TP
197
+\fB-R, \-\-report-phish-false-positives=EMAILADDRESS\fR
198
+Report phish false positves to an email address, such as bugs@clamav.net.
199
+.TP
197 200
 \fB-U, \-\-quarantine-dir=DIR\fR
198 201
 If this option is given, infected files are left in this directory.
199 202
 The directory must not be publicly readable or writable, if it is,