• 作成:
  • 更新:

独自ドメインのメールをGmailから送信するとDMARCが失敗するのをSendGridを使って解決

メールサーバの自前運用をやめたかった

  • ソフトウェアの管理が面倒
  • ハードウェア的な障害(ケーブルの抜けや停電やネットワーク切断を含む)の管理が面倒
  • 個人向けサービスではIPアドレスが本当に固定なのか安心できないためセキュリティ的な不安を感じます
  • メールサーバと他のサーバを共用していたため他のサービスでの障害でメールというかなり重要なサービスが止まるのが嫌
  • DKIMとか自前で管理するにはだるすぎる

メールサーバをPostfixとDovecotで運用するのはそれなりに面白い体験でしたが、もうそろそろ変化もないですし、マネージドなサービスに任せたいと思いました。

Google Workspaceは使いたくない

料金が月680円でそこそこ高いというのも理由の一つですが、ストレージサービスなども含めるとそれなりのリターンのあるサービスだとは思います。

しかしもう私は個人用のGoogleアカウントを持っており、 Androidアプリの購入紐付けなどはそこに発生しているため、個人アカウントの利用をやめるのは不可能です。更にGoogle Workspaceのアカウントを活用しようとすると、複数のアカウントを頻繁に切り替える必要があって非常に面倒くさいことが予想されます。

なので有料のGoogle Workspaceはちゃんとリターンを受けられる状態で使うことが出来ません。

もっと個人事業主としての活動が活発になって、 Meetやカレンダーの共有機能などを使うようになったら、切り替え覚悟で契約した方が便利かもしれませんが。

最初はさくらのレンタルサーバーを検討していました

最初はさくらのレンタルサーバーを検討していました。

理由の一つは日本のサービスだからです。

別に国産信仰とかいうわけではなくて、メールというのは必然的にストレージとしての機能があるので、日本国内で問題ないデータを保持していても、海外の基準で雑にアカウントを凍結される可能性があるというのは嫌だなと思いました。

日本でも違法なものは外部サービスを使っている場合ではないので考えないことにします。

ちなみにさくらのメールボックスというメール専用のサービスもありますが、さくらのメールボックスが86円で、さくらのレンタルサーバは最安プラン(ライト)で128円でメール機能もついてきて、あまり値段が変わらないことに気が付きました。

さくらのレンタルサーバーのメール機能はメールボックスの完全上位互換かよく分からなかったので問い合わせてみました。

お問い合わせいただき、誠にありがとうございます。さくらインターネット カスタマーセンターの**と申します。

この度は、弊社サーバのご利用をご検討いただきまして、誠にありがとうございます。

つまり、さくらのレンタルサーバのライトのメール機能は、さくらのメールボックスプランで行えることは全て行なえますか?

上記、お客様のご認識の通りでございます。

また、さくらのレンタルサーバ[ライト]プランではWEB機能が利用できますので、WEBとメールの運用をご希望であれば、[ライト]プラン以上のご利用をご検討いただけますでしょうか。

※[ライト]プランでメール機能のみ使用することは可能です。

[さくらのメールボックス / さくらのレンタルサーバ]を新規にお申し込みいただきますと、2週間の無料お試し期間がございますので、ご要望に叶う運用が可能かお試し期間中に動作をご確認いただければ幸いでございます。

上位互換だそうです。

一応ストレージが100GBついてくるので、 ftpバックエンドでGitリポジトリを置いておくとかに良いかもしれませんね。

さくらぽけっと - レンタルサーバーはさくらインターネットを使ってクラウドストレージ的に使っても良いかもしれません。

レンタルサーバらしく制限が激しくて、当然rootは貰えませんし、 CGIで動くごく一部のもの以外は動かせませんし、ライトプランだとssh接続も出来ませんが。

VPSの方は一番安くても590円なのでそれならGoogle Workspaceでも大差ないですね。そもそもVPSの方はメール機能ついてないのでソフトウェア的な保守は結局自分でやる必要がありますが。

もう一つの理由は価格が月128円で格段に安いということですね。

