Title: Sending mail with mu4e
       Author: Solène
       Date: 22 May 2018
       Tags: unix emacs
       Description: 
       
       In my article about mu4e I said that I would write about sending mails
       with it. This will be the topic covered in this article.
       
       There are a lot of ways to send mails with a lot of differents use
       cases. I will only cover a few of them, the documentation of mu4e and
       emacs are both very good, I will only give hints about some
       interestings setups.
       
       I would thank Raphael who made me curious about differents ways of
       sending mails from mu4e and who pointed out some mu4e features I
       wasn't aware of.
       
       
       ## Send mails through your local server
       
       The easiest way is to send mails through your local mail server (which
       should be OpenSMTPD by default if you are running OpenBSD). This only
       requires the following line to works in your *~/.emacs* file:
       
           (setq message-send-mail-function 'sendmail-send-it)
       
       Basically, it would be only relayed to the recipient if your local
       mail is well configured, which is not the case for most servers. This
       requires a reverse DNS address correctly configured (assuming a static
       IP address), a SPF record in your DNS and a DKIM signing for outgoing
       mail. This is the minimum to be accepted to others SMTP
       servers. Usually people send mails from their personal computer and
       not from the mail server.
       
       
       ### Configure OpenSMTPD to relay to another smtp server
       
       We can bypass this problem by configuring our local SMTP server to
       relay our mails sent locally to another SMTP server using credentials
       for authentication.
       
       This is pretty easy to set-up, by using the following
       */etc/mail/smtpd.conf* configuration, just replace remoteserver by
       your server.
       
           table secrets file:/etc/mail/secrets
       
       
           accept for any relay via secure+auth://label@remoteserver:465 auth
       <secrets>
       
       You will have to create the file */etc/mail/secrets* and add your
       credentials for authentication on the SMTP server.
       
       From smtpd.conf(5) man page, as root:
       
           # touch /etc/mail/secrets
           # chmod 640 /etc/mail/secrets
           # chown root:_smtpd /etc/mail/secrets
           # echo "label username:password" > /etc/mail/secrets
       
       Then, all mail sent from your computer will be relayed through your
       mail server. With 'sendmail-send-it, emacs will delivered the mail to
       your local server which will relay it to the outgoing SMTP server.
       
       
       ## SMTP through SSH
       
       One setup I like and I use is to relay the mails directly to the
       outgoing SMTP server, this requires no authentication except a SSH
       access to the remote server.
       
       It requires the following emacs configuration in *~/.emacs*:
       
           (setq
             message-send-mail-function 'smtpmail-send-it
             smtpmail-smtp-server "localhost"
             smtpmail-smtp-service 2525)
       
       The configuration tells emacs to connect to the SMTP server on
       localhost port 2525 to send the mails. Of course, no mail daemon runs
       on this port on the local machine, it requires the following ssh
       command to be able to send mails.
       
           $ ssh -N -L 127.0.0.1:2525:127.0.0.1:25 remoteserver
       
       This will bind the port 127.0.0.1:25 from the remote server point of
       view on your address 127.0.0.1:2525 from your computer point of view.
       
       Your mail server should accept deliveries from local users of course.
       
       
       ## SMTP authentication from emacs
       
       It's also possible to send mails from emacs using a regular smtp
       authentication directly from emacs. It is boring to setup, it requires
       putting credentials into a file named *~/.authinfo* that it's possible
       to encrypt using GPG but then it requires a wrapper to load it. It
       also requires to setup correctly the SMTP authentication. There are
       plenty of examples for this on the Internet, I don't want to cover it.
       
       
       ## Queuing mails for sending it later
       
       Mu4e supports a very nice feature which is mail queueing from smtpmail
       emacs client. To enable it, it requires two easy steps:
       
       In *~/.emacs*:
       
           (setq
             smtpmail-queue-mail t
             smtpmail-queue-dir "~/Mail/queue/cur")
       
       In your shell:
       
           $ mu mkdir ~/Mail/queue
           $ touch ~/Mail/queue/.noindex
       
       Then, mu4e will be aware of the queueing, in the home screen of mu4e,
       you will be able to switch from queuing to direct sending by pressing
       `m` and flushing the queue by pressing `f`.
       
       Note: there is a bug (not sure it's really a bug). When sending a mail
       into the queue, if your mail contains special characters, you will be
       asked to send it raw or to add a header containing the encoding.