How to read Exim mail logs on the server?

LitaR

New member
Registered
Joined
Oct 14, 2024
Messages
6
Points
1
Hello everyone!
Could you please tell me if I'm understanding the analysis of mail logs on Exim-based servers correctly?
I use two main log files:
  • /var/log/exim_mainlog — incoming and outgoing messages
  • /var/log/maillog — IMAP/POP3 mailbox connections (handled by dovecot)
I see that Exim marks log entries with flags (<=, =>, **, ==, etc.) that indicate the delivery status. To view the full trace of a message, I first search for the mailbox I'm interested in, get the message ID (for example, 1kPNom-0007xj-FA), and then search by that ID to see its full path.
I've put together two examples — one successful and one unsuccessful — but I want to make sure I'm interpreting them correctly:
  • Successful: the message arrived, was placed in the queue, and saved to the virtual mailbox.
  • Unsuccessful: LMTP returns a defer due to quota or limit being exceeded.
Does this logic look correct? Are there any other nuances I should pay attention to when reviewing Exim logs?
 

anjalischmitt

New member
Registered
Joined
Jun 21, 2025
Messages
9
Points
1
In my case i usually check /var/log/exim_mainlog and use grep to search for specific email addresses or errors. Works fine most of the time but i am still learning how to read bounce messages properly.
 

TheCompWiz

Well-known member
Registered
Joined
Apr 20, 2016
Messages
132
Points
18
TheCompWiz
i am still learning how to read bounce messages properly
The bounce reason sits on the ** line itself, right after the recipient address, and it is usually the remote server's own SMTP reply copied word for word. A 550 or 554 there means the far side refused it and nothing on your box will change that. A defer mentioning quota or mailbox full is local and yours to fix.

Grepping the address alone will miss half the trail, because Exim only prints the recipient on the accept and delivery lines, not on every retry. Take the message ID from that first hit and grep the ID instead, then you get the full path including the retries.
 

ITivan80

Well-known member
Registered
Joined
Jul 16, 2018
Messages
125
Points
18
Reading Exim mail logs on a Linux server (cPanel, WHM, or standard Exim installation) is straightforward once you know where the logs are stored and how to filter them.
 

TheCompWiz

Well-known member
Registered
Joined
Apr 20, 2016
Messages
132
Points
18
Your reading is right. The flags are the fastest way in: <= is the message being accepted into the queue, => is a successful delivery, -> is an extra recipient delivered over the same connection, == is a temporary defer that will be retried, and ** is a permanent failure that generates a bounce.

Two files that get forgotten are /var/log/exim_rejectlog and /var/log/exim_paniclog. Anything refused at SMTP time lands in rejectlog and never gets a message ID at all, so it will never show up in mainlog the way you are expecting. Paniclog should normally be empty, and anything in it is a config or permissions problem on your side rather than a mail problem. Have you tried exim -Mvl on a single message ID? It pulls just that message's lines without grepping the whole file.
 
Newer Threads
Replies
2
Views
1,708
Replies
0
Views
2,154
Replies
0
Views
834

Latest Hosting OffersNew Reviews

Sponsors

Tag Cloud

You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an alternative browser.

Top