Microsoft系列のメールアドレスを利用してSMTPサーバー認証をしてサーバーよりメールを送信する設定。
outlook exchange livemail hotmailといったメールサービスを送信として利用したい時。
めちゃくちゃハマった。
ssmtp: 554 5.2.0 STOREDRV.Submission.Exception:SendAsDeniedException.MapiExceptionSendAsDenied; Failed to process message due to a permanent exception with message Cannot submit message.
こんなエラーが接続ログに出力されていた。
ssmtp.confの設定は以下
mailhub=smtp.office365.com:587
AuthUser=<MAIL_ADDRESS>
AuthPass=<MAIL_PASSWORD>
UseSTARTTLS=YES
FromLineOverride=YES
そしてこれが肝、/etc/ssmtp/revaliases へ以下記述を追加保存する。
<アプリを実行するユーザー名>:<MAIL_ADDRESS>:smtp.office365.com:587
PHPで動作させるならアプリを実行するユーザーはPHPを実行しているユーザーとなる。
/etc/ssmtp/revaliasesは、ユーザー名に合致した際にメールアドレスを選択するものらしい。
SMTP認証の際、ヘッダーに含まれるFromがアカウントと同じメールアドレスではないと、なりすましの可能性より弾かれる、という感じらしい。
Gmailの場合は、安全性の低いアプリを許可、あるいは、アプリ用の認証パスワードを作り、ssmtp.confを素直に設定するだけで動く。
コメント
まったく同じ問題で原因を探していました。私の場合、何年も”revaliases”なしで動作していました。メーラーoutlookを諦めようとしていました。感謝です。ありがとうございます。