1 /*****************************************************************
2 * Licensed to the Apache Software Foundation (ASF) under one *
3 * or more contributor license agreements. See the NOTICE file *
4 * distributed with this work for additional information *
5 * regarding copyright ownership. The ASF licenses this file *
6 * to you under the Apache License, Version 2.0 (the *
7 * "License"); you may not use this file except in compliance *
8 * with the License. You may obtain a copy of the License at *
9 * *
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 ****************************************************************/
19
20 package org.apache.james.services;
21
22 import org.apache.mailet.Mail;
23 import org.apache.mailet.MailAddress;
24
25 import javax.mail.MessagingException;
26 import javax.mail.internet.MimeMessage;
27 import java.io.InputStream;
28 import java.util.Collection;
29
30 /***
31 * The interface for Phoenix blocks to the James MailServer
32 *
33 *
34 * @version This is $Revision: 494012 $
35 */
36 public interface MailServer
37 {
38 /***
39 * The component role used by components implementing this service
40 */
41 String ROLE = "org.apache.james.services.MailServer";
42
43 /***
44 * Reserved user name for the mail delivery agent for multi-user mailboxes
45 */
46 String MDA = "JamesMDA";
47
48 /***
49 * Reserved user name meaning all users for multi-user mailboxes
50 */
51 String ALL = "AllMailUsers";
52
53 /***
54 * Pass a MimeMessage to this MailServer for processing
55 *
56 * @param sender - the sender of the message
57 * @param recipients - a Collection of String objects of recipients
58 * @param msg - the MimeMessage of the headers and body content of
59 * the outgoing message
60 * @throws MessagingException - if the message fails to parse
61 *
62 * @deprecated You can use MailetContext service for this purpose
63 */
64 void sendMail(MailAddress sender, Collection recipients, MimeMessage msg)
65 throws MessagingException;
66
67 /***
68 * Pass a MimeMessage to this MailServer for processing
69 *
70 * @param sender - the sender of the message
71 * @param recipients - a Collection of String objects of recipients
72 * @param msg - an InputStream containing the headers and body content of
73 * the outgoing message
74 * @throws MessagingException - if the message fails to parse
75 *
76 * @deprecated You can use MailetContext service for this purpose
77 */
78 void sendMail(MailAddress sender, Collection recipients, InputStream msg)
79 throws MessagingException;
80
81 /***
82 * Pass a Mail to this MailServer for processing
83 * @param mail the Mail to be processed
84 * @throws MessagingException
85 */
86 void sendMail(Mail mail)
87 throws MessagingException;
88
89 /***
90 * Pass a MimeMessage to this MailServer for processing
91 * @param message the message
92 * @throws MessagingException
93 *
94 * @deprecated You can use MailetContext service for this purpose
95 */
96 void sendMail(MimeMessage message)
97 throws MessagingException;
98
99 /***
100 * Retrieve the primary mailbox for userName. For POP3 style stores this
101 * is their (sole) mailbox.
102 *
103 * @param sender - the name of the user
104 * @return a reference to an initialised mailbox
105 */
106 MailRepository getUserInbox(String userName);
107
108 /***
109 * Generate a new identifier/name for a mail being processed by this server.
110 *
111 * @return the new identifier
112 */
113 String getId();
114
115 /***
116 * Adds a new user to the mail system with userName. For POP3 style stores
117 * this may only involve adding the user to the UsersStore.
118 *
119 * @param sender - the name of the user
120 * @return a reference to an initialised mailbox
121 *
122 * @deprecated addUser should not be considered a property of a MailServer
123 * We could have readonly userbases providing full MailServer implementations.
124 * Look at the UsersRepository.addUser(username, password) method.
125 */
126 boolean addUser(String userName, String password);
127
128 /***
129 * Checks if a server is serviced by mail context
130 *
131 * @param serverName - name of server.
132 * @return true if server is local, i.e. serviced by this mail context
133 */
134 boolean isLocalServer(String serverName);
135 }