Mail Log (EN)

Logs every email your Joomla website sends — with trigger, recipient and delivery status · Version 1.5.0 · Stand 27.10.2026

Mail Log at a glance

Mail Log records every email your Joomla website sends through the Joomla mailer. For each message you see who triggered it, whom it went to, whether delivery succeeded and — depending on the settings — the full content. Failed deliveries are recorded just like successful ones. That gives you a complete record of what your website actually sent.

Mail Log is a pure administrator extension for Joomla 6 and produces no output in the frontend whatsoever.

The screenshots in this manual were taken on a German Joomla installation. The extension follows the language of your installation, so the labels appear in English on an English backend.

The dashboard of Mail Log with key figures and an activity chart
The dashboard sums up the mail volume: total, today's and weekly figures, error rates, an activity chart as well as the latest mails and errors.

What you use Mail Log for

Privacy is built in, not bolted on

A mail log inevitably stores potentially sensitive content. Mail Log is therefore frugal with the data out of the box:

By default only a short excerpt of the message text is stored, no full body and no raw MIME message.

What Mail Log consists of

The package installs three extensions that belong together:

How to read on

If you are starting out, this order works best:

  1. Requirements and installation
  2. Download key and updates
  3. Quick start: the dashboard
  4. The log list
  5. Looking at an entry
  6. Body storage, encryption and sensitive content

Applies to version 1.5.0.

Deutsche Fassung

Requirements and installation

Mail Log is installed as one package that deploys the component and both plugins together. This page lists the requirements and describes what is active after the installation.

Requirements

Joomla6.0 or newer
PHP8.3 or newer
DatabaseMySQL 8.0.13+ or MariaDB 10.4+
PHP extensionsodium (for the optional encryption; present by default in PHP 8.3)

Installation

  1. Download the package pkg_maillog-<version>.zip.
  2. In the backend, open System → Install → Extensions and drag the ZIP file into the Upload Package File area.
  3. After the upload, Mail Log is installed. You find it in the menu under Components → Mail Log.

There is a single ZIP file to install — the package contains the component and both plugins. Do not install the individual parts separately.

The panel after installing Mail Log, with version, status and the cards Getting started, Enable updates and Help
This panel greets you after the installation. It names the installed version and leads to the three things now due: the first test mail, the download key for updates, and the manual. After an update, the changelog takes the place of "Getting started".

What is active after the installation

So that Mail Log records from the start, the installation enables the system plugin automatically. From that moment on every mail sent is captured — you do not have to switch anything else on.

The task plugin is enabled as well but does nothing on its own. Its maintenance tasks only run once you set them up in the Joomla task scheduler (see the chapter Maintenance: scheduled tasks).

A first check

To verify that everything works, send a test email via System → Global Configuration → Server → Send Test Mail. Then open Components → Mail Log: the test message should appear as the most recent entry in the list.

What is created in the database

The installation creates four tables (entries, recipients, daily statistics and a small table for throttling notifications). Uninstalling removes these tables and their data again. Captured attachment files in the protected directory are kept, however, so that uninstalling by accident destroys no evidence — delete that folder by hand if you need to.

Applies to version 1.5.0.

Deutsche Fassung

Free version and Pro version

Mail Log comes in two versions: the Free version and the Pro version. Both are built from the same source and are updated the same way — they differ only in which features are unlocked.

The split follows one sentence: What was sent? is answered by the Free version. Does it arrive? is answered by the Pro version.

What each version does

FeatureFree versionPro version
Logging of every sent e-mail, including a complete outage of the outgoing mail serveryesyes
Dashboard, log list, detail view, Message-IDyesyes
Resending, CSV export, raw message downloadyesyes
Encryption, masking, retention rules, log and display rulesyesyes
Notification when delivery failsyesyes
Domain health: status panel on the dashboardyesyes
Automatic retrying of failed sends—yes
Backup send route: a second way out when the first one fails—yes
Rule-based send routes: particular messages over a different server—yes
Periodic report by e-mail—yes
Second alert channel over a web address—yes
Domain health: what to do about each finding—yes
Domain health: several domains—yes
Domain health: alert when a check starts failing—yes
Return channel: fetch and sort bounce reports—yes
Suppression list: dead addresses are no longer written to—yes
Undeliverable rate on the dashboard, badge in the log list—yes
DMARC evaluation: who sends in your name, and whether it gets through—yes
DMARC: judge the sources, trend, share on the dashboard and in the report—yes
Take DKIM selectors from the reports and check them too—yes
DKIM signing: sign outgoing mail with a key of your own—yes
GDPR information and erasure through Joomla's privacy administration—yes

The Free version is not cut down by the existence of the Pro version. Everything you use in the Free version today stays exactly as it is — the Pro version only adds.

How to tell which version you have

The dashboard of the Free version with the note about Mail Log Pro above the key figures

Open Mail Log → Queue. If you see a list, you have the Pro version. If you see a short explanation of what the queue does instead, the Free version is installed.

Moving from the Free version to the Pro version

  1. Download the Pro version from your customer account on graup-it.de.
  2. In Joomla, upload the package file under System → Install extensions.
  3. That is all. Joomla recognises the existing installation and updates it — your logs, settings and permissions are kept in full.

The update source is switched over automatically, so from then on you receive updates of the Pro version. Your download key stays the same.

The Queue tab in the Free version: the fields are visible but greyed out and cannot be used

Back to the Free version

The way back works the same: install the Free version over the Pro version and it becomes the Free version again. Your log entries are kept in full.

What happens to the features of the Pro version:

One exception: the privacy plugin stays installed and active. When you move down, Joomla does not remove parts that no longer belong to the new package. GDPR information and erasure requests therefore keep covering the mail log.

That is left as it is on purpose: a privacy feature that switches itself off quietly leaves a gap nobody notices — and that gap is exactly what it was built against. If you do want it gone, uninstall the Privacy – Mail Log plugin by hand in the extension manager.

Deutsche Fassung

Download key and updates

Mail Log receives updates through the official Joomla update mechanism. To allow your website to fetch them, enter your personal download key once.

Entering the download key

  1. Create your download key in your customer account on graup-it.de (menu item Download IDs). One key applies per website and covers all extensions obtained through it.
  2. In the backend, open System → Update → Update Sites.
  3. Open the entry Mail Log Update Site and enter the key into the field Download Key.
  4. Save.
The update sites with the field for the download key
In the update sites you enter the download key at the Mail Log update site.

Make sure to paste the key without leading or trailing spaces. A space copied along with it makes the update fail with an error message ("URL rejected" or "Package download failed").

Installing updates

  1. Open System → Update → Extensions.
  2. If a new version is available, Mail Log appears in the list. Select it and click Update.
  3. Joomla downloads the package using your download key, verifies the checksum and installs the new version.

If Joomla finds no update although a new version exists, click Check for Updates first to refresh the cache.

The manual route

You can also install any version by hand: download the ZIP and install it via System → Install → Extensions, just like the first installation. An update through the package overwrites the existing installation and keeps your settings and log data.

Applies to version 1.5.0.

Two versions, two update sources

Mail Log comes as a Free version and as a Pro version. Both need a download key, but they take their updates from different sources. Joomla switches this over by itself as soon as you move from one to the other — there is nothing to enter and nothing to change by hand.

Your key stays the same either way. Which version you are running, and how to switch, is covered under Free version and Pro version.

Deutsche Fassung

Quick start: the dashboard

Mail Log works immediately after the installation. This page shows how to produce the first entry and how to read the dashboard properly.

Producing the first entry

Send any email through your website — easiest is the built-in test email under System → Global Configuration → Server → Send Test Mail. Then open Components → Mail Log. The message appears as the most recent entry.

Reading the dashboard

The dashboard of Mail Log with four key figures, chart and lists
The dashboard is the start page of Mail Log.

At the top there are four key figures:

TileMeaning
Emails in totalAll logged mails, broken down into sent and failed.
TodayMails of the current day with error rate.
Last 7 daysWeekly figure with error rate.
Last 30 daysMonthly figure with error rate.

Below them follow:

If the chart does not render (with JavaScript switched off, for instance), Mail Log shows the same figures as a table automatically. No information is lost.

Where to go from here

Mail Log has three working screens: Dashboard, Logs and Queue. Each of them carries the way to the other two at the top left — you do not need the Joomla menu on the left, which is often collapsed anyway.

Alongside them are the screens that belong to one subject: Domain health, Bounces and Suppression list. They are offered where they are needed — on the dashboard and next to each other. The Joomla menu on the left always reaches them.

On the right of the toolbar, every screen of the extension carries the Options button, provided you may change the settings. Adjusting a threshold while standing on the suppression list needs no navigating back.

Logs takes you to the complete list. There you filter and search all entries — that is described in the chapter The log list.

