くりゅぴ!

サーバーやWEB問題解決のメモから生活お得情報まで。未分類のものは執筆中

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

サーバー開発

タグ:

サーバー開発の最新記事

2020年8月24日
さくらサーバー移管後DNSゾーンは変更できない
2020年7月13日
NginxにSERVER_NAMEがない
2020年6月18日
NginxにREDIRECT_URLを追加する

コメントを残す

メールアドレスが公開されることはありません。