Versions / Builds Affected
20131111, 20140616Status
ResolvedProblem Summary
IMAP server maxing out WCF sessions if IMAP is set to specific interface and IP address changesTT / JIRAID
2383How to Identify
Consider the following situation:
Admin enabled MARC's IMAP server
Admin chooses a specific network interface (let's call it interface1)
At this time interface1 has 2 IP addresses (1x IPv6 and 1x IPv4): fe80::40bb:d322:b4e6:20ee%12;212.119.25.115;
MARC saves this to MArcSettings.xml as: fe80::40bb:d322:b4e6:20ee%12;212.119.25.115;
At some point the IP address is changed (e.g. in the reference case the IPv6 address changed to fe80::696c:5c19:a0a0:bc09%15)
When the IMAP service starts next time it cannot identify the interface based on the old IP address and fails to initialize the binding
IMAP\DebugLogs\IMAPServer.log would contains logging similar to:
2014-06-03,08:45:35,805,1,"#00004268","#00000010","info ","IMAPServer","Init Adapter..."
2014-06-03,08:45:36,586,1,"#00004268","#00000010","info ","IMAPServer","Init Adapter...OK"
2014-06-03,08:45:36,617,1,"#00004268","#00000010","error ","IMAPServer","error:Failed to Listen on fe80::40bb:d322:b4e6:20ee%12:44143 - Die angeforderte Adresse ist in diesem Kontext ungültig"
2014-06-03,08:45:36,664,1,"#00004268","#00000010","error ","IMAPServer","error:Failed to start IMAP: System.Net.Sockets.SocketException (0x80004005): Die angeforderte Adresse ist in diesem Kontext ungültig
; bei System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress)
; bei System.Net.Sockets.Socket.Bind(EndPoint localEP)
; bei System.Net.Sockets.TcpListener.Start(Int32 backlog)
; bei MArc.IMAP.IMAP_Server.Listen()
; bei MArc.IMAP.IMAP_ServerPlugin.ControlProcess()"
Note that above error from a German system - the error translates to: "The requested address is not valid in this context"
Above error is being looped until certain WCF pipes are max'ed out. This would lead in many modules of MARC failing incl. nobody being able to load the web page anymore.
To identify the pipe being max'ed out run perfmon.msc, add the counter [ServiceModelService 4.0.0.0] [Percentage of max concurrent sessions] and find the CSService@... being max'ed out.Workaround / Fix Details
1. Stop the GFI MailArchiver IMAP service
2. Open the web page (it should load again)
3. Navigate to the IMAP server configuration
4. Choose to bind to "All Interfaces"
5. Save the changes
(If the binding must be limited to a specific interface, simply choose it again now and save the changes. But once the IP address of the interface changes again the issue might reoccur.
-----
Fixed in MARC2015 build 20141117Required Actions
Upgrade to the version mentioned in the fix section