Exchange 2013 Reporting Challenge

There is an application in the environment that sends out a thousand messages each month via SMTP on a scheduled date and time.  I have been asked to verify that every message has arrived and been processed successfully by the Exchange servers (the SMTP server has, in the past, encountered issues forwarding mail).

Is there a log file on the Exchange servers somewhere that contains metadata information that I can query via PowerShell?

I don't want to check every mailbox in the environment to see if it contains a specifically worded message, since that message can be deleted by the recipient upon arrival -- not to mention the time and resource utilization that would be required.  

Any thoughts or suggestions on how to make this happen?
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Adam the 32-bit AardvarkSoftware DeveloperCommented:
You can use Get-MessageTrackingLog to check if all messages sent from the specified address have been delivered. The article Message tracking logs in Exchange Server will give you an idea on how to get the results you need.
In short, you can see if there are any messages sent from a certain address which have not been delivered using the following cmdlet:
Get-MessageTrackingLog -ResultSize unlimited -Sender <the-email-address> -EventId Fail

Open in new window

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
alopez2Author Commented:
Very nice PowerShell command.  Thank you.

Is there a way to get a list of the users who received a specific message?  

Something to the effect of:

Get-MessageTrackingLog -ResultSize unllimited -Sender <name of sender here> -SubjectContains <Some text here that's in the subject line> -EventID <Success, or something to the effect, to get successful deliveries>
alopez2Author Commented:
You're got me real close, CodeTwo.

By removing the Event ID parameter, I can get a list of all the messages that were sent from the specified sender.

Is there a way to only retrieve messages with specific words in the Subject?  Or to specify the date range to pull the messages from?

Than you!  I'll keep looking to see if I can answer my own question.  Will post for other's future reference if I do find the correct syntax.
alopez2Author Commented:
Found it!  Thank you for getting me going in the right direction CodeTwo.

The syntax, which includes start and end date and time, is here:
alopez2Author Commented:
Great work.  Thanks.
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today

From novice to tech pro — start learning today.