01: /****************************************************************
02: * Licensed to the Apache Software Foundation (ASF) under one *
03: * or more contributor license agreements. See the NOTICE file *
04: * distributed with this work for additional information *
05: * regarding copyright ownership. The ASF licenses this file *
06: * to you under the Apache License, Version 2.0 (the *
07: * "License"); you may not use this file except in compliance *
08: * with the License. You may obtain a copy of the License at *
09: * *
10: * http://www.apache.org/licenses/LICENSE-2.0 *
11: * *
12: * Unless required by applicable law or agreed to in writing, *
13: * software distributed under the License is distributed on an *
14: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
15: * KIND, either express or implied. See the License for the *
16: * specific language governing permissions and limitations *
17: * under the License. *
18: ****************************************************************/package org.apache.james.transport.matchers;
19:
20: import org.apache.mailet.RFC2822Headers;
21: import org.apache.mailet.GenericMatcher;
22: import org.apache.mailet.Mail;
23:
24: import javax.mail.Header;
25: import javax.mail.internet.MimeMessage;
26: import java.util.Collection;
27: import java.util.Enumeration;
28:
29: /**
30: *
31: * @version 1.0.0, 1/5/2000
32: */
33:
34: public class RelayLimit extends GenericMatcher {
35: int limit = 30;
36:
37: public void init() {
38: limit = Integer.parseInt(getCondition());
39: }
40:
41: public Collection match(Mail mail)
42: throws javax.mail.MessagingException {
43: MimeMessage mm = mail.getMessage();
44: int count = 0;
45: for (Enumeration e = mm.getAllHeaders(); e.hasMoreElements();) {
46: Header hdr = (Header) e.nextElement();
47: if (hdr.getName().equals(RFC2822Headers.RECEIVED)) {
48: count++;
49: }
50: }
51: if (count >= limit) {
52: return mail.getRecipients();
53: } else {
54: return null;
55: }
56: }
57: }
|