<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://wlair.us.to/feed/by_tag/email.xml" rel="self" type="application/atom+xml" /><link href="https://wlair.us.to/" rel="alternate" type="text/html" /><updated>2026-01-15T01:45:00-08:00</updated><id>https://wlair.us.to/feed/by_tag/email.xml</id><title type="html">xoddf2’s Blog</title><subtitle>xoddf2&apos;s personal blog</subtitle><author><name>xoddf2</name></author><entry><title type="html">My Email Setup</title><link href="https://wlair.us.to/blog/2020/01/09/my-email-setup/index.html" rel="alternate" type="text/html" title="My Email Setup" /><published>2020-01-09T04:10:00-08:00</published><updated>2020-01-09T04:10:00-08:00</updated><id>https://wlair.us.to/blog/2020/01/09/my-email-setup/my-email-setup</id><content type="html" xml:base="https://wlair.us.to/blog/2020/01/09/my-email-setup/index.html"><![CDATA[<p>For the past few months, I have used the following <a href="https://en.wikipedia.org/wiki/Email_agent_(infrastructure)">email setup</a>:</p>

<p>Incoming mail → <a href="http://isync.sourceforge.net/">mbsync</a> (<abbr title="Mail Retrieval Agent">MRA</abbr>) → <a href="http://www.djcbsoftware.nl/code/mu/">mu</a> (email indexer) → <a href="http://www.djcbsoftware.nl/code/mu/mu4e.html">mu4e</a> (<abbr title="Mail User Agent">MUA</abbr>) → <a href="https://marlam.de/msmtp/">msmtp</a> (<abbr title="Simple Mail Transfer Protocol">SMTP</abbr> client) → Outgoing mail</p>

<h3 id="summary">Summary</h3>

<ul>
  <li><strong>mbsync</strong> synchronises the local maildirs via <abbr title="Internet Message Access Protocol">IMAP</abbr> with the email accounts themselves.  <a href="https://twitter.com/woddfellow2/status/1174062483801300994">I found it to be faster</a> than OfflineIMAP.</li>
  <li><strong>mu</strong> indexes messages and makes them easier to search.</li>
  <li><strong>mu4e</strong> is the Emacs-based email client included with mu.</li>
  <li><strong>msmtp</strong> sends outgoing messages over SMTP.</li>
</ul>

<h3 id="setup">Setup</h3>

<h4 id="installation">Installation</h4>

<p>First, install the relevant tools.  Under Debian, one would install the following packages:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt install isync mu4e msmtp
</code></pre></div></div>

<h4 id="preparation">Preparation</h4>

<p>Next, create the directories that will contain your maildirs.  Change the path and account names to match your preferences:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ mkdir -p ~/Mail/{Main,Personal,Work}
</code></pre></div></div>

<p>I also recommend creating your signature blocks at this point.  This tutorial uses files in <code class="language-plaintext highlighter-rouge">~/doc/signatures</code> as an example.  See the <code class="language-plaintext highlighter-rouge">message-signature-file</code> variables in the below mu4e config for examples.</p>

<h4 id="configuring-mbsync">Configuring mbsync</h4>

<p>Write your <code class="language-plaintext highlighter-rouge">~/.mbsyncrc</code>.  Here is an example for 3 accounts:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>IMAPAccount Main
Host imap.example.net
User foo@example.net
Pass hunter2
SSLType IMAPS
CertificateFile /etc/ssl/certs/ca-certificates.crt

IMAPStore Main-remote
Account Main

MaildirStore Main-local
Path ~/Mail/Main/
Inbox ~/Mail/Main/inbox

Channel Main-default
Master :Main-remote:
Slave :Main-local:Inbox

Channel Main-sent
Master :Main-remote:"[Gmail]/Sent Mail"
slave :Main-local:Sent

Channel Main-trash
Master :Main-remote:"[Gmail]/Trash"
slave :Main-local:Trash

