人生100年!生涯エンジニア人生!

楽しいエンジニア人生!

msmtp を使う

概要

過去記事やQiitaの記事で使用したmsmtpは普通に便利なのでご紹介します。

過去記事 kawahara-ci.hatenablog.com

Qiitaの記事 qiita.com

ローカル開発環境でメール送信するという需要は少ないとは思いますが、知っていて損はないので記事を書きました。
これをDockerに展開することも可能です。

インストールして設定する

macOSならbrewでインストールする。

brew install msmtp

Windowsだと・・・ごめん、わからない。

インストールが終わったら設定します。
~/.msmtprc に外部メールサーバーの設定をします。
みんなが大好きな Gmailの設定例を書きます。

host smtp.gmail.com
port 587
user 使用するGmailアカウント
password アプリパスワード
from 使用するGmailアカウント
tls on
tls_starttls on
tls_certcheck off
auth on
logfile ~/.msmtp.log

ここで重要なのはアプリパスワードです。
Gmailを外部メールサーバーとして使うためには、アプリパスワードを設定します。
アプリパスワードを使用するには2段階認証プロセスを有効にしないと使用できません。
まあ、エンジニアなら2段階認証プロセスを有効にしていると思うので、アプリパスワードの説明だけです。

アプリパスワードの設定はマイアカウントのセキュリティから設定します。
アプリパスワードを押下するとパスワード生成画面に遷移します。
f:id:hideaki_kawahara:20200519185841p:plain

アプリを選択、デバイスを選択の項目は、備忘録みたいなものなので、適当で良いです。
入力したら「生成」を押下します。
f:id:hideaki_kawahara:20200519190133p:plain

アプリパスワードが生成されました。(このアプリパスワードは破棄済み)
f:id:hideaki_kawahara:20200519190336p:plain

このアプリパスワードを先程の~/.msmtprcに設定します。

使ってみる

過去記事やQiitaの記事を参考にどうぞ!

過去記事 kawahara-ci.hatenablog.com

Qiitaの記事 qiita.com

せっかくなのでPerlでもやってみましょう!
パイプでやればいけます。
下記サンプルでファイルを作りperl msmtp.plとか実行するとメールが送信されます。

#!/usr/bin/perl

if (! open($mail, "| /usr/local/bin/msmtp -t")) 
{
    print "msmtp が無いです。¥n";
    exit;
}

$mailtext = << "EOM";
From: sample\@sample.com
To: sample\@sample.com
Subject: test

test
EOM

print $mail $mailtext;
close $mail;
exit;

なおPHPでもパイプで送信可能ですが、PHPならsendmail_pathを設定すればOKです。

使い終わったら

アプリパスワードが不要になったら削除しましょう。
ゴミ箱のアイコンを押下すると、確認ダイアログ無しで、速攻で削除されます。
f:id:hideaki_kawahara:20200519192458p:plain