Cloudflare Email Routingを使って、Gmailでカスタムドメインのメールを受信する

最近、Emailネタが多くなっている気がしますが。Gmailをカスタムドメインで使用する機能が有料化されて、メールシステムをどうしようか思っているのが関係しているのだと思う。 今までは、メールシステムを自分で作って、運用するという構成法を見てきました。 Docker MailserverでEmailサーバーを10分で立てる Docker MailserverからMailjetにrelayさせてEmailの送信をする Docker Mailserverのメールアカウント管理 ただ、この場合、ホストマシンが必要になるのでやや面倒。無料のクラウドサービスで閉じる方法はないのかと思って見ていたら、多分Cloudflare Email Routingを使うのが一番簡単、安く、早そうだ。理屈はこうだ。 カスタムドメインを確保して Cloudflrare Email Routingでカスタムドメイン宛のメールを全部Gmailに転送する Gmailでメールの受信・管理・閲覧をする 今までGmailで使っていたカスタムドメインをそのまま使うことにすれば良いので、Cloudflareのアカウントを作れば良い。 1. カスタムドメインをCloudflareに登録する Email Routingを使うには、持っているドメインをCloudflareに登録する必要がある。Cloudflareのメニュー「Webサイト」から登録できる。 ちなみに、CloudflareはDNSサービス(無料)や、レジストリサービス(ドメイン保有・管理、卸値価格)もやっているが、Email Routingを使う場合、これらのサービスを使っていなくも問題ない。これらのサービスについては、以下の記事でまとめいる。 Cloudflareで権威DNSサーバを使って独自ドメインの管理をする この記事では、例としてmk01.xyzというカスタムドメインを使う(初年99円くらいで買えるので)。 2. Email Routingの設定 Cloudflareのメニューから、上記で登録したカスタムドメインのページを開く。そうすると、メニューに「メールアドレス」が出てくるので、設定ページにジャンプする。 2.1 転送先のメールアドレスの登録 転送先のEmailアドレス(Gmailのアドレス)を登録する。登録すると、確認メールが届き、認証リンクをクリックするまでは使えない。転送先は複数登録できるようになっている。 2.2 カスタムドメインのDNSにMXレコードを追加 Cloudflareの画面上にMXとSPFレコードが出てくるので、これをカスタムドメインのDNSに登録する。ちなみに、Cloudflare DNSを使っている場合は、自動でやってくれる(さすが)。 今回は、別のDNSサービスを使ってみて、動作するか確認してみた(結論、問題なく動作する。当たり前か。) DNS登録した後は、digで確認してみる。 ### MXレコード $ dig mk01.xyz mx ; <<>> DiG 9.10.6 <<>> mk01.xyz mx ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13446 ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;mk01....

February 23, 2022

一時的に受信用でしか使わないメールアカウントを用意する

キャンペーンの申し込みやテスト用などで一時的に受信できれば良いメールアドレスをクイックに用意する手順になります。 前提として、既にDocker Mailserver環境があるものとして進めます。Dicker Mailserverについては以下の記事を参照ください。こちらもサクッと設定できる内容になっています。 Docker Mailserverを構築 前提 既に[email protected]でメールが受信できる環境がある。 この時、一時的な受信用メールアドレスのパターンは以下のようになると思います。ちなみに、全てのパターンでクイックに実施できます。 パターン1: 受信したメールの確認は既存のEmailアドレスで実施する この方式は、メールクライアントは既存のまま使えるので便利。端的に言うと、エイリアスを作って、既存メールアカウントに飛ばす。 ステップ1: 受信するメールアカウントを決める 例) [email protected] ステップ2: 受信メールアドレスのDNSにMXレコードを追加。 MXに追加済みのメールドメイン(つまり、もう実際に使っているドメイン@xxxx.comで)で受信する場合はこのステップは不要。 向け先はDocker Mailserverのホスト 例) other.domain.com. 300 IN MX 50 mail.example.com. もちろん、other.domain.comのDNS権威サーバ上のレコードとして上記を追加。 mail.example.comはDocker Mailserverのホスト名 ステップ3: Docker Mailserverにアカウントを追加 実質は、エイリアスを追加することになる。 ここの例では、 [email protected] で受け取って、 [email protected] に流すので、 (Docker Mailserver上で) $ ./setup alias add [email protected] [email protected] 以上でおしまい。DNSにMXレコード追加するところが若干面倒。 パターン2: 受信したメールの確認はそのEmailアドレスで実施する パターン1のステップ3でDocker Mailserverのsetupコマンドを以下の通り変えるだけ。あとは同じ。 (Docker Mailserver上で) $ ./setup email add [email protected] まとめ 慣れると1分くらいでできる。 ドメインごとにトラックされるのが嫌な場合は、捨てドメインを用意しておく。...

February 15, 2022

Docker Mailserverのメールアカウント管理

