以前、sheevaplug のeximを使って、外部のSMTPサーバ経由でsendmailコマンドでメール送信する方法を記事にしたが、(https://ttandai.info/archives/758)
CentOS7で同じことを実現する方法を探っていたら、結構前から、普通のmailコマンド(heirloom mailx になっている)のオプションで、普通に外部のSMTPサーバ経由でメール送信できるようになっていたので、メモを残しておく。(まぁ、このことに気付いたのは1年以上前なのだけれども、わざわざ記事にはしていなかった。最近これを扱う機会があったので、まぁ一応残しておく。)
この方法は root 権限なしでも可能なので、設定変更できないサーバ上でメール送信する際にも便利です。
何も難しいことはなくて、やることは、コマンドとしては
$ echo "message." | mailx -s "subject" -S smtp=smtp://example.com:587 -S smtp-auth-user=USER -S smtp-auth-password=PASSWORD -S from=from@example.com to@example.com
みたいな感じ。(mail コマンドが、mailx コマンドへのシンボリックリンクになっているので、単にmailコマンドでもOK)
いちいちパラメタ設定するのが面倒な場合は、 ~/.mailrc に設定を書いておける。
set smtp=smtp://example.com:587 set smtp-auth-user=USER set smtp-auth-password=PASSWORD set from=from@exmple.com
とか書いておけばよい。もちろん、25番ポートでメールを送れるサーバを経由するなら、もっと設定は簡単にかけるけれども、心置きなく使えるSMTPサーバは、587番ポートで認証必須なので、こんなもんです。
設定ファイルは、アカウント決め打ちなら上記のように書けばいいが、複数アカウントを使い分けるときは、設定ファイルの上記の部分を account hogehoge { } で囲み、mailxコマンドのオプションで mailx -A hogehoge
すると、使い分けがきく。
この辺りは、man mailx を読んだ方が早いかと。
この設定をした後は、 sendmail -t コマンドを簡単に置き換えられる。
たとえば、下記のような感じ。
$ cat << EOF | mailx -t To: to@example.com Subject: this is a test mail. TEST MAIL! EOF
ところで、mailコマンドを打った時に、どうでもいいcronのメッセージとかが大量に出てくるとうっとうしいよね??
なお、CentOS7のpostfixでメールリレーの設定をして、外部のSMTPサーバを利用する場合は、Postfix でメールリレーの設定 (SMTP クライアント + SMTP Auth) | maruko2 note. Postfix 基本設定(postfix-jp.info)が参考になると思う。
「CentOS7 の mailx コマンドで、外部のSMTPサーバを経由してメール送信」への2件のフィードバック