機能 / 基本機能
メール送受信
メール業務の中核となる送受信。rivio はインフラ側で多くの安全弁を持ちながら、利用者には見えない形で運用を支えます。
IMAP 定期同期(3分ごと)
Laravel Scheduler が3分ごとに新着メールを取得します。UID ベースの増分同期なので、メールサーバに余分な負荷をかけません。
HTML サニタイズ
受信した HTML メールから script タグやイベントハンドラを除去。XSS のリスクを排除した上で安全にレンダリングします。
添付ファイル保存・ダウンロード
添付ファイル・インライン画像は自動的に保存され、画面から個別にダウンロード可能。cid: 参照のインライン画像はファイル名から推測してベストエフォートで表示します(HTML サニタイザの仕様上、一部画像タグが除去される場合があります)。
重複排除
message_id + 内容ハッシュ(SHA256)で受信メールの重複を排除。再同期や再起動でも同じメールが二重に登録されません。
キュー送信
送信は SendEmailJob でバックグラウンド処理。SMTP 失敗時は合計3試行(再試行2回)まで自動リトライします。レート制限による遅延は retryUntil 内で粘り強く再試行されます。
冪等性保証(idempotency_key)
同じ送信リクエストが複数回到達しても、idempotency_key で識別して二重送信を防止。ネットワーク不安定下でも安心です。
送信レート保護
rivio インフラ保護のため、テナント単位で送信レート制限を適用しています。具体値は backend/config/sending.php(環境変数で運用変更可)を参照。通常利用の範囲では制限を意識する必要はありません。
日次上限到達時の自動停止
日次送信上限を超過した場合、email_sending_enabled=false + 理由コード daily_limit_exceeded を自動セットして送信を停止。plan-info API 経由でアプリ画面に「送信停止中」のバナーが表示されます。
送信済みフォルダ追加
送信完了後、IMAP の Sent フォルダへ自動追記。他のメーラー(スマホアプリ等)でも送信履歴を確認できます。
BYO-SMTP(持ち込み SMTP)
送信は既存の SMTP サーバ(Xserver 等のレンタル SMTP、自社サーバ等)を使用します。送信レピュテーションは SMTP プロバイダ側に依存するため、ドメイン認証(SPF/DKIM/DMARC)はそちらで設定してください。
送信異常検知
1時間あたりの送信数が閾値を超えると、運用担当者に Slack 通知を送ります。スパム送信や設定ミスを早期に検知できます。