001: /****************************************************************
002: * Licensed to the Apache Software Foundation (ASF) under one *
003: * or more contributor license agreements. See the NOTICE file *
004: * distributed with this work for additional information *
005: * regarding copyright ownership. The ASF licenses this file *
006: * to you under the Apache License, Version 2.0 (the *
007: * "License"); you may not use this file except in compliance *
008: * with the License. You may obtain a copy of the License at *
009: * *
010: * http://www.apache.org/licenses/LICENSE-2.0 *
011: * *
012: * Unless required by applicable law or agreed to in writing, *
013: * software distributed under the License is distributed on an *
014: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
015: * KIND, either express or implied. See the License for the *
016: * specific language governing permissions and limitations *
017: * under the License. *
018: ****************************************************************/package org.apache.james.util.mail.dsn;
019:
020: /**
021: * Constants and getters for RFC 3463 Enhanced Mail System Status Codes
022: *
023: */
024: public class DSNStatus {
025: // status code classes
026: /**
027: * Success
028: */
029: public static final int SUCCESS = 2;
030:
031: /**
032: * Persistent Transient Failure
033: */
034: public static final int TRANSIENT = 4;
035:
036: /**
037: * Permanent Failure
038: */
039: public static final int PERMANENT = 5;
040:
041: // subjects and details
042:
043: /**
044: * Other or Undefined Status
045: */
046: public static final int UNDEFINED = 0;
047:
048: /**
049: * Other undefined status
050: */
051: public static final String UNDEFINED_STATUS = "0.0";
052:
053: /**
054: * Addressing Status
055: */
056: public static final int ADDRESS = 1;
057:
058: /**
059: * Other address status
060: */
061: public static final String ADDRESS_OTHER = "1.0";
062:
063: /**
064: * Bad destination mailbox address
065: */
066: public static final String ADDRESS_MAILBOX = "1.1";
067:
068: /**
069: * Bad destination system address
070: */
071: public static final String ADDRESS_SYSTEM = "1.2";
072:
073: /**
074: * Bad destination mailbox address syntax
075: */
076: public static final String ADDRESS_SYNTAX = "1.3";
077:
078: /**
079: * Destination mailbox address ambiguous
080: */
081: public static final String ADDRESS_AMBIGUOUS = "1.4";
082:
083: /**
084: * Destination Address valid
085: */
086: public static final String ADDRESS_VALID = "1.5";
087:
088: /**
089: * Destimation mailbox has moved, no forwarding address
090: */
091: public static final String ADDRESS_MOVED = "1.6";
092:
093: /**
094: * Bad sender's mailbox address syntax
095: */
096: public static final String ADDRESS_SYNTAX_SENDER = "1.7";
097:
098: /**
099: * Bad sender's system address
100: */
101: public static final String ADDRESS_SYSTEM_SENDER = "1.8";
102:
103: /**
104: * Mailbox Status
105: */
106: public static final int MAILBOX = 2;
107:
108: /**
109: * Other or Undefined Mailbox Status
110: */
111: public static final String MAILBOX_OTHER = "2.0";
112:
113: /**
114: * Mailbox disabled, not accepting messages
115: */
116: public static final String MAILBOX_DISABLED = "2.1";
117:
118: /**
119: * Mailbox full
120: */
121: public static final String MAILBOX_FULL = "2.2";
122:
123: /**
124: * Message length exceeds administrative limit
125: */
126: public static final String MAILBOX_MSG_TOO_BIG = "2.3";
127:
128: /**
129: * Mailing list expansion problem
130: */
131: public static final String MAILBOX_LIST_EXPANSION = "2.4";
132:
133: /**
134: * Mail System Status
135: */
136: public static final int SYSTEM = 3;
137:
138: /**
139: * Other or undefined mail system status
140: */
141: public static final String SYSTEM_OTHER = "3.0";
142:
143: /**
144: * Mail system full
145: */
146: public static final String SYSTEM_FULL = "3.1";
147:
148: /**
149: * System not accepting messages
150: */
151: public static final String SYSTEM_NOT_ACCEPTING = "3.2";
152:
153: /**
154: * System not capable of selected features
155: */
156: public static final String SYSTEM_NOT_CAPABLE = "3.3";
157:
158: /**
159: * Message too big for system
160: */
161: public static final String SYSTEM_MSG_TOO_BIG = "3.4";
162:
163: /**
164: * System incorrectly configured
165: */
166: public static final String SYSTEM_CFG_ERROR = "3.5";
167:
168: /**
169: * Network and Routing Status
170: */
171: public static final int NETWORK = 4;
172:
173: /**
174: * Other or undefined network or routing status
175: */
176: public static final String NETWORK_OTHER = "4.0";
177:
178: /**
179: * No answer form host
180: */
181: public static final String NETWORK_NO_ANSWER = "4.1";
182:
183: /**
184: * Bad Connection
185: */
186: public static final String NETWORK_CONNECTION = "4.2";
187:
188: /**
189: * Directory server failure
190: */
191: public static final String NETWORK_DIR_SERVER = "4.3";
192:
193: /**
194: * Unable to route
195: */
196: public static final String NETWORK_ROUTE = "4.4";
197:
198: /**
199: * Mail system congestion
200: */
201: public static final String NETWORK_CONGESTION = "4.5";
202:
203: /**
204: * Routing loop detected
205: */
206: public static final String NETWORK_LOOP = "4.6";
207:
208: /**
209: * Delivery time expired
210: */
211: public static final String NETWORK_EXPIRED = "4.7";
212:
213: /**
214: * Mail Delivery Protocol Status
215: */
216: public static final int DELIVERY = 5;
217:
218: /**
219: * Other or undefined (SMTP) protocol status
220: */
221: public static final String DELIVERY_OTHER = "5.0";
222:
223: /**
224: * Invalid command
225: */
226: public static final String DELIVERY_INVALID_CMD = "5.1";
227:
228: /**
229: * Syntax error
230: */
231: public static final String DELIVERY_SYNTAX = "5.2";
232:
233: /**
234: * Too many recipients
235: */
236: public static final String DELIVERY_TOO_MANY_REC = "5.3";
237:
238: /**
239: * Invalid command arguments
240: */
241: public static final String DELIVERY_INVALID_ARG = "5.4";
242:
243: /**
244: * Wrong protocol version
245: */
246: public static final String DELIVERY_VERSION = "5.5";
247:
248: /**
249: * Message Content or Media Status
250: */
251: public static final int CONTENT = 6;
252:
253: /**
254: * Other or undefined media error
255: */
256: public static final String CONTENT_OTHER = "6.0";
257:
258: /**
259: * Media not supported
260: */
261: public static final String CONTENT_UNSUPPORTED = "6.1";
262:
263: /**
264: * Conversion required and prohibited
265: */
266: public static final String CONTENT_CONVERSION_NOT_ALLOWED = "6.2";
267:
268: /**
269: * Conversion required, but not supported
270: */
271: public static final String CONTENT_CONVERSION_NOT_SUPPORTED = "6.3";
272:
273: /**
274: * Conversion with loss performed
275: */
276: public static final String CONTENT_CONVERSION_LOSS = "6.4";
277:
278: /**
279: * Conversion failed
280: */
281: public static final String CONTENT_CONVERSION_FAILED = "6.5";
282:
283: /**
284: * Security or Policy Status
285: */
286: public static final int SECURITY = 7;
287:
288: /**
289: * Other or undefined security status
290: */
291: public static final String SECURITY_OTHER = "7.0";
292:
293: /**
294: * Delivery not authorized, message refused
295: */
296: public static final String SECURITY_AUTH = "7.1";
297:
298: /**
299: * Mailing list expansion prohibited
300: */
301: public static final String SECURITY_LIST_EXP = "7.2";
302:
303: /**
304: * Security conversion required, but not possible
305: */
306: public static final String SECURITY_CONVERSION = "7.3";
307:
308: /**
309: * Security features not supported
310: */
311: public static final String SECURITY_UNSUPPORTED = "7.4";
312:
313: /**
314: * Cryptographic failure
315: */
316: public static final String SECURITY_CRYPT_FAIL = "7.5";
317:
318: /**
319: * Cryptographic algorithm not supported
320: */
321: public static final String SECURITY_CRYPT_ALGO = "7.6";
322:
323: /**
324: * Message integrity failure
325: */
326: public static final String SECURITY_INTEGRITY = "7.7";
327:
328: // get methods
329:
330: public static String getStatus(int type, String detail) {
331: return type + "." + detail;
332: }
333:
334: public static String getStatus(int type, int subject, int detail) {
335: return type + "." + subject + "." + detail;
336: }
337: }
|