Applies to version 1.5.0.

Deutsche Fassung

The log list

The log list shows all logged mails. You reach it through the menu item Mail Log in the sidebar or via Open logs on the dashboard.

The log list with search bar, filters and result table
The log list with the filter options opened.

The columns

ColumnContent
StatusSent, failed or skipped. For errors a tooltip shows the error message.
TimeTime of sending.
SenderThe sender address.
RecipientThe first recipient; further ones are shown as "+n".
SubjectThe subject line. Icons indicate attachments and resent mails.
SourceThe extension that triggered the sending, where recognised (com_users, for example).
ActionsView the entry and — with the corresponding permission — resend it.

A yellow demo marker identifies test entries you created yourself (see below).

In the Pro version a second badge appears below the status when a bounce came back for that message — Permanently undeliverable or Complaint, for instance. It sits next to the send status, not in its place: "Sent" is still correct, because the message did leave the mail server. What happened afterwards is a second fact. The chapter Return channel explains it.

Searching and filtering

Via Filter options you open the filter bar:

SearchSearches subject, sender, recipient, source and the reference ID.
StatusSent only, failed only or all.
PeriodQuick selection (today, 7/30/90 days) or your own from/to date.
Sender contains / recipient containsFree-text partial matches on the addresses.
Source extensionRestrict to one triggering extension.
ContextFrontend, backend, CLI or API — depending on where the mail originated.
BounceOnly messages that received a bounce report (Pro version).

The column headers status, time, sender, subject and source are sortable. The page size is set at the foot of the list.

Several entries at once

Use the checkboxes to mark several entries and then apply a toolbar action — Resend or Delete (each requiring the matching permission). Both actions ask for confirmation first.

Exporting

The button Export CSV outputs the currently filtered list as a CSV file — completely, not just the page displayed. The body content is deliberately not included in the export; details under Permissions, export and privacy.

Demo data for trying things out

With the permission manage demo data you create realistic-looking test entries through the toolbar, to try out the list, the dashboard and the detail view. All demo entries carry the demo marker and can be removed again with one click.

The dialogue for creating demo data
The demo dialogue: set the number, period and error rate of the test entries.

Applies to version 1.5.0.

Deutsche Fassung

Looking at an entry

Clicking an entry — on the time, the subject or the view button — opens the detail view with everything recorded about that mail.

The detail view of a log entry with metadata on the left and content tabs on the right
The metadata on the left, the content in several tabs on the right.

The metadata

The left column sums up what is known about the mail:

The content tabs

TabContent
HTMLThe HTML text, shown in an isolated preview (more on this below).
TextThe plain text version of the message.
HeadersThe custom headers of the message.
Raw MIMEThe exact RFC822 message, if storing it is enabled.
Attachments (n)The captured attachments with name, type and size, ready to download.

The HTML text is displayed in an isolated frame (sandbox): scripts in the mail HTML are not executed, and the content cannot influence the backend. That way you can look at foreign messages safely.

When there is no text

Depending on the settings, the body is deliberately not stored or stored only in part. In those cases a notice explains why:

Reading the bodies requires the permission view mail content. Without it you see the metadata but not the text.

Downloading

With the permission download attachments and .eml you download the raw message as an .eml file through the toolbar (to open it in a mail client) as well as individual attachments from the tab of the same name.

The sending chain

If a mail was resent, Mail Log links the new entry to the original one. The detail view shows this chain, so you can trace which sending came from which.

Applies to version 1.5.0.

Deutsche Fassung

Resending a mail

Mail Log can deliver a logged message again. That is useful when a mail got lost, ended up in spam or went to the wrong address. Resending uses the stored content and goes through the normal Joomla mailer — a new log entry is created.

How to resend

The resend area in the detail view with a field for an alternative address
In the detail view you can optionally give a different recipient address.

To a different address

In the detail view you can enter an alternative recipient address. If it is set, the mail goes to that one address only; the original recipients are ignored. If the field stays empty, subject, text and attachments go to the original recipients.

Resending requires the permission resend mails. Every resend creates a log entry of its own that refers back to the original.

When resending is not possible

So that nothing unexpected happens, Mail Log refuses to resend in some cases with a clear message:

Protection against misuse

Two limits prevent accidental mass sending and misuse:

Both values are deliberately fixed, so that a compromised account cannot misuse Mail Log as a spam cannon.

Applies to version 1.5.0.

Deutsche Fassung

Body storage, encryption and sensitive content

How much of the message text Mail Log stores is up to you. This page explains the storage modes, the encryption and the special treatment of sensitive mails. All settings are found in the options under the tabs body storage, raw MIME and sensitive content.

Changes to the storage mode only affect new entries. Mails already stored stay as they are.

The storage modes for the body

The options tab body storage
In the Content tab, the Message body section controls how much of the text is kept.
ModeWhat is stored
Metadata + first N KB
(default)
Only the first kilobytes of the text. Enough for an impression without storing long messages in full. You set the size with body size to keep (KB) (default 4 KB).
Full bodyThe complete text in plain.
Full, encryptedThe complete text, encrypted in the database (see below).
Full, deleted automatically after N daysThe complete text, but the maintenance task removes it again after the configured period and keeps the metadata only.
Metadata onlyNo text at all — only sender, recipient, subject, status and time.

In addition, maximum body size (KB) limits every text as a global safety ceiling; larger bodies are truncated and marked as truncated in the detail view.

Raw MIME

Independently of the body mode, the Content tab, section Complete message, lets you store the exact RFC822 message as it was sent. That allows clean .eml downloads for an audit. Because the raw MIME contains the complete plain text, this option is switched off out of the box. It can be encrypted as well.

Encryption

The options tab sensitive content
The Sensitive content section with the subject and masking patterns.

Mail Log protects encrypted bodies and MIME messages with a modern method (AES-256-GCM or XChaCha20-Poly1305). What matters is where the key comes from:

The key is derived from the Joomla secret (in your configuration.php) and is not held in the database. An attacker who captures only the database therefore cannot decrypt the content.

The flip side: if you change the Joomla secret, previously encrypted entries can no longer be read. The secret is part of the core of your Joomla installation that needs protecting anyway — treat it accordingly.

The field encryption key in the options is, as of this version, purely a status display. You do not have to enter or generate anything. If it shows a "legacy key", it comes from an earlier version; the maintenance task migrate legacy-encrypted bodies converts such entries to the new method and removes the legacy key afterwards by itself.

Sensitive mails

Some mails should never end up in the log in plain text — password resets, confirmation links, one-time codes. Mail Log recognises them by the subject line and treats them separately.

The Content tab, section Sensitive content, holds two pattern lists for this (one regular expression per line) and one policy:

Subject patternsIf the subject matches one of the patterns, the mail counts as sensitive. Out of the box there are patterns for password, passwort, reset, token, 2fa, verify and verifizier.
Handling of sensitive mailsMetadata only (default, no body, no attachments), log normally or do not log at all.
Body masking patternsAdditional patterns whose matches are replaced by *** in the stored text — token=… or key=…, for example.

With the default settings a password reset link therefore does not end up in the log, without you having to set anything up.

Applies to version 1.5.0.

Deutsche Fassung

Attachments

On request Mail Log keeps the attachments of sent mails, so that you can later trace exactly what was sent. The settings for this are in the options, tab Content, section Attachments.

How attachments are captured

If capture attachments is active, Mail Log copies every attachment into a protected directory while sending and records it in the log entry. In the detail view the attachments appear in the tab attachments with name, type and size and can be downloaded individually (the permission download attachments and .eml being required).

Where attachments live — outside the web root

Out of the box, attachments are stored outside the publicly reachable area (in the Joomla log directory under com_maillog/attachments). They are therefore not retrievable directly through a URL, but only through the component with a permission check.

With storage path you can set a location of your own. If the field stays empty, the safe default path applies. For additional protection Mail Log places lock files (.htaccess, web.config) in the attachment directory.

Coming from a very early version? Earlier builds stored attachments inside the web root. After the update Mail Log still points at the old location so that nothing is lost. The maintenance task move attachment files moves the files to the safe default location once and clears the old reference afterwards.

Limits and storage budget

OptionDefaultMeaning
Capture attachmentsYesCopy attachments to disk while sending.
Storage pathempty (= safe default)Where the attachments are kept.
Max. per file (MB)10Larger attachments are skipped; their metadata (name, type, size) still stays in the log.
Total storage budget (MB)500Once the budget is used up, new attachments are no longer copied until the next cleanup.

Cleaning up

How long attachment files are kept is controlled by attachment retention (days) in the tab Logging, section Retention (default 30 days). The maintenance task clean up attachment files removes older files and those whose log entry has already been deleted. How to set up this task is described in the chapter Maintenance: scheduled tasks.

