Skip to content

Find out whether an email was delivered

The Email log lists every email Hyperion sent from any node: alerts to you, letters to customers, care reports and test sends. It records whether the relay accepted each one and what the relay answered. Use it when a customer says they never received a message.

Mail that a website sends itself, through PHP mail(), is logged separately on that site’s Emails tab.

  • You can view the email log. By default that is an Owner or an Administrator.
  • The relay is set up. Without one the panel sends nothing and the log is empty. See Set up the outgoing mail relay.
  1. Open Email log in the sidebar, under Logs.
  2. Read the line under the title:
    • “N emails failed out of M in the last 24 hours — latest: <error>” in red, when something failed. The line covers the whole window, so narrowing the list never hides a failure.
    • “N emails sent in the last 24 hours, none failed”.
    • “Nothing sent in the last 24 hours · last email <time ago>”.
    • “No email sent yet”.
  3. Type in the search box. It matches the recipient, subject, type, error, the relay’s reply (which carries the queue id), the node and the site’s domain or id. Press Enter.
  4. Choose a type from All email types: Test email, Uptime alert, Disk quota, Billing, Care report, Expiry warning, Alert, Backup, Certificate or Other. Only types present in the window appear.
  5. Click All, Sent or Failed to filter by outcome. The counts follow your search and type.
  6. Click a row to unfold it. It shows:
    • Sent: the time and the node it left from.
    • To: the recipient.
    • Site: a link to the hosting and only this site’s mail, or “None — a cluster-wide email, not about one site”.
    • Error: the full error, when it failed.
    • Relay reply: the relay’s full answer. The first three digits also show on the row.
    • Beginning: the first 200 characters of the message.

Rows are grouped by day: “Today”, “Yesterday”, then by date, in the panel host’s local time. A 250 reply means the relay accepted the message. A 5xx reply means it refused it.

Each node keeps its own log and the page merges them. Hyperion does not prune this log, so entries stay in the node’s database. It asks each node for its most recent 500 emails and shows at most 300 matching rows, so narrow the filter to reach older ones. Only the first 200 characters of a message are stored, so passwords and reset links further down never reach the log.

  1. Open the hosting, then its Emails tab.
  2. Sent by Hyperion about this site lists the last 10 emails the panel sent on behalf of the site: alerts, certificate reminders, monitor down and up, billing notices. It has the columns Sent, Kind, To, Subject, State and SMTP / error. Click Cluster email log for this site → at the top for the full list.
  3. Mail sent by this site lists the site’s own mail() and wp_mail() calls. A wrapper in PHP’s sendmail_path writes each one to /var/lib/hyperion/site-mail/<system user>.jsonl and then forwards it to the real sendmail, so delivery is unaffected. The log rotates at 10 MB and the page shows the latest 50 entries.

A site that sends over SMTP through a plugin such as WP Mail SMTP, Post SMTP or Brevo does not use sendmail_path. This card shows “No outbound mail captured yet” for it, and nothing is broken. The mail does not pass through this server’s sendmail.

Terminal window
sudo hctl mail log --hosting example.com --limit 20

It prints the panel’s email log with each delivery result. The command shows mail the panel itself sent, not mail from a site’s mail().

  • Send a test email (top right of the page) takes you to Settings, Mail. After you send a test there, the log shows a Test email row with state Sent and a relay reply starting 250.
  • The search for the recipient’s address finds the row you expect.
  • “Couldn’t read this node’s email log:” with no such table or email_log: the node’s database has not been updated. Restart the agent on that node with sudo systemctl restart hyperion-agent and reload the page.
  • “No emails sent yet”: nothing has been sent, or the relay is off. Set up the relay and send a test.
  • A row shows Failed with a relay error: open the row, read Error and Relay reply, and check the relay’s credentials and sender address.
  • A list that looks incomplete: a notice titled “Incomplete view.” names nodes whose answer failed authentication, and their entries are left out. Check the node’s connection.