Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

emailsender

E-mail sending yuno. It speaks native SMTPS (implicit TLS, RFC 8314) and queues outgoing messages with TimeRanger2 persistence so they survive transient SMTP outages and yuno restarts. Builds fully static since 7.4.3.

Architecture

C_EMAILSENDER          <- queueing, retry, dead-letter, MIME encoding
    > C_SMTP_SESSION   <- SMTP client FSM (banner/EHLO/AUTH/MAIL/RCPT/DATA)
        > C_TCP        <- smtps://host:465 (implicit TLS from byte zero)

Configuration

Effective config is the usual merge of main.c fixed/variable config with the external JSON; inspect it at runtime with ycommand command-yuno id=<id> service=__yuno__ command=view-config.

AttributeDefaultPurpose
url(required)SMTP server, e.g. smtps://ssl0.ovh.net:465
from(required)Default envelope/From address
from_beautiful""Optional display name for the From header
username / password""AUTH PLAIN credentials (empty → skip AUTH)
timeout_dequeue10ms between queue polls
max_retries4Max total send attempts before dead-lettering
disable_alarm_emailsfalseDrop “ALERT Queuing” alarm emails
tranger_path / tranger_databaseTimeRanger2 store location
topic_emails_queueemails_queuePending-queue topic
topic_emails_failedemails_failedDead-letter topic
backup_queue_size1000000Backup the queue topic at this size

C_SMTP_SESSION adds timeout_response (default 30000 ms) — the per-command watchdog while waiting for a server reply.

Commands

CommandParametersDescription
send-emailto, subject, body, reply-to, attachment, inline_file_id, is_htmlEnqueue an email. to/cc/bcc accept comma- or semicolon-separated lists; recipients are deduplicated.
enable-alarm-emailsRe-enable alarm emails
disable-alarm-emailsSuppress “ALERT Queuing” alarm emails
helpcmd, levelCommand help

Other yunos send mail by publishing EV_SEND_EMAIL to the emailsender service (e.g. logcenter’s summary report).

Delivery semantics

Outgoing messages are held in the persistent emails_queue and are never dropped while waiting:

Every outcome is logged: a warning per retry, an error when a message is moved to the dead-letter queue, and an info line on success.

Debugging

Trace levels (enable with ycommand command-yuno id=<id> service=__yuno__ command=set-gclass-trace gclass=<G> set=1 level=<L>):

GClassLevelShows
C_EMAILSENDERmessagesThe MIME message dispatched to the SMTP child
C_SMTP_SESSIONsmtpSMTP FSM phases — commands sent (>>>) and reply codes (<<<)
C_SMTP_SESSIONtrafficRaw bytes in/out (hex dump)