Safety of file names

Mail Log sanitises every attachment file name before storing it and defuses potentially executable extensions (.php, for instance) by appending .bin. Together with the storage location outside the web root, this rules out an attachment being executed on the server.

Applies to version 1.5.0.

Deutsche Fassung

Log rules and display rules

Mail Log has two kinds of rules that are easy to confuse but do very different things. Both are found in the options.

Log rules decide which mails are stored at all.
Display rules only decide which stored mails appear in the list.

Log rules: what is never stored in the first place

The options tab log rules with mode and rule table
Log rules filter before anything is stored.

Log rules take effect before anything is written to the database. That keeps uninteresting bulk mail out of the log — noisy notifications from a particular service, for instance. What a log rule excludes never becomes an entry.

Two settings determine the behaviour:

ModeExclude matches — matching mails are NOT logged. Include matches only — ONLY matching mails are logged, everything else is discarded.
MatchWhether a mail has to satisfy all rules (AND) or any of them (OR).

Display rules: what is hidden in the list

Display rules take effect after storing. Matching entries are merely hidden in the list and on the dashboard — nothing is deleted. Change the rule and the entries reappear. Useful for tidying up an overloaded view without losing data.

How a rule is put together

Both rule types are built from the same parts. Every rule checks a field with an operator against a value:

FieldSubject, body, recipient or sender.
Operatorcontains, does not contain, equals, does not equal, starts with, ends with — for display rules additionally is empty / is not empty.
ValueThe text to compare against.

Examples

The mode include matches only for log rules is sharp: everything that does not match is not logged. Use it deliberately and check afterwards that the mails you want still reach the log.

Applies to version 1.5.0.

Deutsche Fassung

Notifications when delivery fails

Mail Log can warn you actively when a delivery fails — so you learn about a mail problem without having to keep looking into the log. The settings are in the options in the tab notifications.

This is part of the Free version. The e-mail alert and the Joomla private message exist in both versions — they were part of Mail Log from the start and stay that way. What the Pro version adds in the same tab are two things: the extra route through a webhook (see Alert channel) and the periodic report.

The options tab notifications
The Notifications section in the Alerts tab.

Enabling and choosing recipients

OptionDefaultMeaning
Enable notificationsNoMain switch. Off by default.
Notify super adminsYesSend to all super users who have enabled receive system emails in their profile.
Additional recipientsemptyFurther addresses, one per line or separated by commas.
Also as a Joomla private messageNoAdditionally files the alert as an internal message (com_messages) for every super user.

Not too many messages: the throttle

So that a run of failures (a mail server that has gone down, say) does not flood you with hundreds of warnings, Mail Log combines alerts.

With throttle window (minutes) (default 30) you set the minimum gap between two alerts. Further errors within that window are counted but trigger no further message. So you get a warning, not an avalanche.

No loop

The warning mail itself is not treated as a new error when it is sent — Mail Log deliberately prevents one notification from triggering another. That way no alert loop can arise.

Recommendation

On production sites it is worth switching notifications on and keeping at least the super admins as recipients. That way you notice a delivery outage within minutes instead of at the next customer complaint.

Applies to version 1.5.0.

Deutsche Fassung

Configuration reference

All settings are reached through the Options button at the top right of every Mail Log view. This page lists every option with its default. Some areas are described in more detail in chapters of their own; here you find the complete overview.

The defaults are deliberately frugal with data and suitable for most websites. Especially in the areas body storage and sensitive content, change only what you have understood.

Where to find what

The options screen has seven tabs. The areas described on this page are sections inside those tabs — so you will not find them in the tab bar at the top, but below it.

TabSections inside
LoggingBasic settings, Log rules, Retention
ContentMessage body, Complete message, Attachments, Sensitive content
PresentationDisplay rules, Dashboard
DeliveryQueue, Backup route, Send routes Pro version
AlertsNotifications, Report
Domain health—
Permissions—

Basic settings

OptionDefaultMeaning
Enable loggingYesMain switch. Off = no new entries; existing ones stay accessible.
Log failed mailsYesAlso record mails the mailer reports as not sent.
Log contextsFrontend, backend, CLI, APIWhere logging happens. The four areas can be chosen independently.
Detect source extensionYesDetermines the triggering extension (best effort). Switching it off saves a minimal amount of work per mail.

Body storage

OptionDefaultMeaning
Storage modeMetadata + first N KBHow much text is kept (see the chapter Body storage, encryption and sensitive content). Affects new entries only.
Body retention (days)30Only with "full, deleted automatically": after this period the task removes the text.
Body size to keep (KB)4Only with "metadata + first N KB": how many kilobytes from the start are stored.
Maximum body size (KB)1024Global ceiling. Larger bodies are truncated and marked.
Encryption key—Purely a status display. The key is derived from the Joomla secret; there is nothing to enter.

Raw MIME

Store raw MIMENoKeep the exact RFC822 message (for clean .eml downloads). Off out of the box for privacy reasons.
Encrypt raw MIMENoApply the same encryption as for bodies to the MIME message.

Attachments

Capture attachmentsYesCopy every attachment to disk while sending.
Storage pathempty (= safe default outside the web root)Where the attachments are kept.
Max. per file (MB)10Larger attachments are skipped; the metadata remains.
Total storage budget (MB)500When exceeded, new attachments are skipped until the next cleanup.

Sensitive content

Handling of sensitive mailsMetadata onlyHow mails matching the subject patterns are treated: metadata only, normally, or not logged at all.
Subject patterns/password/i, /passwort/i, /reset/i, /token/i, /2fa/i, /verify/i, /verifizier/iOne regular expression per line. If the subject matches, the mail counts as sensitive.
Body masking patterns/token=…/, /key=…/Matches are replaced by *** in the stored body.

Retention

Entry retention (days)180Older entries are removed by the task "clean up logs". 0 = no age-based cleanup.
Maximum number of entries0 (off)FIFO ceiling: the oldest entries are removed as soon as the limit is exceeded.
Attachment retention (days)30Older attachment files are removed by the attachment cleanup task.

Display rules

MatchAll (AND)Whether a row has to satisfy all or any of the rules to be hidden.
RulesemptyHide matching entries from the list and the statistics without deleting them. See the chapter Log rules and display rules.

Log rules

MatchAny (OR)Whether a mail has to match all or any of the rules.
ModeExclude matchesExclude matches, or include matches only.
RulesemptyDecide before storing which mails are logged at all.

Notifications

Enable notificationsNoWarn when a delivery fails.
Notify super adminsYesTo super users with system emails enabled.
Additional recipientsemptyFurther addresses.
Throttle window (minutes)30Minimum gap between two alerts.
Also as a Joomla private messageNoFile the alert internally (com_messages) as well.

Dashboard

Statistics modeLiveLive calculates from the entries on every view. Task uses pre-aggregated daily figures maintained by the statistics task — faster with very many entries.
Default periodLast 30 daysPreset period of the chart.
Show latest mails10How many entries the dashboard lists show.

Permissions

The standard Joomla tab. Which action needs which permission is described in the chapter Permissions, export and privacy.

Applies to version 1.5.0.

Deutsche Fassung

Maintenance: scheduled tasks

Mail Log comes with maintenance tasks that run through the Joomla task scheduler. They keep the database lean, maintain the statistics and carry out one-off conversions. None of these tasks runs by itself — you set them up in the task scheduler.

Setting up a task

  1. Open System → Manage → Scheduled Tasks and click New.
  2. In the selection dialogue, choose one of the Mail Log task types (see the table).
  3. Give it a name, set the interval under execution rules (daily, for example) and save.
  4. Enable the task. For scheduled tasks to actually run, the Joomla scheduler has to be triggered — by a website visit (the default) or by a real cron job.
The selection dialogue for new scheduled tasks with the Mail Log task types
The Mail Log task types in the task scheduler.

The task types

TaskPurpose
Clean up old log entriesDeletes entries older than the configured retention and enforces the maximum number of entries (FIFO). Batched, so that even large tables are processed gently.
Clean up attachment filesRemoves orphaned attachment files (whose entry was deleted) and files older than the attachment retention.
Update daily statisticsMaintains the pre-aggregated daily figures for the dashboard. Only needed if you have set the statistics mode to task.
Clean up old mail bodiesResets the text of old entries and keeps only the metadata. Only effective with the storage mode "full, deleted automatically after N days".
Migrate legacy-encrypted bodiesA one-off conversion: re-encrypts entries from an earlier version to the current method and removes the old key once nothing depends on it any more. Run it until no legacy entries are reported.
Move attachment filesA one-off conversion: moves attachments from an old storage location (inside the web root) to the safe default location. Run it until no files are left.

Recommendation for regular operation

