Mac のターミナルを使って Gmail からメールを送る

先週末、九州で防人をしている友人が泊まりに来ることになっていたので、どのくらいの時間に来る予定なのか知りたくて、メールを送ろうと思いました。が、いざ Gmail の画面を開いても、なんとなく視覚に煩く訴えてきて、メールする気を喪失してしまうわけです。現代社会に適応できていないので、LINE を使うという手段は思い付きませんでした。

ターミナルからメールを送ろう

Unix には mail コマンドというものがあるということを知ったので、それを使ってメールを送ってみることにしました。よくわかんないけど、なんか Postfix とかいうのを使えば SMTP でメールを送れるらしいです(素人感丸出し)。というわけで、実際に設定していきましょう。まず、ログインに必要なユーザー名とパスワードの設定をします。

$ cd /etc/postfix
$ sudo vi relay_password

relay_password の中身は以下のように。ここでも2段階認証を使っている方は application-specific password を入力するのを忘れずに!

[smtp.gmail.com]:587 ユーザー名@gmail.com:パスワード

以下のコマンドを実行すると、relay_password.db というファイルが生成されるはずです。relay_password の方は削除してしまいましょう。

$ sudo postmap relay_password

次に、main.cf 以下の内容を追加してください。

relayhost = [smtp.gmail.com]:587

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/relay_password
smtp_sasl_mechanism_filter = plain
smtp_sasl_security_options = noanonymous

smtp_use_tls = yes
tls_random_source = dev:/dev/urandom

最終的にこんな感じで動きました。あとは実際にメールを送ってみましょう。

$ sudo postfix start
mail -s '件名' 宛先のメールアドレス
ターミナルからのメール送信テスト
. (ピリオド + リターンキー)

内部の仕組みとか全然わかってませんが、とりあえずメールを送ることはできました。送信に失敗した場合、/var/mail/[ユーザー名] (自分の場合は ryota) というファイルに、エラーメッセージが残っていますので参照しましょう。
ちなみに、自分の Gmail のアドレスに送ったらうまいこといったのですが、いざ友人の SoftBank のキャリアメールに送ってみると、見事に文字化けしていたみたいです。意味なし。対処法もよくわからないので、どなたか教えていただければ……w

まとめ

  • やっぱり2段階認証を行っている場合は application-specific password を入力するのを忘れない
  • 文字化けの可能性もあるので、送る相手や内容は考える(ASCII なら化けないよ!)