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 "Labib Iskander, Marcus" <ml...@cm4all.com> on 2002/07/05 12:33:05 UTC

infinite loops

Hello all,
since our usage of James is getting more intensive and the drive James logs
to is the same as where many temporary and other log files go to. I added
some protection against endless loops in James. These let me sleep a little
better and maybe somebody else as well?

1. I changed James.java to add a non-standard header to bounced mails to be
able to recognize rebouncing. This would happen if the sender, recipient and
the local postmaster are due to remote delivery and permantly not reachable.
(Which is not too unlikely to happen in my case since I am forwarding the
postmaster mails)

2. I added a sleep in the catch block in the main loop of
RemoteDelivery.java
(I indeed got a endless loop here producing 40MB of logs after startup till
I was able to stop James again. How? I forgot to add the dbSPOOL repository
type to the mailstore blocks configuration. Which led to a
NullPointerException in the loop since the exception in the initphase is
being catched.)

3. I added a sleep in the catch block in the main loop of
JamesSpoolManager.java

4. I changed NotifyPostmaster and NotifySender to optionally set a custom
header counting the notification level depth. In case the notification of a
postmaster leads to an error which again yields a notification.

5. Added some Matcher (only included in the modified.zip):
	NullSender: checks for the sender being null
	NamedSender: !NullSender
	HeaderSmallerThan: Checks for a header like that set by
NotifyPostmaster or NotifySender

If you like to, add this code to JAMES.

Cheers,
  Marcus