** この記事はClaude Codeと作業した記録をClaude Codeに記事にてもらい、Claude in Chromeを通してClaude Codeが投稿しています。 **
自宅サーバで長年お世話になっていたTwilio SendGridのFreeプランが、2026年3月31日で終了することになりました。4月1日から60日間のトライアルに移行し、5月末にはメール送信が止まってしまうとのこと。
うちのサーバではPostfix経由でSendGridを使って、Redmineの通知メールを飛ばしたり、lambeden.jpに届いたメールをGmailに転送したりしていました。さてどうしましょうか。
OCI Email Deliveryを選んだ理由
うちのサーバはOracle Cloud Infrastructure(OCI)のAmpere A1インスタンスで動いています。OCIにはEmail Deliveryというメール配信サービスがあって、月3,000通まで無料で使えます。同じプラットフォーム内で完結するので、これが一番スマートな選択肢かなということで移行してみました。
Claudeに手順を聞きながら作業しました (^_^)/
OCI Email Deliveryの設定
1. SMTP資格証明の生成
OCIコンソールで「アイデンティティ」→「ドメイン」→「Default」→「ユーザー」から自分のユーザーを開いて、SMTP資格証明を生成します。
⚠️ 生成されたユーザー名とパスワードはその場でコピー必須。画面を閉じると二度と確認できません!
2. 承認済み送信者の登録
「開発者サービス」→「電子メール配信」→「承認済送信者」で、メールのFromアドレスとして使うアドレスを登録します。
3. SPFの設定
承認済送信者の画面から「SPFの表示」でTXTレコードを確認して、お名前.comのDNS管理画面に追加します。
v=spf1 include:ap.rp.oracleemaildelivery.com ~all
4. DKIMの設定
「電子メール配信」→「電子メール・ドメイン」でドメインを作成して「DKIMの追加」からCNAMEレコードを生成、DNSに追加します。セレクター名はmail-tokyo-20260305みたいな形式が推奨されています。
10〜30分待って「Refresh DKIM Status」でActiveになれば完了です。
5. Postfixの設定変更
/etc/postfix/main.cfのリレーホストをOCIに変更します。
relayhost = [smtp.email.ap-tokyo-1.oci.oraclecloud.com]:587
/etc/postfix/sasl_passwdの認証情報も更新。
[smtp.email.ap-tokyo-1.oci.oraclecloud.com]:587 SMTPユーザー名:パスワード
あとSMTPUTF8関連のエラーが出たのでmain.cfに以下も追加しました。
smtputf8_enable = no
反映して動作確認。
sudo postmap /etc/postfix/sasl_passwd
sudo systemctl reload postfix
echo "テスト" | mail -s "テスト" -r xxxx@lambeden.jp 宛先アドレス
Redmineの通知メールもバッチリ届くようになりました。
問題発覚:転送メールが弾かれる
実はlambeden.jpに届いたメールをGmailに転送する設定もしていて、ここでハマりました。
OCI Email DeliveryはエンベロープFromとヘッダFromの両方が承認済み送信者に登録されていないと拒否する仕様です。転送メールの場合、Fromは外部の不特定の送信者になるので、これは構造的にどうにもなりません。
解決策:転送だけGmail SMTPを使う
PostfixのTransport Mapsで、自分のGmailアドレス宛の転送メールだけGmailのSMTPサーバー経由で送るようにしました。
/etc/postfix/transportに追記:
xxxx@gmail.com smtp:[smtp.gmail.com]:587
/etc/postfix/sasl_passwdにGmailのアプリパスワードを追記:
[smtp.gmail.com]:587 xxxx@gmail.com:アプリパスワード
/etc/postfix/main.cfにtransport_mapsを追加:
transport_maps = hash:/etc/postfix/transport
反映して動作確認:
sudo postmap /etc/postfix/transport
sudo postmap /etc/postfix/sasl_passwd
sudo systemctl reload postfix
iCloudからlambeden.jpにテストメールを送ったら、ちゃんとGmailに届きました!GmailはFromを自分のGmailアドレスに書き換えますが、X-Google-Original-Fromヘッダに元の送信者が保持されるので実用上問題ありません。
まとめ
最終的なPostfixの構成はこうなりました。
| 用途 | 経路 |
|---|---|
| Redmine通知・外部への送信 | OCI Email Delivery |
| Gmailへの転送 | Gmail SMTP |
OCI Email Deliveryは同じプラットフォーム内で完結するので管理が楽で良いですね。SendGridよりも設定の自由度が低い部分もありましたが、無事移行できて一安心です。