<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Mail client on perch docs</title><link>https://perch.mxraven.com/docs/mail/</link><description>Recent content in Mail client on perch docs</description><generator>Hugo</generator><language>en</language><atom:link href="https://perch.mxraven.com/docs/mail/index.xml" rel="self" type="application/rss+xml"/><item><title>Fetching mail</title><link>https://perch.mxraven.com/docs/mail/fetch/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://perch.mxraven.com/docs/mail/fetch/</guid><description>&lt;p&gt;&lt;code&gt;perch mail fetch&lt;/code&gt; writes raw RFC 5322 messages to stdout, files, an mbox&#10;stream, or a Maildir.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e2e4e5;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#78787e"&gt;# One raw message on stdout.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;perch mail fetch --server imaps://mail.example.com --username you@example.com &lt;span style="color:#5af78e"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --uids &lt;span style="color:#ff9f43"&gt;42&lt;/span&gt; &amp;gt; message.eml&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#78787e"&gt;# An mbox stream for formail, procmail, or archival.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;perch mail fetch --server imaps://mail.example.com --username you@example.com &lt;span style="color:#5af78e"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --query &lt;span style="color:#5af78e"&gt;&amp;#39;from:alice&amp;#39;&lt;/span&gt; --format mbox &amp;gt; alice.mbox&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#78787e"&gt;# One .eml file per message.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;perch mail fetch --server imaps://mail.example.com --username you@example.com &lt;span style="color:#5af78e"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --query &lt;span style="color:#5af78e"&gt;&amp;#39;unseen&amp;#39;&lt;/span&gt; --dest ./messages&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#78787e"&gt;# Maildir, preserving flags.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;perch mail fetch --server imaps://mail.example.com --username you@example.com &lt;span style="color:#5af78e"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --query &lt;span style="color:#5af78e"&gt;&amp;#39;from:alice&amp;#39;&lt;/span&gt; --format maildir --dest ~/Mail&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="formats"&gt;Formats&lt;a class="anchor" href="#formats"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Format&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Destination&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Notes&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;eml&lt;/code&gt; (default)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;stdout for one message, or a directory&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Writes &lt;code&gt;&amp;lt;uid&amp;gt;.eml&lt;/code&gt; per message&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;mbox&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;stdout or a file&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Escapes &lt;code&gt;From &lt;/code&gt; lines and separates messages&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;maildir&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;a Maildir root&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Creates &lt;code&gt;tmp/&lt;/code&gt;, &lt;code&gt;new/&lt;/code&gt;, &lt;code&gt;cur/&lt;/code&gt;; preserves flags&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;&lt;code&gt;--dest&lt;/code&gt; is a directory for &lt;code&gt;eml&lt;/code&gt; and &lt;code&gt;maildir&lt;/code&gt;, and a file for &lt;code&gt;mbox&lt;/code&gt;. Existing&#10;files are not overwritten unless &lt;code&gt;--overwrite&lt;/code&gt; is passed.&lt;/p&gt;</description></item><item><title>Sending mail</title><link>https://perch.mxraven.com/docs/mail/send/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://perch.mxraven.com/docs/mail/send/</guid><description>&lt;p&gt;&lt;code&gt;perch mail send&lt;/code&gt; composes a MIME message and submits it through the SMTP&#10;submission listener.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e2e4e5;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#78787e"&gt;# Simple text message.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;perch mail send --from you@example.com --to alice@example.com &lt;span style="color:#5af78e"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --subject &lt;span style="color:#5af78e"&gt;&amp;#39;Hello&amp;#39;&lt;/span&gt; --body &lt;span style="color:#5af78e"&gt;&amp;#39;Hi Alice&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#78787e"&gt;# Read the body from stdin.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff5c57"&gt;echo&lt;/span&gt; &lt;span style="color:#5af78e"&gt;&amp;#39;Hi Alice&amp;#39;&lt;/span&gt; | perch mail send --from you@example.com &lt;span style="color:#5af78e"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --to alice@example.com --subject &lt;span style="color:#5af78e"&gt;&amp;#39;Hello&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#78787e"&gt;# Attachments, Cc/Bcc, and both text and HTML bodies.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;perch mail send &lt;span style="color:#5af78e"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --from you@example.com &lt;span style="color:#5af78e"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --to &lt;span style="color:#5af78e"&gt;&amp;#39;Alice &amp;lt;alice@example.com&amp;gt;&amp;#39;&lt;/span&gt; &lt;span style="color:#5af78e"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --cc bob@example.net &lt;span style="color:#5af78e"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --bcc audit@example.net &lt;span style="color:#5af78e"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --subject &lt;span style="color:#5af78e"&gt;&amp;#39;Quarterly report&amp;#39;&lt;/span&gt; &lt;span style="color:#5af78e"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --body-file message.txt &lt;span style="color:#5af78e"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --html-file message.html &lt;span style="color:#5af78e"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --attach report.pdf &lt;span style="color:#5af78e"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --attach chart.png&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#78787e"&gt;# Compose and inspect the raw message without sending it.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;perch mail send --from you@example.com --to alice@example.com &lt;span style="color:#5af78e"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --subject &lt;span style="color:#5af78e"&gt;&amp;#39;Draft&amp;#39;&lt;/span&gt; --body &lt;span style="color:#5af78e"&gt;&amp;#39;Hello&amp;#39;&lt;/span&gt; --dry-run &amp;gt; message.eml&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="bodies"&gt;Bodies&lt;a class="anchor" href="#bodies"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;The body is read from &lt;code&gt;--body&lt;/code&gt;, &lt;code&gt;--body-file&lt;/code&gt;, &lt;code&gt;--html-body&lt;/code&gt;, &lt;code&gt;--html-file&lt;/code&gt;, or&#10;stdin when stdin is not a terminal.&lt;/p&gt;</description></item><item><title>Agents and applications</title><link>https://perch.mxraven.com/docs/mail/agents/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://perch.mxraven.com/docs/mail/agents/</guid><description>&lt;p&gt;perch is a normal mail server with a scriptable interface. That makes it useful&#10;anywhere a program needs an inbox but you do not want to build or rent a&#10;vendor-specific mailbox API.&lt;/p&gt;&#10;&lt;h2 id="why-use-perch-for-an-agent"&gt;Why use perch for an agent&lt;a class="anchor" href="#why-use-perch-for-an-agent"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Standard email.&lt;/strong&gt; Agents get a real address that can receive from and send&#10;to the outside world.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;POSIX CLI.&lt;/strong&gt; Search, read, reply, and attach files with commands that work&#10;in a shell, a tool call, or a cron job.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Structured output.&lt;/strong&gt; &lt;code&gt;--json&lt;/code&gt; emits NDJSON, one object per message.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Raw messages.&lt;/strong&gt; &lt;code&gt;fetch&lt;/code&gt; writes the complete RFC 5322 message for RAG,&#10;summarization, or archival.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Local or remote.&lt;/strong&gt; The same commands work against a local perch server or&#10;any remote IMAP/SMTP server.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;No public IP.&lt;/strong&gt; perch can sit behind NAT or CGNAT while mxRaven handles the&#10;public mail edge.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="patterns"&gt;Patterns&lt;a class="anchor" href="#patterns"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;h3 id="one-mailbox-per-agent"&gt;One mailbox per agent&lt;a class="anchor" href="#one-mailbox-per-agent"&gt;&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;Give each agent its own account or alias so its context and credentials are&#10;isolated:&lt;/p&gt;</description></item></channel></rss>