<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.2900.2963" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT face="Courier New" size=2>Hi,</FONT></DIV>
<DIV><FONT face="Courier New" size=2></FONT> </DIV>
<DIV><FONT face="Courier New" size=2>I recently got a report from a user 
connecting to our imap server about an IDLE-connection dropping with an error 
message. Client was Outlook Express which showed an error like "lost connection 
to imap server". After some investigation I found the reason in a modern AVM 
FritzBox NAT router, which seems to close inactive connections after about 15 
minutes.</FONT></DIV>
<DIV><FONT face="Courier New" size=2></FONT> </DIV>
<DIV><FONT face="Courier New" size=2>Now, as IMAP-IDLE allows for about 30 
minutes inactivity by design, this behavior of the NAT router is not nice at 
all, and as I could not change this behavior by any setting on the router, I was 
rather stuck.</FONT></DIV>
<DIV><FONT face="Courier New" size=2></FONT> </DIV>
<DIV><FONT face="Courier New" size=2>So, I changed 
the server-implementation of the IDLE command like the following: If the 
user is IDLE for more than 290secs (near to 5 minutes, the least I could 
imagine for a NAT router dropping a connection), I repeat the last EXISTS 
to keep the connection open. E.g.</FONT></DIV>
<DIV><FONT face="Courier New" size=2></FONT> </DIV>
<DIV><FONT face="Courier New" size=2>[C] abrr SELECT "INBOX"</FONT></DIV>
<DIV><FONT face="Courier New" size=2>[S] * 1 EXISTS</FONT></DIV>
<DIV><FONT face="Courier New" size=2>[S] * 0 RECENT</FONT></DIV>
<DIV><FONT face="Courier New" size=2>[S] [...]</FONT></DIV>
<DIV><FONT face="Courier New" size=2>[S] abrr OK [READ-WRITE] SELECT 
completed<BR></FONT><FONT face="Courier New" size=2>[C] 
brum IDLE</FONT></DIV>
<DIV><FONT face="Courier New" size=2>[S] + idling</FONT></DIV>
<DIV><FONT face="Courier New" size=2>[S] * 2 EXISTS   // new message 
arrives</FONT></DIV>
<DIV>
<DIV><FONT face="Courier New" size=2>[S] * 1 RECENT   // new 
message arrives (2)</FONT></DIV>
<DIV><FONT face="Courier New" size=2>[S] * 2 EXISTS   // 290secs 
inactivity</FONT></DIV>
<DIV>
<DIV><FONT face="Courier New" size=2>[S] * 2 EXISTS   // another 
290secs inactivity</FONT></DIV>
<DIV><FONT face="Courier New" size=2>[C] DONE</FONT></DIV>
<DIV><FONT face="Courier New" size=2>[S] brum OK IDLE terminated</FONT></DIV>
<DIV><FONT face="Courier New" size=2></FONT> </DIV>
<DIV><FONT face="Courier New" size=2>Now - is this protocol compliant (I think 
yes). Is there any scenario where this may confuse clients? Any other problem 
imaginable?</FONT></DIV>
<DIV><FONT face="Courier New" size=2></FONT> </DIV>
<DIV><FONT face="Courier New" 
size=2>Christof</FONT></DIV></DIV></DIV></BODY></HTML>