[
https://issues.apache.org/jira/browse/JAMES-1580?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Nikolai Grigoriev updated JAMES-1580:
-
Description:
I have discovered the problem when working on a company-specific fork of James
but when I verified the trunk code I believe I saw the same problem there too.
org.apache.james.mailbox.hbase.HBaseUtils.messageMetaFromResult() calls
getProperty() method like this:
{code}
//get message properties
if (Bytes.startsWith(keys[i].getQualifier(), PREFIX_PROP_B)) {
propList.add(getProperty(keys[i].getValue()));
} else if (Bytes.startsWith(keys[i].getQualifier(),
PREFIX_SFLAGS_B)) {
{code}
getProperty() method throws RuntimeException (which is a bad practice, in my
opinion, in this case). This exception is not handled anywhere close enough in
this method or in the caller. As result, when a message in the mailbox cannot
be parsed, then the mailbox becomes permanently inaccessible until that message
is removed manually. Any attempt to authenticate with, for example, POP3 server
results in failure because the mailbox cannot be read.
I am receiving such messages from time to time so the problem is real.
I think the best solution would be either to skip the property and move to the
next one.
was:
I have discovered the problem when working on a company-specific fork of James
but when I verified the trunk code I believe I saw the same problem there too.
org.apache.james.mailbox.hbase.HBaseUtils.messageMetaFromResult() calls
getProperty() method like this:
{code}
while (i keys.length) {
//get message properties
if (Bytes.startsWith(keys[i].getQualifier(), PREFIX_PROP_B)) {
propList.add(getProperty(keys[i].getValue()));
} else if (Bytes.startsWith(keys[i].getQualifier(),
PREFIX_SFLAGS_B)) {
{code}
getProperty() method throws RuntimeException (which is a bad practice, in my
opinion, in this case). This exception is not handled anywhere close enough in
this method or in the caller. As result, when a message in the mailbox cannot
be parsed, then the mailbox becomes permanently inaccessible until that message
is removed manually.
I am receiving such messages from time to time so the problem is real.
I think the best solution would be either to skip the property and move to the
next one.
HBase mailbox may be blocked permanently by a malformed email
-
Key: JAMES-1580
URL: https://issues.apache.org/jira/browse/JAMES-1580
Project: James Server
Issue Type: Bug
Components: POP3Server
Affects Versions: Trunk, 3.0-beta4
Environment: POP3 mailbox access with the mailbox managed by HBase
Reporter: Nikolai Grigoriev
I have discovered the problem when working on a company-specific fork of
James but when I verified the trunk code I believe I saw the same problem
there too.
org.apache.james.mailbox.hbase.HBaseUtils.messageMetaFromResult() calls
getProperty() method like this:
{code}
//get message properties
if (Bytes.startsWith(keys[i].getQualifier(), PREFIX_PROP_B)) {
propList.add(getProperty(keys[i].getValue()));
} else if (Bytes.startsWith(keys[i].getQualifier(),
PREFIX_SFLAGS_B)) {
{code}
getProperty() method throws RuntimeException (which is a bad practice, in my
opinion, in this case). This exception is not handled anywhere close enough
in this method or in the caller. As result, when a message in the mailbox
cannot be parsed, then the mailbox becomes permanently inaccessible until
that message is removed manually. Any attempt to authenticate with, for
example, POP3 server results in failure because the mailbox cannot be read.
I am receiving such messages from time to time so the problem is real.
I think the best solution would be either to skip the property and move to
the next one.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
-
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org