Channel Main-archive
Master :Main-remote:"[Gmail]/All Mail"
slave :Main-local:All

Channel Main-junk
Master :Main-remote:"[Gmail]/Spam"
slave :Main-local:Junk

Channel Main-drafts
Master :Main-remote:"[Gmail]/Drafts"
slave :Main-local:Drafts

Create Both
Expunge Both
SyncState *

Group Main
Channel Main-default
Channel Main-sent
Channel Main-trash
Channel Main-archive
Channel Main-junk

IMAPAccount Personal
Host imap.example.net
User bar@example.net
Pass hunter2
SSLType IMAPS
CertificateFile /etc/ssl/certs/ca-certificates.crt

IMAPStore Personal-remote
Account Personal

MaildirStore Personal-local
Path ~/Mail/Personal/
Inbox ~/Mail/Personal/inbox

Channel Personal-default
Master :Personal-remote:
Slave :Personal-local:Inbox

Channel Personal-sent
Master :Personal-remote:"[Gmail]/Sent Mail"
slave :Personal-local:Sent

Channel Personal-trash
Master :Personal-remote:"[Gmail]/Trash"
slave :Personal-local:Trash

Channel Personal-archive
Master :Personal-remote:"[Gmail]/All Mail"
slave :Personal-local:All

Channel Personal-junk
Master :Personal-remote:"[Gmail]/Spam"
slave :Personal-local:Junk

Channel Personal-sent
Master :Personal-remote:"[Gmail]/Sent Mail"
slave :Personal-local:Sent

Create Both
Expunge Both
SyncState *

Group Personal
Channel Personal-default
Channel Personal-sent
Channel Personal-trash
Channel Personal-archive
Channel Personal-junk

IMAPAccount Work
Host imap.example.net
User baz@example.net
Pass hunter2
SSLType IMAPS
CertificateFile /etc/ssl/certs/ca-certificates.crt

IMAPStore Work-remote
Account Work

MaildirStore Work-local
Path ~/Mail/Work/
Inbox ~/Mail/Work/inbox

Channel Work-default
Master :Work-remote:
Slave :Work-local:Inbox

Channel Work-sent
Master :Work-remote:"[Gmail]/Sent Mail"
slave :Work-local:Sent

Channel Work-trash
Master :Work-remote:"[Gmail]/Trash"
slave :Work-local:Trash

Channel Work-archive
Master :Work-remote:"[Gmail]/All Mail"
slave :Work-local:All

Channel Work-junk
Master :Work-remote:"[Gmail]/Spam"
slave :Work-local:Junk

Channel Work-drafts
Master :Work-remote:"[Gmail]/Drafts"
slave :Work-local:Drafts

Create Both
Expunge Both
SyncState *

Group Work
Channel Work-default
Channel Work-sent
Channel Work-trash
Channel Work-archive
Channel Work-junk
</code></pre></div></div>

<p>The location of <code class="language-plaintext highlighter-rouge">CertificateFile</code> may vary based on your system.</p>

<p>Finally, make <code class="language-plaintext highlighter-rouge">~/.mbsyncrc</code> readable and writable only by the owner, for privacy:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ chmod 600 ~/.mbsyncrc
</code></pre></div></div>

<h4 id="configuring-msmtp">Configuring msmtp</h4>

<p><code class="language-plaintext highlighter-rouge">~/.msmtprc</code> should look something like this:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>defaults
auth on
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile ~/.msmtp.log

# Main
account Main
host smtp.example.net
port 587
from foo@example.net
user foo@example.net
password hunter2

# Personal
account Personal
host smtp.example.net
port 587
from bar@example.net
user bar@example.net
password hunter2

# Work
account Work
host smtp.example.net
port 587
from baz@example.net
user baz@example.net
password hunter2

account default : Main
</code></pre></div></div>