For most websites two daily tasks are enough:

The two migration tasks (migrate legacy-encrypted bodies, move attachment files) are only needed if you updated from a very early version. Once the migration is done you can disable or delete them. Update daily statistics and clean up old mail bodies only make sense with the matching settings.

All cleanup tasks work in blocks and with clear upper limits, so that they do not overload the server even with very large data sets.

Applies to version 1.5.0.

Deutsche Fassung

Permissions, export and privacy

Mail Log stores potentially sensitive communication data. This page sums up who may do what, what is exported and which data is stored at all.

Permissions

You assign the permissions as with every Joomla component under Options → Permissions per user group. Mail Log deliberately separates viewing from reading the content:

PermissionAllows
View Mail LogOpen the dashboard and the list — the metadata, but not necessarily the message texts.
View mail contentRead the full bodies (HTML, text, MIME). Granted separately because bodies can contain sensitive data.
Download attachments and .emlDownload attached files and the raw message.
Resend mailsDeliver logged mails again.
Delete entriesRemove log entries.
Manage demo dataCreate and delete test entries.

Every action checks its permission server-side — it is not just the interface hiding buttons. So an action cannot be forced through a direct call either. An editor with "view Mail Log" but without "view mail content" sees the list but no texts.

Recommendation: grant view mail content and download attachments and .eml sparingly — ideally only to the people who actually investigate delivery problems.

Export

The button Export CSV in the list outputs the currently filtered selection as a CSV file. The export contains ID, time, status, sender, recipient, subject, source, context and the error message — but not the message text. Whoever needs bodies opens the entry or downloads the .eml file (with the corresponding permissions).

Free-text fields are prepared in the CSV so that spreadsheet programs do not interpret them as a formula by accident. The export can therefore be opened safely in Excel or LibreOffice.

Which data is stored

Per mail, Mail Log stores sender and recipients, subject, time and status, the context as well as — where available — the IP address and the user ID of whoever triggered it. How much of the text is kept is up to you through the storage mode; out of the box that is a short excerpt only, and sensitive mails are stored with metadata only.

Privacy notes for operation

All data stays on your server — Mail Log contacts no external services.

Applies to version 1.5.0.

Deutsche Fassung

Common questions and troubleshooting

Answers to common questions and the quickest routes to fixing things.

No mails are logged at all

If hooking into the mailer ever fails (after a major Joomla update, say), Mail Log reports that in the backend with a warning and writes it to the Joomla log — so you notice it instead of quietly getting no more entries.

I see the list but no message texts

To read the bodies you need the permission view mail content — it is deliberately separate from merely viewing. Have it assigned to your group under Options → Permissions.

An entry shows "metadata only" instead of text

That is usually intentional: the mail was classified as sensitive (a password reset, for example) and therefore stored without a body. Alternatively the default mode stores only a short excerpt. You control both in the options under body storage and sensitive content — changes affect new entries.

"Resend" is not possible

If the mail was stored with metadata only or truncated, the full text is missing and the mail cannot be reconstructed. For encrypted bodies the Joomla secret must be unchanged. If the message was about a waiting time: there are 30 seconds between two sendings of the same mail, and at most 20 repetitions are possible.

The update is not found or fails

Encrypted entries have suddenly become unreadable

The key is derived from the Joomla secret (in configuration.php). If that was changed, previously encrypted bodies can no longer be decrypted. The secret should only be changed deliberately and with care.

The database is growing a lot

Set up the task clean up old log entries and set an entry retention (default 180 days) or a maximum number of entries. Also store only as much body as you really need — the default "metadata + excerpt" is frugal already.

Where are the attachments?

Out of the box outside the publicly reachable area, in the Joomla log directory under com_maillog/attachments. They are reachable only through the component with a permission check, not by a direct URL.

What happens when uninstalling?

The four database tables with all log data are removed. Attachment files already captured stay in the protected directory, so that uninstalling by accident destroys no evidence — delete that folder by hand if you need to.

Applies to version 1.5.0.

Deutsche Fassung

Domain health

Whether your e-mail arrives is often decided not in Joomla but in the DNS of your domain. If the usual records are missing there, large providers treat your messages as suspicious — they land in the spam folder or are rejected outright, and nobody tells you.

Mail Log checks those records for you and shows the result as a status strip on the dashboard. That strip answers one question — is something broken right now? — and for that it names the check and what it says, nothing more. Everything else lives on its own Domain health screen, which you reach from the strip, from the button at the top of the dashboard, or through Components → Mail Log → Domain health.

The domain health screen

The screen has two areas, and they are visibly separated:

What the cards at the top hold is where the two versions differ:

On the screenFree versionPro version
Which check, and whether it is fineyesyes
An explanation of what SPF, DKIM, DMARC and MX areyesyes
What is actually in DNS — the record itself, the closing rule, the policy, the key length, the MX servers—yes
The finding in plain words—yes
What to do about it — in plain words: which record goes where and what belongs in it. The parts only your provider knows, you fill in yourself—yes
Where such a record goes and which three fields to fill in—yes

So the Free version tells you that something is wrong and where. What to enter is what the Pro version adds.

The domain health screen in the Pro version: per check the DNS record, the finding and what to do about it
The Pro version shows, for each check, the record, the finding and what to do.
The same screen in the Free version: only the four status lights and an explanation of the terms
In the Free version you see which check is failing — and what the four terms mean.

What is checked

Setting it up

The check is on by default and runs once the first time you open the dashboard. So you see a result straight away, without setting anything up. Two steps are still worth taking:

  1. Pro version: if you use the DMARC evaluation, this step is usually unnecessary — the reports name the selectors actually used for signing, and Mail Log checks them on its own. See the chapter DMARC.
  2. Enter your DKIM selectors — in the Options, tab Domain health, one per line. Without them DKIM cannot be checked; selectors cannot be guessed. Your mail provider knows them; they are often called default, mail or s1.
  3. In the Scheduler, create the task Mail Log: check domain health. Once a day is enough. Without it you are left with that single result from the first visit.

The Check now button in the dashboard status strip runs a check immediately — handy right after you have changed a DNS record.

The domain checked is the sender address from the Joomla configuration. To check a different domain, enter it in the same tab.

The four things it can say

Shown asMeaning
FineThe record is present and coherent.
Not set upThere is no such record at all. Something has to be created — with the provider your domain sits with.
BrokenThe record is there but wrong. Something that already exists has to be corrected. Both are red, because both affect your delivery today — the difference is whether you create something or change something.
Please checkIt works but is not ideal — or something is missing without that necessarily being wrong. The mailbox (MX) is the typical case: a send-only domain without an MX record is allowed, but it cannot receive replies.
UnknownThe question could not be answered — for instance because your server does not allow DNS lookups, or the name service did not respond.

Unknown is not a failure. Mail Log deliberately tells "the record is missing" apart from "I could not look". Before reporting anything as broken it checks that your domain is reachable over DNS at all. If it is not, the last known result stays, rather than showing a red light that means nothing.

Who sets these records up?

Neither Joomla nor Mail Log. The four entries live in your domain's DNS — that is, wherever you rent the domain. Usually that is your host, but it can be a different provider, for instance when the domain is registered somewhere other than the site runs.

How you get there differs from provider to provider. With some you create the records yourself in the customer area (often under DNS, DNS management or Name servers), others offer ready-made switches for SPF and DKIM, and with others again only the support desk can do it. If you get stuck: write to your provider's support and tell them which record you need. It is an everyday request, and most of them do it the same day.

The same note, together with the links to the standards, is on the Domain health screen itself, in the lower Background reading area.

Privacy

Every check runs as a DNS lookup from your own server. No data is sent to checking services, reputation providers or any other third party, and no access key is needed.

Some providers switch DNS lookups off on shared servers. In that case Mail Log honestly reports Unknown rather than guessing. The task logs will tell you whether that is the reason.

In the Pro version

Pro version. This feature is part of the Pro version of Mail Log. What the Free version does is covered under Free version and Pro version.

The Free version tells you that something is wrong. The Pro version adds:

Deutsche Fassung

Queue: retrying failed sends (Pro)

Pro version. This feature is part of the Pro version of Mail Log. What the Free version does is covered under Free version and Pro version.

When sending an e-mail fails, the Free version leaves it there until somebody re-sends it by hand. The Pro version does that for you: it puts the message in a queue and tries again by itself.

The queue with three waiting messages, showing status, attempt counter, next attempt and the last message from the mail server

How often and how quickly

The wait doubles with every attempt. At the default of 15 minutes that is 15 minutes, 30 minutes, 1 hour and 2 hours — four attempts spread over three and a half hours. That covers the vast majority of outages without pressing a server that is already struggling.

Not every failure is worth repeating

Mail Log tells apart what the mail server reported:

Kind of failureWhat happens
Server unreachable, timeout, temporary rejection Retried.
Authentication rejected Retried, and the failure is noted in the task log — a wrong password does not fix itself.
Address does not exist, message rejected for good Not retried. The message is marked as given up.

That is not a detail: an address that does not exist will not start existing. Writing to it four times anyway only costs time and, over the long run, damages your domain's standing with recipients.

Switching it on

  1. In the Options, open the Queue tab and switch on Retry automatically.
  2. In the Scheduler, create the task Mail Log: work through the queue. Every 5 to 15 minutes is a sensible interval.

Without the task nothing happens. The queue fills up but is never worked through. If you see waiting messages and nothing moves, that is almost always the reason.

The screen

Under Mail Log → Queue you see what is pending: status, subject, how many attempts have been made, when the next one is due, and what the mail server last reported. The subject links to the original log entry.

StatusMeaning
WaitingThe next attempt is still to come.
SendingA run is working on it right now.
DeliveredA retry succeeded.
Given upAll attempts are used up, or the failure was permanent.
CancelledStopped by hand.

Queue again gives a message that was given up another chance — for instance after you have fixed the cause. Cancel stops a waiting message without deleting it.

Retrying only certain messages

With no rules, every failed message is queued. With rules you narrow that down — say order confirmations but not contact form forwards. The rules work like the log and display rules: pick a field, enter a text, and decide whether one or all of the rules must match.

Limits

Deutsche Fassung

GDPR information and erasure (Pro)

Pro version. This feature is part of the Pro version of Mail Log. What the Free version does is covered under Free version and Pro version.

A mail log is a collection of personal data: addresses, subject lines, often content too. When somebody asks under Article 15 of the GDPR what you hold about them, or demands erasure under Article 17, the log is part of the answer — and it is the part people routinely forget.

The Pro version closes that gap, and it does so where you already work: in Joomla's own privacy administration.

Why there is no screen of its own

Joomla already has the workflow: under Users → Privacy you file a request, the person confirms it, and every extension contributes its share. Mail Log hooks into that. A second, separate screen would mean you had to remember that Mail Log is not covered by the process you already use — and the one you forget is the one that makes the answer incomplete.

A confirmed information request in Joomla privacy administration, with the buttons Export data and Email data export

How to do it

  1. Under Users → Privacy → Requests, create a request: enter the e-mail address and choose Export or Remove as the type.
  2. Have the request confirmed, or mark it as confirmed.
  3. Run Export data or Remove data. Mail Log contributes its share automatically.

The address comes from the request, not from a user account. That matters here: the people a website writes to are mostly not registered users — contact form senders, customers, recipients of a notification. For exactly those people, a lookup keyed on a user account would find nothing.

What the export contains

For every message the address appears in: time, subject, delivery status and any error message, the role the address had (sender, To, Cc, Bcc), what triggered the message, the number of recipients and attachments, and the Message-ID.

The message body — and why it is not always included

If the person asking was the only recipient, the body is included. If there were further recipients, it is withheld, and the export says so.

That is not convenience: a message to three people is personal data of all three. Handing it to one of them at the press of a button would be a data protection breach — caused by a data protection feature. You can always release the text by hand after reviewing it.

What removal does

It deletes the affected log entries, and their attachments from disk with them. It does not anonymise them.

That is deliberate. Blanking the address while the subject line still reads "Your order, Mr Schmidt" looks like erasure and is not. Do expect the record of messages to third parties to go too, if the person asking was on the same message.

Limits worth knowing

Deutsche Fassung

The periodic report (Pro)

Pro version. This feature is part of the Pro version of Mail Log. What the Free version does is covered under Free version and Pro version.

The dashboard answers the question "is mail still working?" — but only when somebody looks. The report turns that round: it arrives on its own, at a fixed interval, by e-mail.

What is in it

The subject line already carries the verdict: whether everything is fine, how many messages could not be delivered, or that your sender domain needs a look. A subject line that always reads the same does not get opened.

The Report tab in the options, with period, recipients and the question about quiet periods

Switching it on

  1. In the Options, open the Report tab and switch on Send the report.
  2. Choose the period: 24 hours, 7 days or 30 days.
  3. Enter the recipients, one address per line. Left empty, reports go to the same addresses as the failure alerts.
  4. In the Scheduler, create the task Mail Log: send report.

Interval and period have to match. A 7-day report running daily repeats almost the same figures every day; a 24-hour report running weekly misses six days. Set the task's execution rule to the same interval as the period you chose.

Quiet periods

If nothing was sent and nothing is wrong, no report is sent by default. An all-clear that looks the same every week stops being read after the third one — and so does the fourth, which had something to say.

If you want the sign of life anyway, switch on Send even when nothing happened. A failing DNS record triggers a report even in a quiet period, by the way — that is precisely when it is news.

What the report does not contain

No message bodies, no recipient addresses, no attachments. The report is plain text and holds nothing but figures, extension names and server messages.

That is deliberate: it is the only thing this extension sends out of its own accord. A report that needed guarding as carefully as the log it summarises would have missed its point.

Deutsche Fassung

Backup send route (Pro)

Pro version. This feature is part of the Pro version of Mail Log. What the Free version does is covered under Free version and Pro version.

The queue catches failed sends and tries again later. For an order confirmation, that is the right answer. For a password reset e-mail it is far too late: anyone still waiting after fifteen minutes has long since called support.

The backup route is the answer to that. When a send fails, the same message goes out over a second outgoing mail server straight away — in the same page request, with no waiting period.

The Backup route tab in the options, with server, port, encryption and credentials

Setting it up

  1. In Options, open the Backup route tab and switch on Use a backup route.
  2. Choose the kind: a second outgoing mail server, or the server's own PHP function.
  3. For a second server, enter server, port, encryption and — where needed — user name and password.
  4. If the second provider insists on a sender address registered with them, enter it under Different sender address. Otherwise leave the field empty.

The password is stored encrypted and never shown again. Leave the field empty when you save the next time and the stored password stays as it is; to change it, enter a new one.

Testing the connection

Below the credentials sits the Test the connection button. It checks the values currently in the form — so you do not have to save first in order to find out that something is wrong.

Which second route to pick

A second outgoing mail server is the better choice. It should be with a different provider than the first — two accounts with the same provider go down together, and that is exactly what the backup route is meant to protect against.

The server's own PHP function needs no credentials and is therefore set up in a minute. It does get through less often, though: many recipients treat mail sent directly by a web server as unwanted. Better than nothing as a last resort, not something to rely on permanently.

When the backup route does not try

Only for failures another server could fix as well — the outgoing server cannot be reached, the connection drops, the server is overloaded, the sign-in is refused.

For permanent rejections it stays out of it: an address that does not exist does not exist on the second route either, and a rejected message is rejected there too. Two rejections instead of one only damage the reputation of your sender domain.

A backup route with a user name but no readable password is not used. That is the case when the password was never entered, or when the security key of your Joomla installation changed after it was saved. Enter the password again in that case.

What the log shows afterwards

Two entries: the failed attempt over the normal route, and the successful one over the backup route. That is deliberate. A single entry saying "delivered" would hide the fact that the first route went down — and that is precisely the information you run this extension for.

When such pairs start piling up, check the first outgoing server. The backup route is a safeguard, not a repair.

Working together with the queue

The backup route comes first. If the message goes out over it, it has been delivered and is not queued as well. If it fails too, the queue takes over as usual and tries again later — over the normal route.

Together, the two are the complete safeguard: the backup route for what has to go out now, the queue for everything that can wait.

Deutsche Fassung

Second alert channel (Pro)

Pro version. This feature is part of the Pro version of Mail Log. What the Free version does is covered under Free version and Pro version.

Mail Log reports a failed send by e-mail. That is a circle: the one message that matters has to go out over the very route that is not working.

The second alert channel gets around it. The message leaves your site over an ordinary web address and arrives where you are looking anyway: a chat room, an alerting service, or a small script of your own. None of them care whether your mail server is up.

The Alerts tab in the options, with the second alert channel, address and format

Setting it up

  1. In Options, open the Alerts tab.
  2. Switch on Use a second alert channel.
  3. Enter the address your service gives you. Only http and https; anything else is refused.
  4. Choose the format — see below. When in doubt, use Generic.

The e-mail notification is untouched by this. You can run both side by side, or leave the e-mail recipients empty and rely on the second channel alone.

Which format

What is transmitted

Exactly what the alert e-mail contains: the name of the site, the subject of the failed message, the sender, the recipient addresses, the time, the mail server's message and the reference of the log entry. Nothing more.

The recipient addresses leave your site in the process. If your chat service is hosted by someone else, those addresses travel there. That is a decision for you to make — check that it fits your record of processing activities. The message body is never transmitted.