Docker Mailserverを構築した後は、メールアドレスの追加・削除が非常にシンプルにできる。 基本的には、Docker Mailserverに含まれるsetup.shコマンドで管理可能になっている。 メールアカウントの追加・削除・管理 ### 追加 $ ./setup.sh email add [email protected] [パスワードの入力] ### パスワード変更 $ ./setup.sh email update [email protected] [新しいパスワードの入力] ### リスト $ ./setup.sh email list [email protected] * [email protected] ( 572K / ~ ) [0%] ### 削除 $ ./setup.sh email del [email protected] メールアカウントの追加後はdockerコンテナの再起動せずに変更が適用される。 エイリアスの追加・削除・管理 メールアドレス・アカウントを作るのではなく、複数のメールアカウントの受信を一つのメールアカウントで対応したい場合は、エイリアスを使う。 ### [email protected]宛のメール => [email protected]で受ける ./setup.sh alias add [email protected] [email protected] ### 確認 ./setup.sh alias list [email protected] [email protected] ./setup.sh email list * [email protected] ( 572K / ~ ) [0%] [ aliases -> desk@m....

January 31, 2022

Docker MailserverからMailjetにrelayさせてEmailの送信をする

前回の記事ではメール受信にフォーカスして、Docker Mailserverを構築する方法について書いた。今回は、送信部分について設定してく。 スパムメール対策で、どのクラウド/ISPのネットワークでも基本的にoutbound向けの25番ポートはブロックされている(もし開いていると、世界中のsmtpサーバにメールを送りつけるとこができてしまうので)。その辺の事情はこのページにまとまっている。そのため、自前でメールサーバを立ち上げると、ユーザー認証付きでメールをRelayするSMTPサーバ経由で送ることになる。 このメールRelayのサービスは、自分の加入しているプロバイダ(ISP)が提供してくれることもあるし、自分のGmailを使うケースもよく見ます。しかし、メール送信ではスパム対策として機能するSPF, DKIMなどの設定が必要で、これらのRalayサービスだとそこまで細かく対応してないことが多い。 このEmailのRelayサービスはマーケティングツールなどでも使われることから、色々なサービスがある。今回はMailjetを使ってみる。Mailjetは、一日あたりの送信メール数が200通まで無料で使える。使い方にもよるけど、個人として使うには、メール受信(つまりMailjetは無関係)がほとんどで、200通あれば事足りる。もちろん、SPF, DKIMレコードも自動的に生成してくれるので管理がとても楽だ。 1. Mailjetのアカウントを作成する Mailjet メールアドレスとパスワードだけで、サインアップできる。 メールサービスなのに、登録のためにメールアドレスが必要というのは、「服を買いに行くための服」みたいなものだろうか。 2. MailjetでRelayホスト・アクセスキーを確認する MailjetのAccount Settingsを開いて、メニューパネルの中からSMTP and Sender Settingsに入る。 このページでRelayに 使うホスト名 ユーザー名 パスワード ポート番号(=587) を確認。 3. Docker Mailserverの設定 Docker Mailserverのdocumentページに従って、mailserver.envファイルの以下の項目を設定する。 RELAY_HOST RELAY_PORT RELAY_USER RELAY_PASSWORD 設定ファイルを変更した後、再起動。 $ docker-compose down $ docker-compose up -d 4. SPF, DKIMの設定 MailjetはSPF, DKIMのレコードも自動で生成してくれる。後は、その値をDNSに登録するだけだ。なんて楽なんだ! 再び、MailjetのAccount Settingsから、今度は、Setuo SPF/DKIM Authenticationに飛ぶ。 そこに、全てが書いてあるので、その通りにDNS側を設定。 しかも、Mailjet側から設定の検証もしてくれる。 問題なければ下記の通り、青信号になる。 5. メール送信テスト あとはEmailのクライアントから送信できるかを確認する。 送信数や送信先などは、全てMailjetのページから確認できる。 統計情報を出してくれるものありがたい(?)。 参考 Mailjet Docker Mailserver

January 30, 2022

Docker MailserverでEmailサーバーを10分で立てる

何かしらサービスを申し込む際にはメールアドレスが必要になる。 Docker Mailserverを使って、Docker環境でさくっと立てる方法を書いていく。 今日日、どのISPでもクラウドでも、スパム対策でデフォルトでOutboundのport:25が開いていない。ので、何も考えずにサーバーを立てると、Emailの送信ができない。けど、受信だけできれば十分な場合が多いので問題ない。 送信できるEmail環境構築については、この記事で解説しています。 要件 基本的にdockerおよびdocker-composeの環境があればよい。 docker docker-compose 0. 今回想定する環境設定の値 項目 値 メールサーバ OS Ubuntu Linux メールサーバ Public IP 11.22.33.44 作業ディレクトリ /home/ubuntu/docker-mailserver メールサーバのホスト名 mailserver.example.com メールアドレスのドメイン @m.example.com メールアドレス [email protected] 1. Linuxホストを用意する PublicからアクセスできるLinuxマシンを用意する。ここではAWSのEC2にUbuntu環境を想定する。 LinuxホストのPublic IP: 11.22.33.44 2. LinuxホストのNWポートを開ける 以下のポートの受信を許可する。 Inbound port: 25, 80, 143, 587, 993 EC2の場合はセキュリティグループの設定をする。 port:80はSSL証明書(Let’s Encrypt)の取得・更新のために開けておく。...

January 29, 2022