<p>As with mbsync’s <code class="language-plaintext highlighter-rouge">CertificateFile</code>, the location of <code class="language-plaintext highlighter-rouge">tls_trust_file</code> may vary based on your system.</p>

<p>As with <code class="language-plaintext highlighter-rouge">~/.mbsyncrc</code> above, you should make <code class="language-plaintext highlighter-rouge">~/.msmtprc</code> readable and writable only by the owner.  <strong>This is especially important with msmtp, as it will refuse to run otherwise.</strong></p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ chmod 600 ~/.msmtprc
</code></pre></div></div>

<h5 id="msmtpqueue">msmtpqueue</h5>

<p><strong>msmtpqueue</strong> is a small collection of scripts to queue outgoing messages and then send them later.  Under Debian, it is available in <code class="language-plaintext highlighter-rouge">/usr/share/doc/msmtp/examples/msmtpqueue</code>.  I copied the scripts to my personal <code class="language-plaintext highlighter-rouge">~/local/bin</code> directory and then edited them for my own use.  See <code class="language-plaintext highlighter-rouge">/usr/share/doc/msmtp/examples/msmtpqueue/README</code> for more information.</p>

<p>There is also <code class="language-plaintext highlighter-rouge">msmtpq</code>, which I have not tried.</p>

<h4 id="configuring-mu4e">Configuring mu4e</h4>

<p>mu4e is configured in your Emacs init file.  Here is an example:</p>

