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にエンコードされます。