Protonは月額15ユーロ、つまり1500円。

Thunderbirdなどが使えないことに目を瞑ったとして、(瞑れるものではないですが!) Tutanota ご利用料を使ったとして1ユーロで144円は良いんだけど、 1GBのストレージは少なすぎる。 2ユーロ足せば10GB増えるますが。

Secure e-mail for private and business customers | mailbox.org は3ユーロで470円ぐらいで、確かに値段と機能は良さそうだけど、やはりドイツだと法律がかなり違ってきそうですし気が引けます。

さくらのメールボックスはSPFには対応しています

ちなみに、

「さくらのメールボックス」はどえらく激安だが、独自ドメインだとSPFにもDKIMにも対応しない粗末な仕様

コスパに優れたメールサーバ「mailbox.org」 | 点と接線。

にはDKIMにもSPF対応してないって書いていますがSPFは対応してるはずです。

おそらく、

SPFレコードの設定は、弊社ネームサーバーを利用しているドメインのみ有効です。

SPFレコードを設定したい | さくらのサポート情報

の記述を見て勘違いしたのでしょうが、

一応お問い合わせをして、

お客様にてご確認いただいております通り、サーバコントロールパネルから SPFレコードを設定する場合、弊社ネームサーバを利用しているドメインのみ有効でございます。

 ▼SPFレコードを設定したい  https://help.sakura.ad.jp/domain/2306/

大変恐れ入りますが、他社のネームサーバを利用するご予定の場合は、他社のネームサーバ側でSPFレコードを設定いただく必要がございます。

他社のネームサーバ側でSPFレコードを設定する場合は、以下例のように TXTレコードに弊社のサーバ情報を追記していただけますでしょうか。

 例)TXT "v=spf1 a:www○○○.sakura.ne.jp mx ~all"

※「www○○○.sakura.ne.jp」はさくらのレンタルサーバのホスト名であり、 サーバのお申し込み完了後、サーバコントロールパネルのサーバー情報より ご確認いただけます。

 ▼サーバー情報を確認したい  https://help.sakura.ad.jp/rs/2232/

なお、ゾーン情報の編集後、インターネット上にドメインの情報が浸透するまで数時間~最大48時間程度お時間を要します。あらかじめご了承ください。

ご不明な点やご質問等ございましたら、本メール返信にてお問い合わせください。

今後ともさくらインターネットをよろしくお願いいたします。

単にこのヘルプページで解説しているDNSレコード編集画面が、さくらにのみ対応していないだけで、外部でDNSレコードを管理している場合はその外部で編集すれば問題ありません。

さくらのレンタルサーバーを試していました

というわけでさくらのレンタルサーバーの12ヶ月(1571円)を2週間お試しで試していました。

135円お得のために128*36=4608円も前払いはしたくないかと思って12ヶ月お試しです。もっと得度が高いなら考えますが。

しかし以下の問題があり本当にこれを使って良いのか悩ましくなってきました。

  • DKIMをマネージド管理してくれない(使う前から知っていたけれど)
  • postmasterに届いたメールを転送できない(Cloudflareのcatch-allと組み合わせればそこまで問題ではない)

二段階認証を有効化出来ない

アカウントの2段階認証を有効化出来なかったので、以下のようにお問い合わせをしました。

二段階認証が設定できない。

さくらのレンタルサーバーを使おうと思っていますが、とりあえずアカウントのセキュリティを高めようと二段階認証を設定しようとしたのですが設定できませんでした。

TOTPを使って設定しようとしたのですが、アプリにQRコードを読み込ませるところまではうまく行きますが、ワンタイムパスワードを入力してセットアップしようとしても、

19:39:28.610 XHRPOST
https://secure.sakura.ad.jp/auth/api/auth/two_step/authenticate/totp
[HTTP/1.1 401 Unauthorized 580ms]

という通信になってしまって、正常にセットアップが出来ません。