<div class="language-emacs-lisp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">(</span><span class="nb">require</span> <span class="ss">'mu4e</span><span class="p">)</span>

<span class="c1">;; Make mu4e Emacs's default email client</span>
<span class="p">(</span><span class="k">setq</span> <span class="nv">read-mail-command</span> <span class="ss">'mu4e</span>
      <span class="nv">mail-user-agent</span> <span class="ss">'mu4e-user-agent</span><span class="p">)</span>

<span class="c1">;; Where the messages are</span>
<span class="p">(</span><span class="k">setq</span> <span class="nv">mu4e-maildir</span> <span class="s">"~/Mail"</span><span class="p">)</span>

<span class="c1">;; How to get mail</span>
<span class="p">(</span><span class="k">setq</span> <span class="nv">mu4e-get-mail-command</span> <span class="s">"mbsync -a"</span>
      <span class="nv">mu4e-update-interval</span> <span class="mi">300</span><span class="p">)</span>

<span class="c1">;; How to send mail</span>
<span class="c1">;; (Be sure to point sendmail-program to the proper path for msmtp-enqueue.sh!)</span>
<span class="p">(</span><span class="k">setq</span> <span class="nv">message-send-mail-function</span> <span class="ss">'message-send-mail-with-sendmail</span>
      <span class="nv">sendmail-program</span> <span class="s">"/home/user/bin/msmtp-enqueue.sh"</span><span class="p">)</span>

<span class="c1">;; Gmail needs this</span>
<span class="p">(</span><span class="k">setq</span> <span class="nv">mu4e-sent-messages-behavior</span> <span class="ss">'delete</span><span class="p">)</span>

<span class="c1">;; Display To: header in headers view</span>
<span class="p">(</span><span class="k">setq</span> <span class="nv">mu4e-headers-fields</span> <span class="o">'</span><span class="p">((</span><span class="ss">:human-date</span> <span class="o">.</span> <span class="mi">12</span><span class="p">)</span>
                            <span class="p">(</span><span class="ss">:flags</span> <span class="o">.</span> <span class="mi">6</span><span class="p">)</span>
                            <span class="p">(</span><span class="ss">:from</span> <span class="o">.</span> <span class="mi">15</span><span class="p">)</span>
                            <span class="p">(</span><span class="ss">:to</span> <span class="o">.</span> <span class="mi">12</span><span class="p">)</span>
                            <span class="p">(</span><span class="ss">:subject</span><span class="p">)))</span>

<span class="c1">;; Bookmarks</span>
<span class="p">(</span><span class="k">setq</span> <span class="nv">mu4e-bookmarks</span>
      <span class="o">`</span><span class="p">(</span> <span class="o">,</span><span class="p">(</span><span class="nv">make-mu4e-bookmark</span>
           <span class="ss">:name</span> <span class="s">"Unread messages"</span>
           <span class="ss">:query</span> <span class="s">"flag:unread AND NOT \"maildir:/Main/Junk\" AND NOT \"maildir:/Personal/Junk\" AND NOT \"maildir:/Work/Junk\""</span>
           <span class="ss">:key</span> <span class="nv">?u</span><span class="p">)</span>
         <span class="o">,</span><span class="p">(</span><span class="nv">make-mu4e-bookmark</span>
           <span class="ss">:name</span> <span class="s">"Today's messages"</span>
           <span class="ss">:query</span> <span class="s">"date:today..now AND NOT \"maildir:/Main/Junk\" AND NOT \"maildir:/Personal/Junk\" AND NOT \"maildir:/Work/Junk\""</span>
           <span class="ss">:key</span> <span class="nv">?t</span><span class="p">)</span>
         <span class="o">,</span><span class="p">(</span><span class="nv">make-mu4e-bookmark</span>
           <span class="ss">:name</span> <span class="s">"Last 7 days"</span>
           <span class="ss">:query</span> <span class="s">"date:7d..now AND NOT \"maildir:/Main/Junk\" AND NOT \"maildir:/Personal/Junk\" AND NOT \"maildir:/Work/Junk\""</span>
           <span class="ss">:key</span> <span class="nv">?w</span><span class="p">)</span>
         <span class="o">,</span><span class="p">(</span><span class="nv">make-mu4e-bookmark</span>
           <span class="ss">:name</span> <span class="s">"Inboxes"</span>
           <span class="ss">:query</span> <span class="s">"\"maildir:/Main/INBOX\" OR \"maildir:/Personal/INBOX\" OR \"maildir:/Work/INBOX\""</span>
           <span class="ss">:key</span> <span class="nv">?i</span><span class="p">)</span>
         <span class="o">,</span><span class="p">(</span><span class="nv">make-mu4e-bookmark</span>
           <span class="ss">:name</span> <span class="s">"Sent messages"</span>
           <span class="ss">:query</span> <span class="s">"\"maildir:/Main/Sent\" OR \"maildir:/Personal/Sent\" OR \"maildir:/Work/Sent\""</span>
           <span class="ss">:key</span> <span class="nv">?s</span><span class="p">)</span>
         <span class="o">,</span><span class="p">(</span><span class="nv">make-mu4e-bookmark</span>
           <span class="ss">:name</span> <span class="s">"Spam"</span>
           <span class="ss">:query</span> <span class="s">"\"maildir:/Main/Junk\" OR \"maildir:/Personal/Junk\" OR \"maildir:/Work/Junk\""</span>
           <span class="ss">:key</span> <span class="nv">?j</span><span class="p">)))</span>
</code></pre></div></div>

<p>For multiple email accounts, we will use <a href="http://www.djcbsoftware.nl/code/mu/mu4e/Contexts.html">contexts</a>.  If you publish your Emacs config, e.g., in version control, <em>be aware that this section will contain passwords and other personally identifiable information</em>.</p>

<div class="language-emacs-lisp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">(</span><span class="nb">require</span> <span class="ss">'mu4e-context</span><span class="p">)</span>

<span class="p">(</span><span class="k">setq</span> <span class="nv">mu4e-contexts</span>
      <span class="o">`</span><span class="p">(</span> <span class="o">,</span><span class="p">(</span><span class="nv">make-mu4e-context</span>
           <span class="ss">:name</span> <span class="s">"Main"</span>
           <span class="ss">:enter-func</span> <span class="p">(</span><span class="k">lambda</span> <span class="p">()</span> <span class="p">(</span><span class="nv">mu4e-message</span> <span class="s">"Entering Main context"</span><span class="p">))</span>
           <span class="ss">:leave-func</span> <span class="p">(</span><span class="k">lambda</span> <span class="p">()</span> <span class="p">(</span><span class="nv">mu4e-message</span> <span class="s">"Leaving Main context"</span><span class="p">))</span>
           <span class="ss">:match-func</span> <span class="p">(</span><span class="k">lambda</span> <span class="p">(</span><span class="nv">msg</span><span class="p">)</span>
                         <span class="p">(</span><span class="nb">when</span> <span class="nv">msg</span>
                           <span class="p">(</span><span class="nv">mu4e-message-contact-field-matches</span> <span class="nv">msg</span> <span class="ss">:to</span> <span class="s">"foo@example.net"</span><span class="p">)))</span>
           <span class="ss">:vars</span> <span class="o">'</span><span class="p">((</span><span class="nv">user-email-address</span> <span class="o">.</span> <span class="s">"foo@example.net"</span><span class="p">)</span>
                   <span class="p">(</span><span class="nv">user-mail-address</span> <span class="o">.</span> <span class="s">"foo@example.net"</span><span class="p">)</span>
                   <span class="p">(</span><span class="nv">user-full-name</span> <span class="o">.</span> <span class="s">"Someone"</span><span class="p">)</span>
                   <span class="p">(</span><span class="nv">mu4e-sent-folder</span> <span class="o">.</span> <span class="s">"/Main/Sent"</span><span class="p">)</span>
                   <span class="p">(</span><span class="nv">mu4e-drafts-folder</span> <span class="o">.</span> <span class="s">"/Main/Drafts"</span><span class="p">)</span>
                   <span class="p">(</span><span class="nv">mu4e-trash-folder</span> <span class="o">.</span> <span class="s">"/Main/Trash"</span><span class="p">)</span>
                   <span class="p">(</span><span class="nv">mu4e-refile-folder</span> <span class="o">.</span> <span class="s">"/Main/All"</span><span class="p">)</span>
                   <span class="p">(</span><span class="nv">message-sendmail-extra-arguments</span> <span class="o">.</span> <span class="s">"-a Main"</span><span class="p">)</span>
                   <span class="p">(</span><span class="nv">mail-host-address</span> <span class="o">.</span> <span class="s">"example.net"</span><span class="p">)</span>
                   <span class="p">(</span><span class="nv">mu4e-compose-signature</span> <span class="o">.</span> <span class="p">(</span><span class="nv">with-temp-buffer</span> <span class="p">(</span><span class="nv">insert-file-contents</span> <span class="s">"~/doc/signatures/Main"</span><span class="p">)</span> <span class="p">(</span><span class="nv">buffer-string</span><span class="p">)))</span>
                   <span class="p">(</span><span class="nv">message-signature-file</span> <span class="o">.</span> <span class="s">"~/doc/signatures/Main"</span><span class="p">)))</span>
         <span class="o">,</span><span class="p">(</span><span class="nv">make-mu4e-context</span>
           <span class="ss">:name</span> <span class="s">"Personal"</span>
           <span class="ss">:enter-func</span> <span class="p">(</span><span class="k">lambda</span> <span class="p">()</span> <span class="p">(</span><span class="nv">mu4e-message</span> <span class="s">"Switch to the Personal context"</span><span class="p">))</span>
           <span class="ss">:match-func</span> <span class="p">(</span><span class="k">lambda</span> <span class="p">(</span><span class="nv">msg</span><span class="p">)</span>
                         <span class="p">(</span><span class="nb">when</span> <span class="nv">msg</span>
                           <span class="p">(</span><span class="nv">mu4e-message-contact-field-matches</span> <span class="nv">msg</span> <span class="ss">:to</span> <span class="s">"bar@example.net"</span><span class="p">)))</span>
           <span class="ss">:vars</span> <span class="o">'</span><span class="p">((</span><span class="nv">user-email-address</span> <span class="o">.</span> <span class="s">"bar@example.net"</span><span class="p">)</span>
                   <span class="p">(</span><span class="nv">user-mail-address</span> <span class="o">.</span> <span class="s">"bar@example.net"</span><span class="p">)</span>
                   <span class="p">(</span><span class="nv">user-full-name</span> <span class="o">.</span> <span class="s">"John Smith"</span><span class="p">)</span>
                   <span class="p">(</span><span class="nv">mu4e-sent-folder</span> <span class="o">.</span> <span class="s">"/Personal/Sent"</span><span class="p">)</span>
                   <span class="p">(</span><span class="nv">mu4e-drafts-folder</span> <span class="o">.</span> <span class="s">"/Personal/Drafts"</span><span class="p">)</span>
                   <span class="p">(</span><span class="nv">mu4e-trash-folder</span> <span class="o">.</span> <span class="s">"/Personal/Trash"</span><span class="p">)</span>
                   <span class="p">(</span><span class="nv">mu4e-refile-folder</span> <span class="o">.</span> <span class="s">"/Personal/All"</span><span class="p">)</span>
                   <span class="p">(</span><span class="nv">message-sendmail-extra-arguments</span> <span class="o">.</span> <span class="s">"-a Personal"</span><span class="p">)</span>
                   <span class="p">(</span><span class="nv">mail-host-address</span> <span class="o">.</span> <span class="s">"example.net"</span><span class="p">)</span>
                   <span class="p">(</span><span class="nv">mu4e-compose-signature</span> <span class="o">.</span> <span class="p">(</span><span class="nv">with-temp-buffer</span> <span class="p">(</span><span class="nv">insert-file-contents</span> <span class="s">"~/doc/signatures/Personal"</span><span class="p">)</span> <span class="p">(</span><span class="nv">buffer-string</span><span class="p">)))</span>
                   <span class="p">(</span><span class="nv">message-signature-file</span> <span class="o">.</span> <span class="s">"~/doc/signatures/Personal"</span><span class="p">)))</span>
         <span class="o">,</span><span class="p">(</span><span class="nv">make-mu4e-context</span>
           <span class="ss">:name</span> <span class="s">"Work"</span>
           <span class="ss">:enter-func</span> <span class="p">(</span><span class="k">lambda</span> <span class="p">()</span> <span class="p">(</span><span class="nv">mu4e-message</span> <span class="s">"Switch to the Work context"</span><span class="p">))</span>
           <span class="ss">:match-func</span> <span class="p">(</span><span class="k">lambda</span> <span class="p">(</span><span class="nv">msg</span><span class="p">)</span>
                         <span class="p">(</span><span class="nb">when</span> <span class="nv">msg</span>
                           <span class="p">(</span><span class="nv">mu4e-message-contact-field-matches</span> <span class="nv">msg</span> <span class="ss">:to</span> <span class="s">"baz@example.net"</span><span class="p">)))</span>
           <span class="ss">:vars</span> <span class="o">'</span><span class="p">((</span><span class="nv">user-email-address</span> <span class="o">.</span> <span class="s">"baz@example.net"</span><span class="p">)</span>
                   <span class="p">(</span><span class="nv">user-mail-address</span> <span class="o">.</span> <span class="s">"baz@example.net"</span><span class="p">)</span>
                   <span class="p">(</span><span class="nv">user-full-name</span> <span class="o">.</span> <span class="s">"John Smith"</span><span class="p">)</span>
                   <span class="p">(</span><span class="nv">mu4e-sent-folder</span> <span class="o">.</span> <span class="s">"/Work/Sent"</span><span class="p">)</span>
                   <span class="p">(</span><span class="nv">mu4e-drafts-folder</span> <span class="o">.</span> <span class="s">"/Work/Drafts"</span><span class="p">)</span>
                   <span class="p">(</span><span class="nv">mu4e-trash-folder</span> <span class="o">.</span> <span class="s">"/Work/Trash"</span><span class="p">)</span>
                   <span class="p">(</span><span class="nv">mu4e-refile-folder</span> <span class="o">.</span> <span class="s">"/Work/All"</span><span class="p">)</span>
                   <span class="p">(</span><span class="nv">message-sendmail-extra-arguments</span> <span class="o">.</span> <span class="s">"-a Work"</span><span class="p">)</span>
                   <span class="p">(</span><span class="nv">mail-host-address</span> <span class="o">.</span> <span class="s">"example.net"</span><span class="p">)</span>
                   <span class="p">(</span><span class="nv">mu4e-compose-signature</span> <span class="o">.</span> <span class="p">(</span><span class="nv">with-temp-buffer</span> <span class="p">(</span><span class="nv">insert-file-contents</span> <span class="s">"~/doc/signatures/Work"</span><span class="p">)</span> <span class="p">(</span><span class="nv">buffer-string</span><span class="p">)))</span>
                   <span class="p">(</span><span class="nv">message-signature-file</span> <span class="o">.</span> <span class="s">"~/doc/signatures/Work"</span><span class="p">)))))</span>

