mailコマンドでメール送信できない「send-mail: Cannot open mail:25」

特定のサーバーでメールが届かないことがわかり、サーバーにログインしてmailコマンドでメール送信すると下記のようにエラーになります

$ echo "test" | mail -s "test" hoge@example.com
$ send-mail: Cannot open mail:25

また、メールログを確認すると以下のエラーがでています

$ sudo head /var/log/maillog
Dec  2 05:54:17 bone sSMTP[19630]: Unable to locate mail
Dec  2 05:54:17 bone sSMTP[19630]: Cannot open mail:25

このサーバーは結構古く「qmail」をソースからインストールして利用していました。
ログを見ると「sSMTP[19630]: Cannot open mail:25」となっているので、MTAが「sSMTP」に変更されています。

yum(dnf)コマンドで何かのパッケージをインストールした際に「sSMTP」がインストールされMTAが変更になり、sendmailのパスが変更されていないか確認します

$ ls -l /usr/sbin/sendmail
lrwxrwxrwx 1 root root 21 Dec  4 17:04 /usr/sbin/sendmail -> /etc/alternatives/mta

上記のように、yum(dnf)でインストールしたMTAに変更されているので、qmailのパスに変更すると、エラーが解消されmailコマンドを利用できるようになりました

$ sudo ln -sfn /var/qmail/bin/sendmail /usr/sbin/sendmail
$ sudo ln -sfn /var/qmail/bin/sendmail /usr/lib/sendmail

send-mail: Cannot open mail:25」のエラーは、mailコマンド(またはそのバックエンド)がSMTPサーバーへの接続に失敗した時のエラーメッセージのようです。
mailコマンドは通常、システムのデフォルトMTA(Mail Transfer Agent)を使用してメールを送信しますが、MTAの設定が適切でない場合に問題が発生するようです。

私の環境では、MTAがyum(dnf)コマンドで変更され、変更されたMTAの設定を行っていなかったので、「send-mail: Cannot open mail:25」のエラーとなっていたと考えられます