You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-user@james.apache.org by Hes Siemelink <he...@izecom.com> on 2004/01/15 13:47:34 UTC
Return-Path twice in header
Hello
We experienced some unexpected behavior with James 2.1.3 when sending a
message that had two Return-Path headers.
An example of such a message:
Return-Path: brinkers@hot.a2000.nl
From: "Brinkers" <br...@hot.a2000.nl>
To: <br...@hot.a2000.nl>
Subject: Return-Path mail
Return-Path: brinkers2@hot.a2000.nl
Date: Tue, 9 Dec 2003 22:36:33 -0500
Hoi
James transforms this into something like
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
content-class: urn:content-classes:message
Subject:
Date: Thu, 15 Jan 2004 12:02:16 +0100
brinkers2@hot.a2000.nl
Received: from vallum.intra.izecom.com ([192.168.0.1])
by uffizi.intra.izecom.com (JAMES SMTP Server 2.1.3) with SMTP
ID 302
for <he...@secure.izemail.com>;
Thu, 15 Jan 2004 12:02:19 +0100 (CET)
From: "Brinkers" <br...@hot.a2000.nl>
To: <br...@hot.a2000.nl>
Subject: Test Mail
Date: Tue, 9 Dec 2003 22:36:33 -0500
Hoi
It seems that new headers are created and the original headers start with
after a blank line, causing them to be interpreted as a message body.
In Outlook, this is displayed as a message without Subject or From field,
where the message body starts with the 'brinkers2@hot.a2000.nl' followed by
the original headers.
Now putting the Return-Path twice in your headers is probably not a good
idea, but we do happen to have some emails that have that in our test set
and would like to process them in a reasonable way.
So we investigated the James source code trying to find the cause for this
unexpected behavior.
In org.apache.james.smtpserver.SMTPHandler in the method
processMailHeaders() we found the following call to retrieve the Return-Path
header.
// Determine the Return-Path
String returnPath = headers.getHeader(RFC2822Headers.RETURN_PATH,
"\r\n");
This roughly means "Give me all Return-Path headers separated by line
breaks.". Later on, this returnPath String is put on top of all headers.
We deduced that if there is more than one Return-Path header, this will
result in something like
Return-Path: brinkers@hot.a2000.nl
brinkers2@hot.a2000.nl
From: "Brinkers" <br...@hot.a2000.nl>
To: <br...@hot.a2000.nl>
Subject: Return-Path mail
Date: Tue, 9 Dec 2003 22:36:33 -0500
Hoi
where that the second line ('brinkers2@hot.a200.nl') is interpreted as the
start of the message body later on, causing new headers to be invented and
the old headers to dispappear on the message body.
We changed the call to get the getHeader() in processMailHeaders() to pass a
null argument:
// Determine the Return-Path
String returnPath = headers.getHeader(RFC2822Headers.RETURN_PATH,
null);
which roughly means "Give only one Return-Path header".
After recompiling and deploying James, our test mails passed James
correctly.
We would appreciate it if this fix, or a similar one, could be included in
the next James release.
Thank you
Hes Siemelink
Izecom BV
---------------------------------------------------------------------
To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
For additional commands, e-mail: server-user-help@james.apache.org