番号がおかしいのかなと思って何度か試したのですが、失敗しました。二段階認証アプリにAuthyを使っているのが悪いのかと思いましたが、それで成功している人は居るようです。さくらインターネットの2段階認証を有効化しました | にーまるろく あーるしー どっと ねっと使っているブラウザのUAは以下の通りです。

Mozilla/5.0 (X11; Linux x86_64; rv:109.0** Gecko/20100101 Firefox/117.0

二段階認証使えないらしいです

お問い合わせいただき、誠にありがとうございます。さくらインターネット カスタマーセンターの**と申します。

ご連絡いただきありがとうございます。 2段階認証の設定につきまして、お手数をおかけしております。

システムエラーとなる場合、ご利用のブラウザが関連している可能性がございます。誠に恐れ入りますが、以下サポートページをご確認の上、推奨環境・ブラウザにて再度お試しいただけますでしょうか。

と帰ってきたんですが推奨環境にFirefox入ってるし、 webブラウザで完結する以上、流石にLinuxだからどうこうということは無いと思います。

もしWindowsでしか二段階認証が使えない場合は、普通に使わない理由に入るレベルですね。

IMAPのフォルダマッピングがおかしい

Thunderbirdで開いたら受信トレイしか出てこなくてびっくり。「購読」を選択したら、

初期フォルダマッピング

のように他も出てきたんですがIMAPのマッピングがおかしいです。受信トレイの中に送信済みトレイが入ってるのは流石におかしいです。

POPだと単一の受信トレイしか認識されないです。

一応お問い合わせをしたのですが、こういう根幹の部分は修正される気があまりしませんね。

実用上の問題はそこまで無いと思うけれど、流石に気持ち悪すぎます。

Thunderbirdの設定で手動設定したら、受信トレイの下にあるとか、ローカライズされてないとかの問題はそのままだけど、とりあえず色だけは認識されるようにはなりました。 Thunderbird 60.x + IMAP + さくらインターネットの組み合わせ - 日々雑事&備考録

設定後のフォルダマッピング

修正されないようです

お問い合わせいただき、誠にありがとうございます。さくらインターネット カスタマーセンターの**と申します。

お問い合わせいただきましたところ誠に恐れ入りますが、メールソフトについてはサーバに接続する設定以外弊社にて情報を持ち合わせておらず、接続後の同期設定やメールソフト側のフォルダ表示についてはサポート対象外といたしております。

ご希望に沿えない回答となり申し訳ございませんが、何卒ご理解賜りますようお願いいたします。

お手数ではございますが、お客様にてウェブドキュメントなどからお調べいただきますか、メールソフト提供元へとご確認いただけますようお願い申し上げます。

CloudflareのEmail RoutingとGmailの組み合わせで良いのではと思い始めました

これ関係で色々調べていたら、もう無料の方のGmailを経由して送受信しても良いのではと思い始めました。

個人でメインで既に使っているGoogleアカウントのGmail機能は有効化しません。メールアドレス名が黒歴史なのでそれを検索結果ページとかで毎日見ていたら強迫性障害を刺激して苦しくなることが予想されます。別のユーザー名でたまに見かけるだけでも苦しい。

Googleアカウントのメールアドレス名を変更することは出来ません。 OAuthとかの仕様を見ているとそこで同一性判断をするidになってしまっているのでこれが覆ることは無いでしょう。

なのでGoogle Workspaceと同じくアカウントは新しく発行することになります。

プライマリのGoogleアカウントのGmailを使っても結局はPGPを近々導入予定なので、 AndroidのGmailアプリは使わずにK-9 Mailを使う予定なので、あまりアカウントを統合するメリットはありませんしね。 PCでももちろんThunderbirdを使います。

ただAndroidでGmailアプリを利用するメリットとして、連携機能とかでカレンダー自動書き込みとかやってくれるらしいのが気になってはいるんですよね。強迫性障害がまたQoL下げてますね。

Googleのサービス継続は信用できないので、 Google Workspace契約して即座にGoogleが仕様変更して終了とかが現実的な恐怖ですが、無料版ならGmail + Cloudflareでも良いかなと思い始めました。無料ならアカウントの機能を使い倒せなくてもそんなに損をした気持ちにはなりません。途中で使えなくなっても無料なら仕方がないと思えます。

最初の方に述べてたアメリカリスクについては、もうプライベートでも仕事でもGoogleやAmazonやMicrosoftにドシドシ依存しているので、本当は気にしてもどうしようも無さそうというのが正直なところです。

一応強迫性障害以外のデメリットとして、 Googleでログインとかの連携機能とか、 Google自身の自動メール作成とかで、古いメールアドレスが誤爆的に使われてしまう危険性はあります。

というわけで、 Gmail利用でうまく行ったらさくらのレンタルサーバーの試用期間は申し訳ないがキャンセルかなと思って作業を進めました。

受信では、 CloudflareのEmail Routingで脱・無償版G Suite(卒業) – Toto Note が割とまとまっていたので、これだけ読んでいれば良いと思います。送信については私のケースでは参考になりませんでした。

Thunderbirdで2GBほどのメールをコピーするのに20時間ぐらいかかりました。一回mbox形式とかでexportしてimportするのをやった方が良かったかもしれません。 1ファイルごとにコネクション張ってて効率悪いとかありそう。やってる間ほぼ寝てたのでなんとかなりましたが。

雑に転送設定して、他のGmailアカウントから送信したら無事到達しました。迷惑メール扱いされてましたけど。

メールの内容が簡素すぎたからか、 Cloudflareを通して転送してたからか、それともToがGmail自身のものじゃないからか…

簡素すぎるなら問題はないけれど、他の理由なら対策をしないといけませんね。

まあとりあえず受信は簡単に出来ました。

送信の時にDMARCを通すのが難しい

などで紹介されている送信する方法は、アプリパスワードを使ってGmailのSMTPサーバを使うというものです。

これは私の求める環境を満たしませんでした。

何故ならばDMARCの認証に失敗するからです。

SPFをpassしてもDMARCはメールサーバのホスト名を判定するため、 ncaq@ncaq.netFROMでSMTPサーバがsmtp.gmail.comだと、以下のようにDMARCはfailします。

Authentication-Results: mx.google.com;
       spf=pass (google.com: domain of ncaq.net@gmail.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=ncaq.net@gmail.com;
       dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=QUARANTINE) header.from=ncaq.net

DMARCの認証ってSPFやDKIMと何が違うんですか?を説明してみる。|藤田紀行(株式会社WOW WORLD CTO)が参考になりました。

仕方ないし、やはりさくらのレンタルサーバーを使うかと思ったのですが、これ多分そういう問題ではないですね。 DMARC的にSMTPサーバのドメインがFROMのドメインと完全に不一致だとダメになるわけで、さくらのレンタルサーバーでもそれを解決するためには、おそらくさくらインターネットの方でドメインを管理する必要があるでしょう。流石にCloudflareから移管するのは結構嫌ですね。 CloudflareのDNS画面は使いやすいし、 DNSの設定が反映されるのが早いですし、ドメイン登録している所で管理した方が楽そうですし。そもそも管理してもSMTPサーバが独自ドメインになってくれる保証は無いので、移管しても解決しない危険性もあります。

DMARCを無効化するのは多分多くの人がやっている選択肢ですが、それは流石に嫌です。

迷惑メールとして扱われる可能性が高くなるというのは些細な問題ですが、怖いのは「メールが送れないこと」ではなくて「私のメールアドレスだと誰かが偽ってソーシャルハッキングを行うこと」の方です。

Cloudflare MailChannelsの使用を検討しましたが、多分これweb APIで送るためのものでSMTPサーバとして接続するためのものではないですね。

送信済みトレイとかに残らないとなると色々と不便です。

SendGridを使うことで解決しました

SendGridが1日100件まで無料で、 SMTPサーバを提供していました。

仕事でSendGridの安いEssentialsプランを使うのは辞めよう - Qiita に書いてあるように、無料版だとIPまとめてブラックリストにぶちこまれるリスクがありますが、個人なら最悪Gmailから直接送信すれば良いです。どうせ送信しませんし。

余談ですが、これSpamhaus側もDMARC時代に適合して、設定してるものはドメイン名でも照合するとかしてくれるようになりませんかね。ドメイン名は未だスパム目的でもコストを考えて雑に取りまくるというわけにはいかないはずなので。

SendGridのガイド通りに設定するだけでDKIM含めてらくらく設定が可能でした。

SMTPの検証するときは指定されたGmailでアカウント追加する時にサーバにユーザ名とパスワード設定して、雑なところにメールを送りました。送らなくても良かったかもしれません。

CloudflareのDNSレコードがいよいよ混沌としてきたので、いい加減Terraformとかで管理した方が良さそうですね。

SendGridを使うことでSPF、DKIM、DMARC全てパスすることが容易に実現できました。

オールパス

さらにGmailを経由していると出てくる経由の表示も消えました。

経由あり
経由なし

ただ一つ問題があって、 SendGridにアカウント登録した後にcompany nameを聞かれるんですよね。開業届を提出済みの個人事業主なのでそれで押し通ることにしました。一応検索してダメか調査してみましたがいまひとつ分かりません。怒られたりしてダメだったらまた何か考えます。仕方がないので送信SMTPサーバだけは自宅サーバで運用するとか。受信ではなく送信なら障害起きても致命傷では無いですし、セキュリティ的な問題も中々起きないと思います。

Thunderbirdの設定

Gmailは一般的なメールサーバとは違って、少しIMAPの設定が特殊です。

Thunderbirdは本来Gmailの設定を読み取って自動で設定してくれるのですが、独自ドメインを入力すると行ってくれません。

そうすると送信済みトレイとかの設定が少し奇妙なことになります。

独自ドメインのメールアドレスをそのまま入力するより、一度Gmailのアカウントを追加して、その後にアカウント名などを変更した方が良いでしょう。

またSendGridのパスワードが受信用のものと違うので、そのままセットアップすると、保存されているパスワード欄から削除してログインをやり直す必要があります。

それを考えるとやはり一度Gmailでセットアップして別途SMTPサーバを追加した方が良いでしょう。

本文が空だとDKIMが失敗する

ThunderbirdでSendGrid経由でメールを送信するとき、本文が空だとDKIMのチェックが失敗します。

DKIMが本文も署名のために使っているので仕様かと思ったんですが、ちょっと調べてみてもよく分かりませんでした。

色々と要素が多すぎて何が原因なのか今ひとつ分かりません。

実用的に本文が空のメールはあまり送らないと思いますし、送ってDKIMのチェックが失敗してもSPFとDMARCはパスしているので、致命的に迷惑メール判定を食らうわけでも無いです。

なのでみんな気にしてないのかなと思います。

K-9 Mailの設定

K-9 Mailも、独自ドメインを入れるとどのGmailアカウントに接続するべきか判別がつかなくなり、特にメインなど他のアカウントを独自ドメインアカウントでログインできるようにしていると、ログイン名を無視して別のGmailアカウントにOAuth接続を試みてしまいます。

なのでK-9 MailもThunderbirdと同様に、一度Gmailアカウントを追加して、その後にアカウント名などを変更した方が良いでしょう。

FROMとSMTPも後からの変更で問題ありません。

ただ、ゼロから構築する場合はそれで問題ないのですが、エクスポートとインポート機能を使って認証しようとしても、こういうイレギュラーな設定は想定されていないのかうまく認証が通りませんでした。

超絶暇になったらこういうケースにも対応するようにパッチを書いてみたいですね。

明らかにGoogle Workspaceを素直に契約した方が良かった

こういうのでちまちま消耗してしまったので、最初からGoogle Workspaceに月680円払って雑に済ませておいたほうが良かったかなと思いました。

自分の時給とか考えると、そっちの方が絶対に良い。

今回初期セットアップに使った時間を時給換算すると、これをGoogle Workspaceの料金で相殺されるまでにどれぐらい時間を使うのか計算していませんが、相当な時間だと思います。