When the channel does not answer

Nothing further happens. If the address cannot be reached, answers too slowly or refuses, that one alert is lost and the event goes into the Joomla log. The page request carries on as normal — after five seconds at most, there is no more waiting.

That is deliberate: the channel speaks up at a moment when something is broken already. It must not turn that into a second fault.

How often it reports

The second channel keeps to the same throttle as the e-mail: within the window you set there is one message, further failures are counted but not reported one by one. A mail server that is down gets you one notification, not four hundred.

Deutsche Fassung

Send routes (Pro)

Pro version. This feature is part of the Pro version of Mail Log. What the Free version does is covered under Free version and Pro version.

Read this before you switch anything on. Mail Log watches your mail and does not interfere. The queue and the backup route only act once a delivery has already failed. Send routes are the one exception: here Mail Log changes a send that would otherwise have run perfectly normally.

That is deliberate, and it is off by default. If you switch it on, it is on you that the accounts you enter actually work — a route set up wrongly costs you the delivery of exactly the messages you assigned to it.

Every rule row has its own Test the connection button. It works exactly like the one described in the Backup send route chapter: it checks that row's values, no test mail is sent, and an empty password box means "unchanged".

What it is for

An order confirmation and a newsletter have nothing in common but the technology. Send both over the same outgoing server and they share its reputation: complaints about the newsletter hit the password reset, and sooner or later that lands in the spam folder.

Send routes keep them apart. You define a rule — "everything to @bigcustomer.com", say, or "subject contains Newsletter" — together with the server those messages should take. Everything else keeps to the usual way.

The Send routes tab in the options, with one rule and the credentials of the second server

Setting it up

  1. In Options, open the Send routes tab and switch on Use send routes.
  2. Add a row: field (subject, sender or recipient), comparison and value — the same vocabulary as the log rules.
  3. In the same row, enter the outgoing mail server, plus port, encryption and, where needed, credentials.
  4. If the provider insists on a sender address registered with them, enter it under Different sender address.

Which rule applies

The first one that matches — top to bottom. The search stops there. So order your rows from the specific to the general: the exception at the top, the broad rule below it.

If no rule matches, the message goes the ordinary way. The same holds for rows without a server and for accounts whose password can no longer be read — after the security key of your Joomla installation was changed, for instance. A rule failing costs you the special treatment, never the delivery.

What a route does not change

Nothing about the message itself: not the subject, not the content, not a single recipient. Only server, port, encryption, credentials and — if you enter one — the envelope sender address are changed. A rule therefore cannot affect what the reader receives.

Working with the other features

Deutsche Fassung

Return channel: what comes back when a mail does not arrive (Pro)

Pro version. This feature belongs to the Pro version of Mail Log. What the free version can do is described under Free version and Pro version.

An e-mail your mail server has accepted is not yet delivered. The recipient's server only checks afterwards whether the address exists at all and whether it wants the message. If it refuses, it sends a report back — to the mailbox of your sender address. As a rule, nobody reads it there.

That mailbox is what the Pro version fetches. It sorts what it finds, matches every report to the message it belongs to and draws conclusions from it — see the chapter Suppression list.

The Bounces screen with four entries: permanently undeliverable, temporary, complaint and automatic reply, each with a status code and the reason given by the remote server

What Mail Log tells apart

KindWhat is behind itConsequence
Permanently undeliverable The address does not exist, the mailbox was deleted. Status codes of the form 5.x.x. The address is suppressed immediately.
Temporary Mailbox full, server briefly unreachable, greylisting. Codes of the form 4.x.x. Counted. Suppressed only once a threshold is reached.
Complaint Someone marked your mail as spam and their provider reports it back. The address is suppressed immediately.
Automatic reply Out-of-office notice or similar. Not an error, just information. None.
Not classified A report that could not be identified with confidence. None. It stays in the list so that somebody can look at it.

The last row is deliberate. A report Mail Log does not understand is not proof of anything — deriving a suppression from it would shut out genuine recipients as soon as some unrelated mail lands in the box.

Setting up the mailbox

Open Options → Return channel → Mailbox.

The Return channel tab in the options with the fields for access method, server, port, encryption, credentials and the Test the connection button

Collect from mailboxThe main switch. Off by default.
Access methodPOP3 collects the messages, IMAP leaves them in place and remembers what it has already examined. When in doubt, POP3.
Server and PortYour provider's incoming mail server. 995 for POP3 and 993 for IMAP are usual, both fully encrypted.
EncryptionThroughout (TLS) wherever the provider offers it. Without encryption your credentials travel the network in the clear.
CredentialsBy default Same as for sending: Mail Log logs in with the same details Joomla sends with (System → Global Configuration → Server → Mail). Then there is only one password to maintain — see below. For a separate mailbox choose Separate ones for this mailbox; only then do the next two fields appear.
User name and PasswordOnly with separate credentials. Usually the full address of the mailbox. The password is stored encrypted and never shown again; leave the box empty and the stored password stays as it is.
FolderIMAP only. INBOX is the inbox. Write subfolders the way the server names them, not the way your mail program shows them: depending on the server the delimiter is a dot or a slash, subfolders of the inbox often start with INBOX., and upper and lower case matter (except for INBOX). What your mail program calls Archive/DMARC may be INBOX.Archive.DMARC on the server. Accented letters can be entered as they are. When in doubt, use Test the connection: if the folder does not exist, the test lists the ones that do.
After collectingWhat happens to a processed report: delete, keep or move to a folder. Only IMAP mailboxes can move. The Target folder has to exist in the mailbox already and is written like the Folder field.
Maximum per runHow many messages one run collects. A mailbox with thousands of old reports would otherwise run into the time limit and start from the beginning next time.
Collection intervalHow often collection happens. Mail Log creates the matching task in the task scheduler when you save — see below.
StateNot a field but a statement: whether collection is really running, when it last ran and when it is due again.

Why the credentials are not entered twice. Whoever sends through a provider usually collects there too: the same account, the same password, only a different server and a different protocol. Typed in a second time it is mostly a source of error — at the next password change you update one place and forget the other, and collection fails silently.

So by default Mail Log uses the sending credentials and stores no second password at all. Server, port and encryption remain separate fields, because those genuinely differ: smtp.example.net:587 for sending, pop.example.net:995 for collecting. Guessing them would be convenient and wrong.

If your site does not send over SMTP but through PHP mail or Sendmail, there is nothing to take over. The connection test says so and points to the separate fields.

Under Evaluation there is also Store the full report. With it switched on, Mail Log keeps the incoming report as it arrived — useful when a report was not recognised properly. A bounce report carries the original message with it, so it is encrypted exactly like the raw copy of an outgoing message as soon as you switch on encryption in the Complete message section.

How does the remote server know where to reply?

From the message itself — not from the visible From, but from the envelope sender. Every e-mail carries two sender addresses: the one in the letterhead, which you and your recipients see, and the one on the envelope, which is negotiated between the mail servers only. Bounce reports always go to the envelope sender. In the report that comes back it appears as Return-Path.

Joomla sets both to the same address: the sender e-mail from System → Global Configuration → Server → Mail. Nothing has to be configured for the reports to arrive — they land in the mailbox of your sender address. That is the mailbox you enter above.

One exception worth knowing: many mail providers replace the envelope sender with the account your site authenticates as when sending. The reports then arrive there and not at your sender address.

How to find out for certain: have your site send you a mail and look at the Return-Path header in the copy you receive — the mailbox of that address is the right one.

Why Mail Log does not suggest a separate bounce mailbox. A mailbox used only for reports would be nicer: Mail Log could tidy up in it without ever touching your customers' mail. That would require the envelope sender to differ from the visible From — and Joomla has no setting for it. Simply changing the sender address to bounce@… would be the wrong way round: that address would then appear on every mail your site sends, and anyone replying would be writing to the bin.

If your provider replaces the envelope sender anyway (see above), you already have the separate mailbox — it is the one belonging to the sending account.

Checking that the credentials are right

Below the fields there is Test the connection. The button tries the values currently in the form — saved or not. It checks the connection, the encryption, the login and, with IMAP, the folder — and the target folder too when After collecting is set to Move to a folder. It also reports how many messages are in the mailbox: a zero where there should be hundreds usually means the wrong mailbox is configured.

If either folder does not exist on the server, the test says so and lists the folders that do, together with the server's delimiter — for example Delimiter “.” — Folders: INBOX, INBOX.Archive.DMARC, INBOX.Sent …. Take the right name from there. With a great many folders the first 60 are shown and the rest as a number.

Nothing is fetched, read or deleted during the test.

How often collection happens

