Linuxのコマンドラインからメールする(msmtp編)
実はこれに非常に苦労した。WordpressやThunderbirdクライアントでは簡単にSMTPサーバを指定して送信できるのに、コマンドラインからの送信がこれほど大変だとは思わなかった。
mailコマンド
検索してみると、メール送信には、mailコマンドを使うとどこでも書いてあるのだが、AlmaLinux9にはインストールされていないようだ。検索で出てくるmailxとかいうパッケージも存在しない。Install mailx in Alma 9.2を見てみると、s-nailというパッケージに変更されているらしい。
dnf install s-nail
これでmailコマンドが使えるようになった。が、しかし、実際に送るにはsendmailも必要のようだ。
dnf install sendmail
しかし、実際にメール送信するには、SMTPサーバを指定するために~/.mailrcを記述しなければならない。しかし、一体どうやったらSMTPサーバとそのアカウントを指定するのか全くわからない。SMTPサーバはすぐそこ、つまりローカルホストで動作しているのに接続できないのである。
どうしても~/.mailrcの書き方がわからず、これは諦めた。sendmail及びs-nailをアンインストールしておしまいにする。
msmtpコマンド
2024/5/7:msmtpは面倒ということがわかった。muttをおすすめする。Linuxのコマンドラインからメールする(mutt編)
msmtpというのがある。これは、epelにしかないらしいのでepelリポジトリをインストールしてmsmtpをインストールする。
これはデフォルトで/etc/ssl/certs/ca-certificates.crtというファイルが必要らしいのだが、どうやればインストールできるのかわからず、別のやり方にした。
How to install and configure MSMTP on OSX?にあるように、ドメインのフィンガープリントを取得すればいいらしい。
# msmtp --serverinfo --tls --tls-certcheck=off --host=mail.example.com --port=587 | egrep -o "([0-9A-Za-z]{2}:){31}[0-9A-Za-z]{2}"
2F:11:1F:1F:DB:F8:F7:74:A4:6B:A6:11:75:4B:87:C8:58:69:87:66:80:D0:7D:AB:D0:AC:6A:58:16:F9:D4:D6
そして、~/.msmtprcを以下のようにする。
defaults
auth on
tls on
#tls_trust_file /etc/ssl/certs/ca-certificates.crt
tls_fingerprint 2F:11:1F:1F:DB:F8:F7:74:A4:6B:A6:11:75:4B:87:C8:58:69:87:66:80:D0:7D:AB:D0:AC:6A:58:16:F9:D4:D6
logfile ~/.msmtp.log
account mine
host mail.jimakudaio.com
port 587
from admin@example.com
user admin@example.com
password 平文パスワード
account default : mine
送信方法としては、引数として送信先が必要で、実際に送信される先はそのメアドだが、From, To, Subject, 中身は、標準入力から与えられ、それがメールのヘッダとして現れる。例えば、
test.txt
From: a@domain.com
To: b@example.com
Subject: test mail
this is sample content.
this is second line.
とし、
msmtp c@bonobono.com < test.txt
とすると、実際にメールを受け取るのはc@bonobono.comだが、受け取ったメールのToは、b@example.comと記述されたままになる。これが嫌な人は、コマンドラインの送信先と、送信テキストの送信先を合わせるようにした方が良いだろう。
ディスカッション
コメント一覧
まだ、コメントがありません