ここ最近なって、Gmailで他のメールサーバー経由でのメール送信がエラーになる問題が発生しているようです。
現象
メールを送信した後にこのようなエラーが返ってきます。
メールの配信エラー
[名前] の機能を使用して、別のアドレスまたは別のエイリアスからこのメールを送信しようとしています。[名前] のアカウントの設定に誤りがあるか、設定が最新の状態ではありません。設定を確認して、もう一度送信してみてください。
SMTPの設定に問題があるのかな、と思い改めて入力してもこのエラー。
エラーメッセージは
TLS Negotiation failed, the certificate doesn't match the host., code: 0
とあるので、接続先のドメイン名と証明書のドメイン名が異なっている模様。
原因はおそらくGmailのセキュリティー強化。
G Suite アップデート ブログ: デフォルトの TLS およびその他の新機能を使って Gmail のメール セキュリティを強化する
原因特定・対処
では早速SMTPサーバーで使用されている証明書のドメイン名を確認しましょう。このコマンドでご確認できます(Mac、Amazon Linuxで確認)。
openssl s_client -connect SMTPサーバーのドメイン名:587 -starttls smtp
コマンドを実行したらコマンド待ちの状態になるので quit で抜けます。
コマンドを実行するといろいろ出力されますが、コマンド実行直後の表示を確認します。
SMTPサーバーのドメイン名 と 証明書のドメイン名 が異なっていればそれが原因です。
GmailのSMTPサーバーで入力するドメインを 証明書のドメイン名 に変更することで解決するはずです。
対処不可能な場合
上記画像のように、結果に verify error:num=18:self signed certificate
と出た場合は、書き換えても改善しません。
メールサーバーを運営しているレンタルサーバー、プロバイダなどに問い合わせるか、サービスの乗り換えを検討しましょう。