<span class="p">(</span><span class="k">setq</span> <span class="nv">mu4e-context-policy</span> <span class="ss">'pick-first</span>
      <span class="nv">mu4e-compose-context-policy</span> <span class="ss">'ask</span><span class="p">)</span>
</code></pre></div></div>

<h3 id="initialisation">Initialisation</h3>

<p>Synchronise the maildirs and then index the messages:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ mbsync -a
$ mu index --maildir="$HOME/Mail"
</code></pre></div></div>

<h3 id="cronjobs">cronjobs</h3>

<p>You can have <code class="language-plaintext highlighter-rouge">cron</code> synchronise your maildirs and send pending messages automatically.  Put this shell script in <code class="language-plaintext highlighter-rouge">~/bin</code> or a similar directory, name it <code class="language-plaintext highlighter-rouge">get-send-mail</code> (or similar), and make it executable with <code class="language-plaintext highlighter-rouge">chmod +x</code>:</p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c">#!/bin/sh</span>

<span class="c"># Check if we are online; replace with something more appropriate for your setup</span>
ping <span class="nt">-c</span> 1 <span class="nt">-w</span> 2 example.net <span class="o">&gt;</span> /dev/null

<span class="k">if</span> <span class="o">[</span> <span class="s2">"</span><span class="nv">$?</span><span class="s2">"</span> <span class="nt">-eq</span> 0 <span class="o">]</span><span class="p">;</span> <span class="k">then
	</span>mbsync <span class="nt">-aq</span>
	/home/user/bin/msmtp-runqueue.sh <span class="o">&gt;</span> /dev/null
<span class="k">fi</span>
</code></pre></div></div>

<p>Be sure to point to the proper path for <code class="language-plaintext highlighter-rouge">msmtp-runqueue.sh</code>.  You can now put something like this in your crontab:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>@reboot /home/user/bin/get-send-mail
*/5 * * * * /home/user/bin/get-send-mail
</code></pre></div></div>

<p>It should run at boot and every 5 minutes.</p>

<h3 id="usage">Usage</h3>

<p>Simply restart Emacs, and then start mu4e with <kbd>M-x mu4e</kbd>.  For more information, see the <a href="http://www.djcbsoftware.nl/code/mu/mu4e/">mu4e manual</a>: <code class="language-plaintext highlighter-rouge">(info "(mu4e)")</code></p>]]></content><author><name>xoddf2</name></author><category term="computing" /><category term="email" /><category term="mu4e" /><summary type="html"><![CDATA[For the past few months, I have used the following email setup:]]></summary></entry><entry><title type="html">mu4e Polishing</title><link href="https://wlair.us.to/blog/2018/03/08/mu4e-polishing/index.html" rel="alternate" type="text/html" title="mu4e Polishing" /><published>2018-03-08T15:45:00-08:00</published><updated>2018-03-08T15:45:00-08:00</updated><id>https://wlair.us.to/blog/2018/03/08/mu4e-polishing/mu4e-polishing</id><content type="html" xml:base="https://wlair.us.to/blog/2018/03/08/mu4e-polishing/index.html"><![CDATA[<p>Until recently, <a href="http://www.djcbsoftware.nl/code/mu/mu4e.html">mu4e</a>’s “Unread messages” bookmark gave me messages from Gmail’s <span style="font-family: monospace;">/[Gmail].Spam</span> folder, and duplicates of legitimate emails from both the <span style="font-family: monospace;">/INBOX</span> and <span style="font-family: monospace;">/Gmail.[All Mail]</span> folders.  Today, I fixed that.</p>

