You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by "Stefano Bagnara (JIRA)" <se...@james.apache.org> on 2006/02/22 21:54:38 UTC
[jira] Commented: (JAMES-444) Add support for "Expires" header in
remotedelivery
[ http://issues.apache.org/jira/browse/JAMES-444?page=comments#action_12367410 ]
Stefano Bagnara commented on JAMES-444:
---------------------------------------
Here is the comment from Marcel Ruff:
--------------------------------
if have added following code snippet to
src/java/org/apache/james/transport/mailets/RemoteDelivery.java
method
private boolean deliver(MailImpl mail, Session session) :
---------------------------------------------------------------------------------------
HostAddress outgoingMailServer = (HostAddress) targetServers.next(); // <--- Existing line
//====== Expires patch start
try {
//
// Expiry Date Indication
// Supported as new RFC 822 header (Expires:).
// @see http://www.faqs.org/rfcs/rfc2156.html
// @see james/logs/mailet-*.log
//
final String EXPIRES_HEADER_RFC2156 = "Expires";
String[] expires = mail.getMessage().getHeader(EXPIRES_HEADER_RFC2156);
if (expires != null && expires.length > 0) {
// Date: Thu, 17 Nov 2005 16:45:12 +0100 (CET)
String value = expires[0].trim();
java.text.DateFormat df = new javax.mail.internet.MailDateFormat();
java.util.Date expire = df.parse(value);
java.util.Date now = new java.util.Date();
if (now.getTime() > expire.getTime()) {
StringBuffer logMessageBuffer =
new StringBuffer(256)
.append("Mail ")
.append(mail.getName())
.append(" to host ")
.append(outgoingMailServer.getHostName())
.append(" at ")
.append(outgoingMailServer.getHost())
.append(" to addresses ")
.append(Arrays.asList(addr))
.append(" is expired since ")
.append(value)
.append(" and is discarded");
log(logMessageBuffer.toString());
return true;
}
}
}
catch (Throwable e) {
e.printStackTrace(); // Ignore Expires: problems
}
//====== Expires patch end
StringBuffer logMessageBuffer = ... // <--- Existing line
---------------------------------------------------
now expired mails are nicely discarded.
This header is well established for 'news' (RFC1036) and
specified in RFC2156 for X.400 -> RCF822(email) gateways as an optional header.
(In the predecessor document RFC1327 it was called "Expiry-Date:" but changed later to "Expires:")
This is tested with james 2.2.0 and should work fine
with the current svn code as well.
Is it possible to add this to james as a new feature?
thanks
> Add support for "Expires" header in remotedelivery
> --------------------------------------------------
>
> Key: JAMES-444
> URL: http://issues.apache.org/jira/browse/JAMES-444
> Project: James
> Type: Improvement
> Components: Matchers/Mailets (bundled)
> Versions: 2.3.0a1
> Reporter: Stefano Bagnara
> Assignee: Stefano Bagnara
> Priority: Minor
>
> Every of our emails has a
> Expires: Thu, 15 Dec 2005 21:45:01 +0100 (CET)
> header (new RFC 822 'Expires:' header and http://www.faqs.org/rfcs/rfc2156.html).
> If the follow-up MTA is down for say one day all mails
> are hold by james in its outgoing queue.
> As most of our mails expire after one minute there
> may be say 20000 mails which are expired during a day.
> I don't want to forward them when the folloup MTA comes
> up again but just silently erase them.
> I think the mailet interface is invoked when the mail
> arrives to james (and is not expired at this point)
> but not when james tries to forward them - true?
> thanks for some insight,
> Marcel
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org