Rio Blog

世界のどこかでゆるく生きるITエンジニアのブログ

S-nailでメール送信

S-nailを使ってSMTPメールを送信する方法を共有。

S-nailとは?

メール処理システム。MailXの後継。

s-nail が mailx を置き換え s-nail メール処理システムが、mailx ユーティリティーに置き換わりました。s-nail ユーティリティーは mailx と互換性があり、新機能が数多く追加されました。mailx パッケージはアップストリームで維持されなくなりました。

https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/9/html/9.0_release_notes/enhancement_infrastructure-services

インストール

$ dnf -y install s-nail

使い方 ① 設定ファイルを読み込む

設定ファイルに各種設定項目を記載し、それを読み込む。 設定が変わらないのであれば、こちらの方が簡単だろう。

# 設定ファイルを開く
emacs /etc/s-nail.conf

#設定ファイルに下記を追記する
#--- ここから ---
#smtp config

set nss-config-dir=/etc/pki/nssdb/
set smtp-use-starttls
set smtp-auth=plain
set smtp=<SMTPエンドポイント>:587
set from=<送信元アドレス>
set smtp-auth-user=<SMTPユーザーID>
set smtp-auth-password=<SMTPパスワード>
#--- ここまで ---

送信コマンド

$ echo "mail_body" | s-nail -s "subject" <to_address>

オプション

  • -s: subject/件名

使い方 ② CLIで設定を記述する

ユーザーIDとパスワードのエンコード

コマンドに記述する場合、下記コマンドでエンコードした結果を使う。

$ echo 'urlcodec enc <unencoded_user_id>' | s-nail -#

$ echo 'urlcodec enc <unencoded_password>' | s-nail -#

送信コマンド

$ echo "mail_body" | s-nail -:/ -S smtp-use-starttls -S v15-compat -S mta=smtp://<encoded_user_id>:<encoded_password>@<smtp_endpoint>:<port> -s "subject" -r <from_address> <to_address>

オプションなど

  • -S: 各種設定
  • -r: 送信元アドレス
  • smtp-use-starttls: 587ポートを使用する場合に記述
  • v15-compat: バージョン15との互換性を有効にする
  • mta: smtpは非推奨なので、mta=smtp://fooと記述

CC, BCC, 添付ファイル

  • CC, BCCはそれぞれ-c , -bで指定する
  • オプションはアドレス毎に指定する必要がある
  • コマンドの最後の引数が通常の送信先アドレス
    • 例: -c [address01] -c [address02] -b [address03] [address04]
    • 01, 02 → CC, 03 → BCC, 04 → TO となる
  • 添付ファイルは-aで指定する

外部リンク

man page (ubuntu)

https://manpages.ubuntu.com/manpages/xenial/man1/heirloom-mailx.1.html#examples