Collection only happens when a scheduled task triggers it — Joomla fetches nothing by itself. Mail Log takes care of that: as soon as you switch collection on and save, it creates the task Mail Log: collect delivery reports in the task scheduler, with the interval you chose under Collection interval. Change the interval and the task follows on the next save. Switch collection off and the task is disabled — it is never deleted, your settings stay.

The State box below tells you where you stand at any time. It distinguishes the four cases that otherwise all look the same — namely, like nothing:

There is no task yetIt is created on the next save.
The task is switched offIt is switched on again on the next save.
The task scheduler does not runNo scheduled task has ever run on this site. This is the one obstacle Mail Log cannot clear by itself — see below.
Everything is in placeWith interval, last run and next run.

The task scheduler has to run. Joomla does not execute scheduled tasks on its own — it needs either a cron call on the server or the Lazy Scheduler setting, which lets tasks run along with site visits. If the task is there and still nothing happens, this is almost always why. How execution is set up can be seen under System → Scheduled Tasks.

Two buttons sit below the state:

You keep the last word. The task Mail Log creates carries a note saying that Mail Log maintains it. Remove that note and the task is yours: Mail Log then changes neither its interval nor its state and only reports on it. That way you can, for instance, enter a cron expression the drop-down does not offer.

The Bounces screen

Under Mail Log → Bounces you see what came back: time, kind, recipient, status code, the remote server's reason in its own words and the matched message. Below the recipient stands the refusing server, where it was named; a red Suppressed shows that the address is already on the suppression list.

You can filter by kind, period and free text; the search covers recipient, subject, reason, status code and message ID.

Two buttons sit below the list:

Export CSV in the toolbar downloads every bounce the current filter shows — not just the current page. Per row: time (UTC), kind, recipient, status code, reason, refusing server, subject, message ID, the matched log entry and whether the address is suppressed. The read permission is enough for this.

How a report is matched to its message

Mail Log tries two ways, in this order:

  1. By message ID. Proper bounce reports include the header of the original message, and that carries its Message-ID. Mail Log has recorded that identifier since version 1.1.0 — this is an equality, not a guess.
  2. By recipient and time window. If the remote server does not include the identifier, Mail Log looks for the most recent message to the same address within the configured window (Options → Return channel → Evaluation, seven days by default).

The second way can get it wrong — which is why it is the second, and why a report would rather stay unmatched: it then appears in the list marked Not matched. That is more honest than a wrong match nobody will ever notice. A larger window raises the hit rate and the number of wrong matches alike.

Reports that are not matched still count. They arise, for example, when the original log entry has since been removed by the retention policy, or when the message went out before Mail Log was installed.

In the log and on the dashboard

As a rule of thumb: below one per cent is unremarkable, above two per cent you should look at your recipient list. What matters more than the rate, though, is its make-up — a handful of complaints weighs more than a lot of full mailboxes.

What happens to mail that is not a bounce report

Nothing. It is read, not recognised and left in place — not deleted, not moved, not marked as read, not even when “After collecting” is set to Delete. The task log counts it separately, for instance “12 read, 3 processed, 9 left alone”.

But it is only looked at once. Mail Log remembers which messages it has already examined and skips them on the next run without even fetching them. It uses the protocol's permanent identifiers for that (UIDL with POP3, the UID with IMAP) — nothing about the message itself is changed.

Whether a message is marked as read makes no difference. If the mailbox is also open in a mail program, a bounce or DMARC report is often marked as read there before the fetch runs. With IMAP, Mail Log therefore examines everything unread plus everything from the last 30 days, read or not; POP3 has no read flag, so only the memory counts there anyway.

One exception is not remembered: a report whose attachment could not be unpacked in this run. It stays in place and the next run tries again. The log counts such messages separately (“… to retry”) and gives the reason below.

Why this matters. Without that memory every run would read the same foreign mail again and use up the maximum per run. In a mailbox that also holds ordinary mail this would eventually mean: every run collects a hundred foreign messages and never reaches the reports behind them — with no error and a green state.

The list is kept in step rather than piling up: whatever is no longer in the mailbox is forgotten on the next run. Change the mailbox and it starts over.

If your server cannot do UIDL — rare, as the command is optional in the standard — collection works as before and looks at every message on every run. A mailbox used only for reports is the better choice then.

Limits

The same mailbox carries something else

This mailbox receives more than bounce messages: the daily DMARC reports arrive here too — if you point them here. Mail Log sorts out which is which while collecting; anything that is neither is left untouched. How to switch the reports on and what they say is explained in the chapter DMARC.

Deutsche Fassung

Suppression list (Pro)

Pro version. This feature belongs to the Pro version of Mail Log. What the free version can do is described under Free version and Pro version.

The suppression list holds the addresses that should no longer be written to. It grows out of the reports Mail Log fetches — see the chapter Return channel.

Why it exists

Keep writing to addresses that demonstrably do not exist and you damage your own standing with the receiving server. Large providers read a high undeliverable rate as the mark of a sender who does not maintain their list — and then downgrade the mail to your valid recipients too. It ends up in the spam folder, or is refused outright.

The suppression list is therefore not a convenience but deliverability protection: it protects the mail to everybody else.

The suppression list with two suppressed addresses, reason, number of events, time and note, above it the form for adding an address by hand

When an address gets on it

ReasonWhen
Permanently undeliverable Immediately, the first time. An address that does not exist will not start to.
Complaint Immediately. Someone who marked your mail as spam does not want it — a second attempt makes things worse, not better.
Unreachable too often Only once a threshold is reached. A full mailbox is often empty again the next day.
Added by hand When you do it — via the form at the top or straight from a bounce report.

You set the threshold under Options → Return channel → Evaluation: Suppress after … temporary failures and the period for that. Only what falls inside that window is counted — an address that was unreachable three times two years ago is not a case today.

A further event does not overwrite the reason. An address suppressed because of a complaint stays suppressed for that reason, even if a temporary failure comes in afterwards. The events counter still goes up.

What a suppression does

Mail Log refuses to resend to a suppressed address — both through the button in the detail view and through the queue. The error message names the address concerned, so that you know which one to release if you want to. To and Cc are checked; a blind copy is not something the recipient sees anyway.

A suppression does not stop Joomla's own sending. If somebody registers again with a suppressed address, or a newsletter tool adds it back, the mail goes out — Mail Log records it but does not hold it back. The send path belongs to Joomla, and an extension that quietly inserts itself into it would be the wrong place for this.

The suppression list is therefore a statement about which addresses are dead. What follows from it is your decision — usually: remove the address in the source it came from.

Adding and releasing by hand

Under Mail Log → Suppression list:

You can filter by reason and free text (address and note). The events column counts how often the address has come up — a high number on a temporary suppression is a hint that the mailbox was not just briefly full.

Export CSV in the toolbar downloads the list as the filter shows it: address, reason, events, first and last event (UTC) and note — for instance to reconcile the suppressed addresses with a newsletter tool.

Who may do this

Adding and releasing depend on the Manage the suppression list permission (Options → Permissions). Whoever holds it decides who this site still writes to — grant it sparingly. Viewing and exporting the list only need the ordinary read permission; deleting bounces depends on the log's delete permission.

When switching back to the free version

The suppression list stays stored and is merely no longer shown or maintained. Install the Pro version again later and it is there unchanged.

Deutsche Fassung

DMARC: who sends in your name (Pro)

Pro version. This feature belongs to the Pro version of Mail Log. What the Free version does is described under Free version and Pro version.

Every day the large e-mail providers send reports about who has been sending in your name and whether that mail could identify itself as yours. These DMARC reports arrive as compressed XML in a mailbox — which is why in practice nobody ever reads them. Mail Log collects them, unpacks them and answers one question from them: is this still our sending?

What a report answers — and what it does not

A report says: “During the day, 42 messages came from this IP address carrying your domain in the sender. 40 of them could identify themselves, 2 could not.” It does not say whether the mail was read, and it names no recipients and no subjects — an aggregate report contains figures, not messages.

“Identify itself” means: the message either carried a valid DKIM signature of your domain or came from a server your SPF record allows. One of the two is enough. That is why a forwarded message is not a problem: forwarding breaks SPF and leaves the signature intact.

Setting it up: three steps

  1. Set up the return channel. The reports arrive in the same mailbox as the bounce messages. How to enter it is described in the chapter Return channel. Without the mailbox collection nothing arrives.
  2. Publish the report address in DNS. Your DMARC record has a part for this: rua=mailto:…. Here you decide where the reports go — unlike the bounce messages, whose address is dictated by the sending path. Enter the address of the mailbox Mail Log collects from. Domain health shows you the finished record.
  3. Switch the evaluation on. Options → Return channel → DMARC reports → Evaluate reports.

Patience for the first one. Providers send once a day and report on the previous day. After publishing the DNS record it therefore takes up to two days for the first report to arrive — and only if mail was sent from your domain during that time.

