コマンドからサクッとメールを送信する。
コマンドからサクッとメールを送信して、送信テストをしたい。
コマンドには幾つか候補がある。
- mailx がある。
- s-nail がある。
- mailutilsがある。
- curl がある。
- swaks がある。
これらを自由に選んで、メール送信をテストすることができる。
mailxは最初からインストールされているので手軽に試せる。
互換性がある。
mailx と s-nail は互換性がある。
mailx は外部のSMTPなどに非対応(未対応ではなく非対応)
MTA(外部サーバ・ポート)を指定する場合はs-nailを使う
mailx の場合
mailx は linuxでは bsd-mailx で存在する。
## 通常はインストール済みで、apt は不要 # sudo apt install bsd-mailx
mailxでメール送信
echo hi | mailx root echo hi | mailx takuya
mailx を使うと、sendmail 経由で楽にメールを送れる。
bsd-mailx は初期導入済み
そもそも、私の環境に、なぜbsd-mailx は入っていたのか。
$ apt-cache --installed rdepends bsd-mailx
bsd-mailx
Reverse Depends:
unattended-upgrades
|logrotate
|automysqlbackup
logrotate と一緒に入っている。
logrotate で使われるので、初期インストールで、インストール済みであるはず。
mailx の実体。
mailxコマンドは、Aliasになっていて、初期設定の場合は bsd-mailx
を指している。
takuya@:~$ ll /usr/bin/mailx lrwxrwxrwx 1 root root 23 11月 18 16:53 /usr/bin/mailx -> /etc/alternatives/mailx
管理しているのは alternatives
takuya@:~$ sudo update-alternatives --config mailx リンクグループ mailx に 1 つの alternative のみがあります (/usr/bin/mailx が提供): /usr/bin/bsd-mailx 設定は行いません。
smtp を指定するならs-nail
s-nailを使えば、SMTPサーバーを指定することができる。ポート番号やSMTP-AUTHを使える。メールの送信のチェックなら s-nailがmailxより高機能で使いやすい
sudo apt install s-nail
s-nail で送信。
echo hi | s-nail root echo hi | s-nail takuya
s-nail でSMTP経由でメールを送る
コマンドでSMTP経由でメール配送できる。
echo Hi success? | s-nail \ -S mta=smtp://localhost:25255 \ -S smtp-auth=none \ -S v15-compat=yes \ takuya@example.com
-S
でオプションを指定できる。
s-nail はmailx互換性あるみたい
使い方を見ればわかるが、mailxと互換性がありそう。
しかし、alternativesには出てこない。
alternatives に登録する
mailxとs-nail はほぼ同じだし、alternativesでmailxは管理されている。
しかし、s-nail は apt インストールしても mailx にはならない。(公式パッケージのバグじゃないの)。仕方ないので手作業で登録する。
参考資料に従って、alternatives を構成する。
s-nail をmailxに追加
sudo update-alternatives \ --install /usr/bin/mailx mailx /usr/bin/s-nail 10 \ --slave /usr/bin/mail mail /usr/bin/s-nail \ --slave /usr/share/man/man1/mail.1.gz mail.1.gz /usr/share/man/man1/s-nail.1.gz \ --slave /usr/share/man/man1/mailx.1.gz mailx.1.gz /usr/share/man/man1/s-nail.1.gz \
s-nail をmailxに設定
設定
sudo update-alternatives --set mailx /usr/bin/s-nail
不要になったとき削除する場合はこれ
sudo update-alternatives --remove mailx /usr/bin/s-nail
mailxとしてsnail を使う。
s-nail を mailxとして登録したのであとは同じ。
echo Hi | mailx takuya
正しく追加するのは・・・・大変ですね。
その他の方法
curlでSMTPが何処でも使えるので便利だと思う。
mail.utils はmailxと互換性がありそうでないので、しらべなかった。
2022-01-10 追加
mailxで検索にマッチしないので記述見直し。