Question: We are receiving an SMTP 4.4.1 connection time out exception every so often when attempting to send mail in C#. So far we have found no pattern as to when the issue occurs, such as the time of day. 

The exception thrown is:

> 
> System.Net.Mail.SmtpException: Service not available, closing transmission channel. The server response was: 4.4.1 Connection timed out
> 
> 
> 

Up to 30 emails at anyone time are sent and 9 times out of 10 all are sent successfully. When we run into the 4.4.1 exception a number of the emails are sent and the remaining 1 or 2 are not. 

Unfortunately, I don't have access to the clients Exchange server, only the application server where our application is running from. So I'm working with the host on this. The Event Log has been checked on the application server, the only thing found was the following warning from a source McLogEvent:

> 
> Would be blocked by port blocking rule (rule is in warn-only mode) (Anti-virus Standard Protection: Prevent mass mailing worms from sending mail).
> 
> 
> 

Has anyone came across this issue before or know of a possible cause?

Answer: 
Actually, it's not logical :) If you have a) really done a successful major upgrade and b) those Dlls were only in the older version and not in the newer upgrade you installed then they should not be there at all. The old product is no longer there if the upgrade was successful, and there is no old version to have those files - it's uninstalled by the upgrade. If you have two entries in Programs&Features then you didn't do a correct replacement upgrade and that older product is still installed. If you have only one entry in Programs&Features then there is most likely something wrong with your use of component ids. It really is all about those ids sometimes. For example, if you used the same component id in the upgrade for something else in the new upgrade then Windows Installer cannot ref count that id (associated with that older Dll) down to zero and remove the older DLL. Make sure the component ids for those older Dlls are not in the new upgrade. Apart from that, if you ever marked those Dlls as Permanent or SharedLegacy then they won't be uninstalled when the upgrade removes the older product. 

Before deciding what to do you should figure out exactly what is going on. You cannot install the same ProductCode twice, so you are going into some kind of maintenance mode are you are NOT doing an upgrade and you have NOT installed a new product. If you want to actually do an upgrade then use the WiX majorupgrade element.
@Bob Arnson: I don't want to do a major upgrade as I want the previous version to be not uninstalled but upgraded. So I came up with a fix for now using RemoveFile tag under those components that specifies those file ids to be deleted in case they are present.

```
<RemoveFile Id = "id_to_be_removed" On = "uninstall" Name = "dll_name"/>

```