Mailコマンドで外部メールサーバーから送信する(SMTP認証)

rockylinux_logo Linux
rockylinux_logo

MailコマンドでSMTP認証をおこなって、外部メールサーバーを指定する

Linuxサーバーからメール送信する際に「mail」コマンドを利用しますが、Gmail等の送信先でSPF・DKIMの設定しないとメールが届かなかったり迷惑メールない場合があります。
その都度、送信するサーバーのSPF・DKIMの設定が面倒なので、外部にあるSPF・DKIMを設定されているメールサーバー経由で送信する方法を紹介します

「.mailrc」を編集してSMTP認証を利用する

.mailrc」ファイルは、mailxコマンドでメールの送受信を行う際に使用する設定ファイルです。
このファイルは、各ユーザーのホームディレクトリ($HOME/.mailrc)に配置されます。

このファイルにSMTP認証に使用する、ユーザー名、パスワード、SMTPサーバー等を指定します

$ vi ~/.mailrc

set smtp=smtp://mail.example.com:587
set smtp-auth=login
set smtp-auth-user=user001@example.com
set smtp-auth-password=your pasword
set from=user001@example.com

s-nailの新しいバージョン(v15以降)では、「.mailrc」の設定方法が異なっている

RockyLinux9のs-nailのバージョンでは、上記の設定ではメール送信できませんでした

echo "テストメール" | mail -s "test" user01@example.jp
s-nail: Warning: variable superseded or obsoleted: smtp
s-nail: Warning: variable superseded or obsoleted: smtp-auth-user
s-nail: Warning: variable superseded or obsoleted: smtp-auth-password
s-nail: Obsoletion warning: please do not use *smtp*, instead assign a smtp:// URL to *mta*!
s-nail: Obsoletion warning: Use of old-style credentials, which will vanish in v15!
s-nail: ... message not sent

エラーの原因ですが、s-nailの新しいバージョン(v15以降)では、設定した「smtp」、「smtp-auth-user」、「smtp-auth-password」といった設定変数が非推奨または廃止されるています。
smtp:// のURLを mta 変数に設定し、認証情報はより新しい形式で扱うことが推奨されていますので、その方法の記述に変更します

$ vi ~/.mailrc
set v15-compat
set mta=smtp://user01%40example.com:password@mail.example.com:587
set from="user01@example.com"

# 書式 @,! URLエンコードが必要
# mta=smtp://<user>:<pass>@<server>:<port>

URL形式の解説: mta=smtp://user:password@hostname:port という形式で記述します。パスワードに特殊文字が含まれる場合は、URLエンコードが必要です。
また、ユーザー名がメールアドレスとなっている場合は、@もURLエンコードしています。

代表的な、URLエンコードは以下となります

  • !%21 にエンコードされます。
  • @%40 にエンコードされます。
  • #%23 にエンコードされます。

スポンサーリンク
スポンサーリンク
スポンサーリンク
スポンサーリンク
Linux
スポンサーリンク
シェアする
adminをフォローする
タイトルとURLをコピーしました