<p>After doing some Web searches, I found <a href="https://vxlabs.com/2017/02/07/mu4e-0-9-18-e-mailing-with-emacs-now-even-better/">someone’s configuration</a>, and copied and then edited the <span style="font-family: monospace;">mu4e-bookmarks</span> variable from it.  I added some “<span style="font-family: monospace;">AND NOT [maildir goes here]</span>” directives, and it worked.  I also added bookmarks to <span style="font-family: monospace;">/[Gmail].All Mail</span> and <span style="font-family: monospace;">/[Gmail].Sent Mail</span>.</p>

<p>I <a href="https://github.com/woddfellow2/configs/commit/6ad9c37d8c33aa0609077a79489eea1831503e04">added that to my own config</a> and <a href="https://imgur.com/833c2k0">now it works fine</a>.</p>

<p>The only major thing left to fix: I must open an encrypted message twice to see it…</p>]]></content><author><name>xoddf2</name></author><category term="computing" /><category term="email" /><category term="mu4e" /><category term="emacs" /><summary type="html"><![CDATA[Until recently, mu4e’s “Unread messages” bookmark gave me messages from Gmail’s /[Gmail].Spam folder, and duplicates of legitimate emails from both the /INBOX and /Gmail.[All Mail] folders. Today, I fixed that.]]></summary></entry><entry><title type="html">xbiff with Gmail</title><link href="https://wlair.us.to/blog/2013/05/01/xbiff-gmail/index.html" rel="alternate" type="text/html" title="xbiff with Gmail" /><published>2013-05-01T23:35:00-07:00</published><updated>2013-05-01T23:35:00-07:00</updated><id>https://wlair.us.to/blog/2013/05/01/xbiff-gmail/xbiff-gmail</id><content type="html" xml:base="https://wlair.us.to/blog/2013/05/01/xbiff-gmail/index.html"><![CDATA[<p>It is possible to use <a href="http://en.wikipedia.org/wiki/Xbiff">xbiff</a> with Gmail. It involves fetchmail and IMAP.</p>

<p>Put this in your ~/.fetchmailrc:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>poll imap.gmail.com protocol IMAP user "(insert username here)@gmail.com" there with password "(insert password here)" nofetchall keep ssl
</code></pre></div></div>

<p>Then have xbiff use this X resource:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>XBiff*checkCommand: fetchmail -d0 -csk
</code></pre></div></div>

<p>I also recommend adding this resource to prevent it from checking so frequently:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>XBiff*update: 300
</code></pre></div></div>

<p>Now xbiff should check your Gmail inbox. I prefer to use it in <a href="http://www.fvwm.org/documentation/manpages/stable/FvwmButtons.php">FvwmButtons</a>.</p>]]></content><author><name>xoddf2</name></author><category term="computing" /><category term="email" /><category term="xbiff" /><category term="gmail" /><summary type="html"><![CDATA[It is possible to use xbiff with Gmail. It involves fetchmail and IMAP.]]></summary></entry></feed>