はじめに

Linuxを利用していてアプリケーションからメール送信するんだけど、自前でSMTPサーバ立てるのはちょっと面倒と思うことが多い。
なので、今まではPostfix+SASLという組み合わせで、外部のSMTPサーバを利用してメール送信するようにしていた。
それで実現はできていたのだけど、もっとシンプルにセットアップ出来るものはないだろうかと探していたら、msmtpというアプリケーションを見つけた。
使ってみたら、設定も簡単でまさに自分が求めていたアプリケーションだったので、未来の自分のためにメモしておく。

前提

OS: Debian Stretch
外部SMTPサーバ: Mailgun

OSはDebian系ならどれもほとんど一緒かと思う。
外部のSMTPサーバは有名どころだと、SendGridやGmailとかもイケるはず。

mstmpのインストール

$ sudo apt install msmtp msmtp-mta

アプリケーション自体はmstmpで入るんだけど、 msmtp-mtaを入れると /bin/sbin/sendmail にシンボリックリンク張ってくれたり、メインのMTAとして良しなにしてくれる模様。
個人的にはそのように振る舞って欲しかったので迷わずインストール。

mstmpのセットアップ

mstmpは単なるsmtpクライアントなので、設定がめっちゃシンプル。
デーモンが起動することもないので、エコなのも良い。

システムワイドの設定は /etc/msmtprc にファイルを作ればOK。
ちなみに個人の設定は $HOME/.msmtprc
今回は/etc/msmtprcに以下の内容でファイルを作成した。

# Set default values for all following accounts.
defaults
port 587
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
syslog on
aliases /etc/aliases

# mailgun
account mailgun
host smtp.mailgun.org
port 587
from {from mail address}
auth on
user {username}
password {password}

# Set a default account
account default : mailgun

ログは syslog に一緒に吐き出すようにしている。
パスワードを暗号化する方法も載っているけど、自分は手軽さから平文直書きしている。
個人用ならこれで十分。
ちなみにパスワード平文直書きを考慮して、オーナーをroot、パーミッションを600にするというプラクティスがいくつか紹介されているが、その場合root以外送信できなくなってしまうので注意が必要。
自分はroot以外のアプリケーションから送信もして欲しかったので、644にしておいた。

テスト

$ echo "Subject: Testing msmtp" | /usr/sbin/sendmail -v {your mail address}

これでメール送信できればOK。

おわりに

ちょっとした個人用途のサーバならこれで事足りる気がする。
簡単でオススメ。