(Replace this first paragraph with a brief description of your new category. This guidance will appear in the category selection area, so try to keep it below 200 characters.)
Use the following paragraphs for a longer description, or to establish category guidelines or rules:
Why should people use this category? What is it for?
How exactly is this different than the other categories we already have?
What should topics in this category generally contain?
Do we need this category? Can we merge with another category, or subcategory?
I'll check inside the running mail mirror rather than answer from memory:
The mail mirror is one small Alpine container (nc_app_mailmirror) running three pieces. I checked this in the running container and its source.
Incoming (reading): IMAP
Pulling from the provider: isync (mbsync) 1.5.1. It fetches each mirrored account from the provider over IMAP (for 88.io: mail.88.io:993, SSL) on the account's schedule, every 15 minutes for owner, and stores a copy.
Serving the copy: Dovecot 2.4.1, with its built-in full-text search (fts-flatcurve), on IMAP port 143. Tachyon and the Memory Agent's mail search read from it.
Outgoing (sending): the mirror's own code, not a mail server. There's no Postfix or Exim.
The relay is part of mirror.py (Python 3.12, relay_serve), a small SMTP listener on port 587 inside Docker.
Login: it requires AUTH PLAIN or LOGIN, checked against Dovecot's login files (users, and users-agent for the agent's own login). Without a login it answers 530.
Choosing the account: it picks the account the From address belongs to.
Sending: it passes the message straight on with Python's smtplib, through that account's own SMTP server. For 88.io that's mail.88.io:465 over SSL, logged in as 61481826938@88.io.
One thing to know about sending: the relay has no queue. It forwards while Tachyon waits. If mail.88.io is unreachable, Tachyon gets a temporary error (451) straight away. Nothing is stored or retried later.
The fourth port, 23000, is mirror.py's control API, which the Memory Agent uses to tell it which accounts to mirror.