When FetchMail cannot determine the IP address of the sender of an e-mail from the "Received" headers, it fails to process the e-mail even when it is told to not reject such errors.
I have debugged this problem in the code, and it appears that the problem is because an UnknownHostException is being thrown in the call to getRemoteAddress() within the createMail() method.
Currently, getRemoteAddress() throws an UnknownHostException for the isRemoteReceivedHeaderInvalid() method to work. A "reject" setting of "true" allows the code to continue processing after this test. However, it appers that createMail() doesn't expect an exception to be thrown, but a null value to be returned when the address cannot be parsed.
One possible solution would be for createMail to explicitly handle UnknownHostExceptions and use this to set the values of the address and remote host of the e-mail to "localhost" instead of testing for a return value of null from these methods.
Another possible solution would be to explicitly parse the "Received" header up front instead of lazily parsing it inside the getRemoteAddress() method. If this were done, there would be no reason for getRemoteAddress() to throw an UnknownHostException at all, and would also prevent a possible "double lazy initialization" that could occur with the first solution.
|Workflow||Default workflow, editable Closed status [ 12565798 ]||jira [ 12581956 ]|
|Workflow||jira [ 12407708 ]||Default workflow, editable Closed status [ 12565798 ]|
|Status||Open [ 1 ]||Resolved [ 5 ]|
|Resolution||Fixed [ 1 ]|
|Assignee||Norman Maurer [ norman ]|
|Fix Version/s||3.0-M2 [ 12315479 ]|