ssmtpでoutlook系のメールアドレス経由でSMTP送信する

スポンサーリンク

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を素直に設定するだけで動く。

コメント

  1. 匿名 より:

    まったく同じ問題で原因を探していました。私の場合、何年も”revaliases”なしで動作していました。メーラーoutlookを諦めようとしていました。感謝です。ありがとうございます。

タイトルとURLをコピーしました