I often share real world examples of problems or scenarios that you might encounter with Microsoft Exchange Server, and how to avoid or resolve them.
In this article I want to share one such example that happened to me under a specific set of conditions.
The scenario begins with a mailbox migration project, in which I encountered a very large mailbox. The mailbox was too large to move without risking filling up the transaction log volume on the destination server. So I tracked down an owner of the mailbox to discuss options for removing some of the older items.
As it turns out they didn’t really need to keep any of the items in that mailbox that were older than about 30 days. So more than 2 years and 300,000 items in there were not required. We agreed to delete everything older than 6 months, just to be safe.
Side Note – keep an eye on your “large mailboxes” reports and you’ll often find these generic mailboxes that get set up as a place to catch copies of email “just in case” it is needed some time in the future. Often it isn’t.
So my next task was to delete the email content that was no longer needed. I considered using the Exchange 2007 Export-Mailbox cmdlet for this task, but decided to just use Outlook instead since I was already planning to use Outlook to take a look at some of the items before I deleted them.
I logged into a Citrix desktop, launched Outlook, and added the mailbox as a secondary mailbox. I had decided to use Outlook in a Citrix desktop because I expected it to hang for long periods of time as it enumerated or deleted the thousands of items I would be handling, and wanted to keep using Outlook on my laptop as normal.
So over the course of about two days in between other daily tasks I performed Outlook searches based on date ranges, and deleted the items in blocks of about 10,000 messages at a time. It is important to note at this stage that I was using Advanced Find to search the secondary mailbox.
After doing a search based on received date (ie, I started with the oldest mail and worked my way forward month by month) I would then select all the email that appeared in the results and delete them.
When you delete an email from a secondary mailbox it often gets moved to your own mailbox’s Deleted Items. However when you delete an email from a secondary mailbox via an Advanced Find dialog, it often goes into the Deleted Items of the secondary mailbox.
I say “often” because in at least one test the mail went to the Deleted Items of the primary mailbox, but in every other test it went to the secondary mailbox. It may be that Outlook behaves inconsistently in this situation, or that one test was different in some way that I can’t recall now.
As I said earlier I deleted around 2 years worth of unwanted email from the mailbox, in blocks of about 10,000 messages. When I had deleted everything up to the cut off date I’d agreed to with the mailbox owner I went ahead and simply emptied the Deleted Items of the secondary mailbox.
Job done. My plan was to wait for the deleted items to purge from the database itself overnight and then schedule a time to move what was now a much smaller mailbox.
A relevant bit of information at this point is that all of the email I deleted from the mailbox, and then emptied from the Deleted Items, was actually unread email. Nobody ever read these emails, they were there “just in case”.
That fact sprang immediately into my mind when about an hour later I was speaking with an external party who had received an email from our server that read something like this:
Subject: Not read: [subject line of original email]
From: [the large mailbox I’d been cleaning up]
Date: [right about the same time I emptied the Deleted Items]
I quickly learned that the person I was speaking to, when they originally sent their email to our server, had requested a read receipt.
The email had sat in the mailbox for several months unread, and then I came along and deleted it. The Exchange Server then honoured the receipt request, and sent the original sender the “Not read” message.
I had just deleted slightly over 150,000 email messages from that mailbox. How many of them had requested read receipts?
I ran message tracking log searches of the Hub Transport servers and got my first answer – a lot.
I dumped the log data to a file and filtered it a few different ways to discover that:
- About 24,368 “Not read” read receipts had been generated (based on unique message ID)
- They had gone out to about 1200 unique external email addresses
The horse had well and truly bolted on this one, and my team leader started calling and emailing different customer service teams to give them a heads up in case they received calls from confused people about a sudden burst of “Not read” emails. Meanwhile I started digging into the technical side of things to try and find out what had gone wrong, and more importantly how we could avoid this happening again.
After quite a bit of testing here is what I have determined so far.
When permanently deleting an unread item by emptying the Deleted Items of a secondary mailbox Outlook 2003, even if configured to prompt for sending of read receipts, will not warn or prompt the user and a “Not read” message will be generated to the original sender.
When permanently deleting an unread item by emptying the Deleted Items of a secondary mailbox Outlook 2007, if configured to prompt for sending of read receipts, will display a dialog box asking if the receipt should be sent.
If Outlook 2007 is configured to never prompt, and to always send read receipts, a receipt will be generated to the original sender as with Outlook 2003.
If Outlook 2007 is configured to never send a response, then no receipt is generated to the original sender.
Exchange Management Shell
So what about if I had gone with my original thought to use the Export-Mailbox cmdlet to do the job? It certainly would have taken less time to delete all of the email, but what about the “Not read” receipts?
As it turns out, according to my testing, the Export-Mailbox cmdlet will in fact cause a “Not read” receipt to be generated if it deletes an item that is unread and for which the original sender requested a read receipt.
So had I gone with my original thought it would have had the same outcome as the manual process I used instead.
In fact the only scenario in which the receipts would not have been generated is if I had used Outlook 2007 (our Citrix desktops still run Outlook 2003 unfortunately) and had first checked that the tracking options were set to “Never send a response”.
I’m curious whether the receipts would have been generated if I had used Export-Mailbox to export to PST first, and then simply deleted the PST file. That is something I still need to test.
I also have not tested Outlook 2010 though I suspect it will be the same as Outlook 2007.
The lessons I took away from this incident were:
- Watch for creation of these types of “just in case” mailboxes that aren’t actually required
- When they are required, make sure a maintenance routine is in place to manage their size
- If using Outlook to delete bulk unread items, check first that read receipts are turned off in the tracking options
Really useful story.
In this case , creating a transport rule for a mailbox you are cleaning up is the best solution, I think.
And what about turning off “read reciepts” for all Remote Domains ? This should work, I think.
In terms of controlling read receipt at the client level, does the ActiveSync protocol have functionality that allows the user to control the sending of read receipts from the mobile device itself? From our testing, once the device marks the message as read on the server, the server triggers the read receipt. The idea would be to have functionality on the mobile OS (eg. iOS) similar to what’s in place in Outlook where the user can chose to send, not send, or never send.
None that I’m aware of.
What could cause a user to login in the morning and find that he has over 1500 email items “UNREAD”? Only thing I can think of as a cause would be a mailbox restore or possibly a migration.
Recently (about a month ago) finished migrating our users from Exchange 2007 to Exchange 2013 DAG – no email loss or weird anomalies during the migration. We have two sites and an intersite DAG between the two sites. The user in question is in the same mailbox database that I am and a lot of other users and no issues related to “unread” emails from anyone else.
We run a catch all mailbox and I am running Outlook 07 via RDS. I setup the catch all account as a profile and started archiving old mails off to a PST on a NAS.
The problem is that I have Outlook to never send a response but it still does!
You have to create a transport rule.
So go into Organization Config —> Hub Transport —> Transport Rules tab
On the right, click New Transport Rule
Give it a name
In the conditions scroll down and select “if the message type is Message Type”
Change the message type to Read Receipt (add exception if you want) press Next
scroll down to the bottom of Actions and tick delete.
And when your done with the migration, delete the Transport Rule.
So i messed up with this too.. i have run into this problem before moving PST files from one computer to another when upgrading to new computers. This morning, i wanted to test out Office 360 with their exchange server, so i took some old pst files that had email content i wanted to keep, Imported it into the exchange box, and all of a sudden my coworker started getting read receipts.. absolute heart attack. I can’t imagine how many clients got the read receipts too. Makes me feel like throwing outlook out the window.
The crazy thing is i checked my settings for tracking on the Outlook 2007 version i have, and i do have that option to NOT send out read receipts checked so i don’t understand after reading this article why they went out. Is this a bug?? And Problem is to whom??? and they all fly out silently. Is there a way to know what went out? i don’t see them anywhere?
On another site i found a reference to use MFCMAPI x86 to purge queued mail receipts… looked into that… nifty utility, but only found a hand full that were ‘not queued’ but existed… not too sure what those were, but deleted them anyway. Haven’t completely figured out how to use that utility, but i wish there was a track of what went out. If you know… please do tell.
I think ideally… how can one maybe strip the ‘read receipt’ request from emails in some bulk process.. so that moving things back and forth won’t cause this tornado. Not ideal for everyone, but in this case i don’t need any history i just need to move stuff without sending anything out.
Pingback: Email Read Receipts. Does the misuse of minimum effort technology undermine trust between colleagues? | What's the PONT
I had this same issue, except it was deleting the same collection of emails from multiple mailboxes, as these users are members of a DG, after cleaning up about 5 mail boxes, I get complaints about the “Not Read” emails
only a few hundred, but times that to 5 “not read” emails to the same users, argh.
anyway, if anyone is interested, this is the rule I set up to block incoming “Read Requests”:
Apply rule to messages
from users Outside the organization
remove Disposition-Notification-To (remove header)
you could add a second one for users Inside, but that’s not my issue.
You can add one to the list.
We are deploying an exchange server to replace our old linux based infrastructure, and when i copied the archive mail (basically an inbox that gets a copy of all incoming/outgoing mails from/to any of our corporate account, about 1700GB of mails) from the old imap server to a local pst on the server, it decided to send about 430k not read receipts.
Fortunately, I noticed it quickly, but about 20k were sent already. Had to unplug the server from the network to clean the mess.
I Hate this thing
Paul, I just found the same problem as you did, but with Outlook 2010. Read receipts were set to “Ask before”, I got asked once to which I said no of course and out went 200 read receipts regardless.
Yeah it seems everyone learns this one the hard way :-/
Thanks Fabian. Hopefully the following works 😉
From users that are ‘inside the organization’ and sent to users that are ‘outside the organization’ and if the message type is ‘read receipt’ delete the message.
hmmm.. you’re right… the hell…
What if you put the storage quota of the mailbox to “prohibit send at” -> 1mb…
could that work..
There is 1 way which could work:
– Create a Transport-Rule which redirects or deletes this messages of this user during the import. You have a lot of good settings there…
Interestingly enough I’ve just hit this same problem but with a different twist. In my case I’m actually importing mail from an enterprise vault backup directly into an exchange2010 archive mailbox (and ignoring the deleted items and junk email folders).
What I’m finding is Exchange server is sending out notread read receipts. To make matters worse, as we’re talking archived mail, some of this email is 2-3 years old and the original senders email address is no longer valid so the user of the mailbox that I am importing is a) wondering why he’s sending out deleted unread email messages and b) why he is getting bounce reports back too.
I have no idea why, Outlook is configured to not send reports but the emails are still going out.
Next step is to disable read receipts company wide until the email is finished importing…
Same sh.. on my site.. but back to 2006!
We still have E2007 on this environment… but I want to fix it before migrating 300GB of old stuff…
We are running Exchange 2010 and Outlook 2010. I simply went into Outlook Mail>options and selected “Never send a read receipt”. Unfortunately, you must do this before archiving or the “not read” receipts start going out. I stumbled upon OutlookSpy but the outgoing receipts dont show. What an unexpected result of archiving. Customers have been calling all morning to say we never read their emails from 2010.
Can you explain what you did? I haven’t touch this “traumatised experience” since the last time…
“Disable Read Receipts”… where? Outlook? Which Version?
Nice write up but I wanted to add, I just found out the hard way that this occurs when you archive emails aswell. My case was only a few hundred “not read” receipts but further reason to disable read receipts.
This morning I started to deleted around 100’000 mails by using export-mailbox with -deletecontent switch…. and I would love to have read your article before…. same sh….
On my system I have Outlook 2010 installed… removed all the settings regarding response mails… no luck!
I first thought the response mail will be sent when I open the exported PST-File – but as far as I can see it sends the response files without touching Outlook… could that be?
Did you find a solution?
Fabian, I haven’t revisited the issue yet to investigate further. I’m probably still traumatised from the first time 🙂
Great post, we came across the same problem recently with deleted meeting requests, where a read reeceipt had been requested.
I have a couple of Citrix Desktop with Office 2010 if you need it – for next time 🙂
Sounds like fun, Paul. I have a little transport rule and group policy combination blocking any read receipts in/out of the org. That said…we only have ~3k mailboxes and ~3.5k total recipients so I think the problem would be less significant in our situation.
Nice find though. Would you call the advanced find thing a “bug”?
I’m not sure any of this is technically a bug. It depends on whether Microsoft expects everything to work as it did for me, or if that was unexpected. I might ask a few of them next week.
Read receipts have to be the most inane and narcisistic feature of email. They’re the first thing I disable when being setup under a new email system.
Great story btw.
Yes, I’m not a fan of them just now as you can probably imagine.