Tracking messages received by SMTP collected via IMAP

  1. Home
  2. Knowledge Base
  3. GMS
  4. Tracking messages received by SMTP collected via IMAP

Question

A user has complained that they have not received an e-mail that they have been expecting.
Having interrogated the SMTP log, I have determined that the message was indeed successfully written to the users Inbox. Whilst this is enough evidence for me, the user persist that they have not seen the message.
Is there anyway of proving that the message was retrieved by the IMAP mail client?

Answer

Firstly it’s likely that the mail client will record a suitable amount of logging in its logs so you may want to explore this first?

If you happen to have Message Logging enabled which is configured at "Mail > Logs > Domain Save " you can search for the content of any message that has come through your server. This file is located under your Gordano file structure on the server, under your domain/meslog folder. The mailbox will be in the format of "mmYYMMDD"
Next you will need a decent text editor and will need useful search criteria such as the senders e-mail address, the intended recipient etc… Once you have successfully located the message from the message log that the user claims not to have received, you’re half way there.
Look for the "Message-Id" in the message headers as this is the message’s unique identifier and may be something you can use to search the IMAP log.

The final part to this investigation depends whether you have full logging enabled for the IMAP server but also on the commands issued by the mail client.
Search the IMAP log for the Message ID. If you find a match, then you potentially have something to work from.
If you can’t spot an obvious error surrounding this text, this may be enough for you to further backup your case.
Alternatively seek confirmation from Gordano Support.

The extract below shows Outlook Express issuing a fairly standard command requesting the headers of a particular message. Here we can see the Message ID is referenced on the last line.

UID FETCH 1:* (BODY.PEEK[HEADER.FIELDS] ENVELOPE)

The server responds with:

IMAP Dec 2006 11:03:43.828 P 06709 10 Processing command 24 (5)
IMAP Dec 2006 11:03:43.828 A 06392 10 * 1 FETCH (BODY[HEADER.FIELDS] {2}
IMAP Dec 2006 11:03:43.828 A 06392 10  ENVELOPE ({31}
IMAP Dec 2006 11:03:43.828 A 06392 10 Tue, Dec 2006 10:44:28 -0000 NIL (({7}
IMAP Dec 2006 11:03:43.828 A 06392 10 Test User NIL {4}
IMAP Dec 2006 11:03:43.828 A 06392 10 imap {8}
IMAP Dec 2006 11:03:43.828 A 06392 10 testdomain.dom)) (({7}
IMAP Dec 2006 11:03:43.828 A 06392 10 Test User NIL {4}
IMAP Dec 2006 11:03:43.828 A 06392 10 imap {8}
IMAP Dec 2006 11:03:43.828 A 06392 10 testdomain.dom)) (({7}
IMAP Dec 2006 11:03:43.828 A 06392 10 Test User NIL {4}
IMAP Dec 2006 11:03:43.828 A 06392 10 imap {8}
IMAP Dec 2006 11:03:43.828 A 06392 10 testdomain.dom)) ((NIL NIL {4}
IMAP Dec 2006 11:03:43.828 A 06392 10 imap {8}
IMAP Dec 2006 11:03:43.828 A 06392 10 testdomain.dom)) NIL NIL NIL {44}
IMAP Dec 2006 11:03:43.828 A 06392 10 <123456789123456789@machinename>) UID 1011)

Another common mail client command is:

UID FETCH 1:* (FLAGS BODY[HEADER.FIELDS (DATE FROM TO)])

Here, the server is sending back to the client information requested such as the DATE, FROM and TO address which may prove extremely useful in your quest should the Message ID not be present.

IMAP Dec 2006 11:18:01.218 P 06709 10 Processing command 24 (5)
IMAP Dec 2006 11:18:01.218 A 06392 10 * 1 FETCH (BODY[HEADER.FIELDS (DATE FROM TO)] {95}
IMAP Dec 2006 11:18:01.218 A 06392 10 DATE: Tue, Dec 2006 10:44:28 -0000
IMAP Dec 2006 11:18:01.218 A 06392 10 FROM: "Test User" <testuser@testdomain.dom>
IMAP Dec 2006 11:18:01.218 A 06392 10 TO: <testuser@testdomain.dom>
IMAP Dec 2006 11:18:01.218 A 06392 10  UID 1011)

Ensure that you have server side IMAP logging set to full. This is configured at Mail > Logs > Transaction Level.

Keywords:mail client imap smtp log outlook express message delivered retrieved

Was this article helpful?

Related Articles