Setting up msmtp

msmtp

msmtp is a commandline smtp client that reads the message body from stdin.

configuration

You need to first install msmtp with the package manager of your choice.
After installing, create a confi file. msmtp looks for those in $XDG_CONFIG_HOME/msmtp. The config file simply needs to be called config.
Here’s a sample configuration file which you can edit:

defaults
auth on
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile /home/{user}/.config/msmtp/msmtp.log

account {account1}
host {smtp hostname}
port 465
from {from field}
user {smtp username}
passwordeval "gpg --quiet --for-your-eyes-only --no-tty --decrypt $XDG_CONFIG_HOME/msmtp/.msmtp-{account1}.gpg"
# only if your smtp server doesnt support STARTTLS
#tls_starttls off

# vim:filetype=msmtp

The last line exists to make vim highlight the configuration file with the right syntax. Feel free to remove it if you want.
Make sure you replace all your occurances of:

  • {user} - the username you are logged in to on your computer
  • {account1} - a string you have to reference later to select that profile
  • {smtp hostname} - the hostname of your smtp server
  • {smtp username} - the username you log in with on the given smtp server

usage

Using msmtp is very simple. Supply the body of the message via stdin, set a subject via the -s flag, set the account to use via the -a flag and send it to the email supplied at the very end.

Do you have a comment on one of my posts? Feel free to send me an E-Mail: witcher@wiredspace.de
To participate in a public discussion, use my public inbox: ~witcher/public-inbox@lists.sr.ht (Archive)
Please review the mail etiquette.

Posted on: May 21, 2020

Articles from blogs I read

Announcing Rust 1.96.1

The Rust team has published a new point release of Rust, 1.96.1. Rust is a programming language that is empowering everyone to build reliable and efficient software. If you have a previous version of Rust installed via rustup, getting Rust 1.96.1 is as eas…

via Rust Blog June 30, 2026

relayd(8) and httpd(8) TLS settings update.

Both relayd(8) and httpd(8) now have the "secure" list of allowed crypto methods for HTTPS, which include TLSv1.3 and the TLSv1.2 AEAD cipher suites. The previous list was "HIGH:!aNULL" which contain non-perfect-forward-security methods and this c…

via OpenBSD Journal June 29, 2026

Status update 2026-06

Pimsync v0.5.11 is out, with the following set of improvements. Incremental sync[permalink] When watching a storage (e.g.: watching a filesystem for real-time changes), instead of executing a full synchronisation, a more focused and granular synchronisation i…

via Hugo's weblog on WhyNotHugo (雨果) June 27, 2026

Generated by openring