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. |