The DMARC screen

The DMARC evaluation with four key figures, the trend of the last days, the list of sending servers and the reports that came in

The screen reads from top to bottom as one answer in three stages. At the very top it says when the mailbox was last collected and when that happens next. Collect now picks up new reports straight away, without waiting for the next scheduled run; the page then reloads. The same button is on the Bounces screen and in the options: both read the same mailbox in one run.

The figures

FigureWhat it says
Passing - your own sending The share of your own messages that could identify themselves. This is the one number to keep an eye on. Servers you have marked as foreign do not count — a forger should not drag your share down.
Sorted out - your own sending What the receiver put in the spam folder or rejected of your own mail. This should be zero.
Foreign servers How many messages came from servers you have marked as foreign, and how many of them the receiver sorted out. If that is most of them, your policy is working.
Sending servers How many different servers sent in your name during the period, how many of them are still unjudged, and how many messages the reports describe in total.

The share below which the situation counts as noteworthy is set in the options (Warn below … per cent passing, 95 by default). A hundred per cent is not a sensible value: one single forwarded message breaks it.

If your policy is still set to none, the screen says so in a notice of its own: the receivers then only report and sort nothing out. Once your own sending passes reliably, quarantine is the next step — Domain health shows the finished record.

Over time shows your own sending per day: green for what passed, red for what did not, with volume and share next to it.

Who sends in your name

The second list is the actual work. It shows every server that sent mail carrying your domain, with volume, passing share and — where it can be resolved — its name. Mail Log recognises well known sending services and labels them. The Proof column shows a tick or a cross for DKIM and SPF: passed or not.

Every row gets a verdict from you. How to tell: only a server that is listed in your SPF record or signs with your DKIM key can pass — and only you decide both. If its mail passes completely, it is almost certainly yours. If it fails, the name helps: does it belong to your host, your mail provider or a service you use (newsletter, shop, CRM)? Then it is your sending. If you do not know it, it is foreign.

The Assessment column does the reading for you: for every server it says what the proof suggests, and the obvious button is filled in. The decision stays with you.

VerdictWhat it does
That is us The server counts as your sending and therefore towards the share. If its mail does not pass completely, a notice appears at the top, and the assessment names the missing record — SPF, DKIM or both.
Foreign The server no longer counts towards your share but under Foreign servers. That its mail fails is then a good sign: DMARC recognises the forgery. If it passes anyway, the screen reports it — your SPF record or your key admits this server, and the record is too broad.
Withdraw Open again. Open servers count as your sending until you say otherwise — a failing one should stand out, not disappear.

The verdict is yours and it stays, even once the reports the address came from have long fallen to the retention period.

One of your own services with a red share is the most common find. It almost never means an attack; it means a missing record: the newsletter service is not in your SPF record, or its DKIM key is not published. Mark it with That is us; the assessment then says what is missing, and Domain health shows the finished record to copy.

Servers as CSV in the toolbar downloads this list — every server in the chosen period, not just the first fifty the screen shows. Per row: address, reverse name, recognised service, volume, passed, share in per cent, passed via DKIM and via SPF, verdict (own, foreign, open), assessment and last seen (UTC). One row per server, not per report line: the same source appears again in every daily report.

The reports

Last comes the list of reports that came in: period, reporter, domain, volume, share and the published policy — point at it to read what it does. XML downloads the original document — for the case where a number looks odd and somebody wants to see what the provider actually wrote.

What else Mail Log does with the reports

Retention

Two periods, because these are two different things: the evaluated figures stay for a year by default — that makes the question “was it like this last summer?” answerable. The original document stays for three months; it is rarely needed and only for a short while. After that the report stays in the list, only without its attachment. The clean-up is done by the maintenance routine Clean up old log entries, which runs anyway.

When nothing arrives

The screen tells you why — it distinguishes four cases: the evaluation is off, the mailbox collection is off, there is no scheduled task, or the site's task scheduler never runs at all. If no notice is shown and the screen is still empty, check the rua= part of your DMARC record: does it really point at the mailbox Mail Log collects from?

Reports for other domains. Mail Log stores every report it finds and names the domain it is about in the list. If a domain appears there that is not yours, somebody has entered your address as their report address — annoying, but harmless. The domain filter hides them.

Deutsche Fassung

DKIM signing (Pro)

Pro version. This feature belongs to the Pro version of Mail Log. What the Free version does is described under Free version and Pro version.

A DKIM signature is a seal on your outgoing mail: it lets the receiver check that the message really comes from your domain and was not altered on the way. Mail Log can apply that seal — for installations whose sending path does not do it itself.

First check whether you need this. Most mail providers and all sending services already sign. Look at Domain health: if a DKIM record is found there, somebody is signing — then leave this feature off. Signing twice is allowed, but it gains nothing and makes the next key change error-prone.

The order is the actual feature

Four steps, and they belong in exactly this order:

  1. Generate the key. Options → Delivery → DKIM signing. Mail Log generates an RSA key pair (2048 bits) and stores the private part encrypted, as a file below the log directory — never in the database. More on that under Where the key lives.
  2. Publish the DNS record. Below it, what has to be entered appears: a name like maillog._domainkey.your-domain.com and a long value starting with v=DKIM1; k=rsa; p=…. Type: TXT. You enter that at your domain provider, or forward it to their support.
  3. Have it verified. The button Check publication looks the record up and compares it with the stored key. Only when it says “matches” is everything ready. After publishing, this can take up to a day.
  4. Switch it on. Only now set Sign outgoing messages to Yes.

The DKIM signing section in the options with domain, selector, the generated key, the DNS record to copy and the two buttons

Why not switch it on right away? A signature whose key cannot be found in DNS is worse than none at all: the receiver then sees a failed check instead of no check — and a failed check is exactly the marker spam filters use to recognise forgeries.

The two fields above

FieldWhat belongs there
Domain Leave it empty. Mail Log then takes the domain of the sender address from the Joomla configuration — and that is exactly what the receiver compares against. Entering a different domain produces a valid signature that still does not count for DMARC.
Selector The name the public key is published under in DNS. maillog is the default and does not disturb an existing selector of your provider — several selectors may stand side by side.

Where the key lives

As a file below your Joomla installation's log directory (…/com_maillog/dkim/), readable only by the web server user and encrypted — with the same method as your stored credentials, derived from the secret in your Joomla configuration.

Why encrypted, when the file is protected anyway? Joomla's default log directory is administrator/logs — right inside the web directory. Mail Log puts blocking files there, but those only work on Apache; on an nginx server they do nothing. While checking this version, the key really was retrievable that way on the test instance. Encrypted, it still is — but the content is worthless: without your configuration.php, which no web server hands out, it cannot be deciphered.

If your host allows a log directory outside the web directory, that is still the better setting (System → Global Configuration → Server → Path to Log Folder).

If your Joomla secret is renewed, the DKIM key can no longer be deciphered. Mail Log then stops signing — silently, and without disturbing the sending. Generate a new key in that case and publish the new DNS record.

When moving to another server the file does not travel automatically if you only transfer the database and the web directory. Either generate a new key in the new place and publish the new record — or copy the file along.

Generating a new key

The button is then called Generate a new key, and that is exactly what it does: the old one is gone afterwards. Until the new record is published, every signature fails. The sensible way is therefore a second selector: change the selector (to maillog2, say), generate the key, publish the new record, have it verified — and only then delete the old record.

How you can tell it works

What happens if something is missing? If the key, the domain or the selector is missing, Mail Log does not sign — silently, and the mail goes out as before. A logger must not prevent sending, and that holds for the one feature that reaches into the sending path too.

Deutsche Fassung

Changelog

This changelog lists every released version of Mail Log, the most recent first.

This page is generated automatically from the product's changelog file when a release is made. Changes made by hand are lost at the next synchronisation.

Version 1.5.0 – 27 October 2026

Added

Changed

Fixed

Version 1.4.1 – 23 October 2026

Fixed

Notes

Version 1.4.0 – 4 October 2026

Added

Changed

Fixed

Notes

Version 1.3.0 – 24 September 2026

Added

Fixed

Notes

Version 1.2.0 – 21 September 2026

Added

Fixed

Notes

Version 1.1.1 – 20 September 2026

Fixed

Version 1.1.0 – 20 September 2026

Added

Changed

Fixed

Notes

Version 1.0.5 – 18 September 2026

Fixed

Version 1.0.4 – 12 August 2026

Changed

Fixed

Version 1.0.3 – 1 August 2026

Changed

Version 1.0.2 – 31 July 2026

Added

Changed

Fixed

Version 1.0.1 – 31 July 2026

Added

Language

Version 1.0.0 – 20 July 2026

Added

Deutsche Fassung