{% extends "baseTemplate/index.html" %} {% load static %} {% comment %} Email debugger. The point of this page is to turn "my email doesn't work" into a support ticket someone can close. Every check reports the evidence it based its verdict on, so the result can be pasted into a ticket and acted on by a person who was not sitting at the panel. "unknown" is deliberately a separate state from "failed": a DNS timeout is not a misconfiguration, and reporting it as one sends the operator chasing a problem that may not exist. {% endcomment %} {% block title %}Email debugger{% endblock %} {% block content %}

Email debugger

Everything that has to be true for mail to reach this server and leave it again, checked against live DNS and this machine — with the evidence for each verdict.

{% if not domains %}
There are no domains available to you yet.
{% else %}
Server {{ serverIP }}
HELO {{ panelHostname }}
{$ report.summary.pass $} passed {$ report.summary.fail $} failed {$ report.summary.warn $} need attention {$ report.summary.unknown $} could not be determined Checked {$ checkedAt $}

{$ check.label $}

{$ line $}

Send a test message

Hands one message to Postfix on this server the same way a script on the box would, and shows the entire SMTP conversation plus what happened to the message afterwards. The sender must be a real mailbox on the domain.

Use an address at a large provider — their Authentication-Results header tells you what they made of your SPF, DKIM and DMARC.
Postfix accepted the message and queued it as {$ test.queueId $}. It is still in the queue (: {$ test.queued.reason $}), which means delivery has not completed yet. It is no longer in the queue, so this server has handed it on.
{$ line $}

Mail log

The last lines of the server's mail log that mention @{$ domain $}. Other tenants' traffic is filtered out.

Nothing in the last {{ defaultLogLines }} matching lines. Either no mail has moved for this domain recently, or the log has already rotated.
{$ line $}
{% endif %}
{% endblock %} {% block styles %} {% endblock %} {% block scripts %} {% endblock %}