Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

メールをルーティングする

メールルーティングを設定し、受信メールを既存のメールボックスへ転送するか、Workers で処理します。

最終更新 Markdown で表示Agent セットアップ

ドメイン宛の受信メールを、既存のメールボックス、処理用の Workers、またはその他の宛先へルーティングします。

ドメインを設定する

Email Routing を使う前に、ドメインを設定します。

  1. Cloudflare ダッシュボードで Compute > Email Service > Email Routing を開きます。

    Email Routing を開く ↗
  2. Onboard Domain を選びます。

  3. Cloudflare アカウントのドメインを選びます。任意で、Cloudflare がルートドメインに追加する DNS レコードを確認します。

    • 受信メールを Cloudflare へルーティングする MX レコード。
    • メールルーティングを許可するための SPF 用 TXT レコード。
    • ルーティングしたメールを認証するための DKIM 用 TXT レコード。
  4. Done を選びます。

ドメインのオンボードが完了すると、メールのルーティングを開始できます。

最初のメールをルーティングする

最初のメールは、ダッシュボードでルーティングルールを設定するか、Workers でメールを処理してルーティングできます。

メールをルーティングする最も簡単な方法は、既存のメールアドレスへ転送することです。

宛先アドレスを追加する

ルーティングルールを作成する前に、転送先となる宛先アドレスを追加して確認します。宛先アドレスはアカウント単位で管理し、複数のドメインで再利用できます。

  1. Cloudflare ダッシュボードで Compute > Email Service > Email Routing > Destination Addresses を開きます。

    Email Routing を開く ↗
  2. Destination addresses で、宛先に使うメールアドレスをインラインフォームに入力して送信します。

  3. Cloudflare がそのアドレスに送る確認メールを開き、Verify email address を選択します。

詳細は 宛先アドレスを追加する を参照してください。

ルーティングルールを作成する

  1. Cloudflare ダッシュボードで Compute > Email Service > Email Routing を開きます。

    Email Routing を開く ↗
  2. メールアドレスを作成するドメインを選択します。

  3. Routing Rules タブを選択します。

  4. Create routing rule を選択します。

  5. 最初のルールを設定します(例: support@yourdomain.com 宛のメールを個人のメールアドレスへ転送する)。

    • Email pattern: メールのローカル部(support@yourdomain.com なら support など)を入力し、ドメインを選択します
    • Action: Send to an email
    • Destination: 個人のメールアドレス(your-email@gmail.com など)
  6. Save を選択します。

ルーティングルールをテストする

ルーティングルールが動作することを確認します。

  1. 別のメールアカウントから、作成したアドレス(support@yourdomain.com など)へメールを送ります。宛先アドレスとは別のアカウントから送ってください。同じアカウントから自分宛に見えるメッセージを破棄するプロバイダーがあります。

  2. 宛先の受信トレイで、転送されたメールを確認します。

  3. すぐに見当たらない場合は、迷惑メールフォルダーを確認します。

Workers を使い、転送や返信の前にカスタムロジックでメールを処理します。

メール処理用の Worker を作成する

  1. 新しい Worker プロジェクトを作成します。

    npm create cloudflare@latest email-processor

    プロンプトではテンプレートとして "Hello World" Worker を選びます。その後、プロジェクトディレクトリへ移動します。

    cd email-processor
  2. メール返信の作成に必要なパッケージをインストールします。

    npm install mimetext
  3. Wrangler の設定ファイルに nodejs_compat 互換性フラグを追加します。mimetext パッケージに必要です。

    {
    	"compatibility_flags": ["nodejs_compat"],
    }
    compatibility_flags = [ "nodejs_compat" ]
  4. src/index.ts にメールハンドラーを作成します。

    import { EmailMessage } from "cloudflare:email";
    import { createMimeMessage } from "mimetext";
    
    // ============================================
    // Configuration - Update these values
    // ============================================
    const YOUR_DOMAIN = "yourdomain.com"; // Replace with your verified domain
    const FORWARD_TO_EMAIL = "your-team@example.com"; // Replace with where you want emails forwarded
    
    export default {
    	async email(message, env, ctx): Promise<void> {
    		const sender = message.from;
    		const recipient = message.to;
    		const subject = message.headers.get("subject") || "";
    
    		console.log(
    			`Processing email from ${sender} to ${recipient} with subject ${subject}`,
    		);
    
    		// Route based on recipient
    		if (recipient.includes("support@")) {
    			// Send auto-reply
    			const msg = createMimeMessage();
    			const messageId = message.headers.get("Message-ID");
    			if (messageId) {
    				msg.setHeader("In-Reply-To", messageId);
    				msg.setHeader("References", messageId);
    			}
    			msg.setSender({
    				name: "Support Team",
    				addr: `support@${YOUR_DOMAIN}`,
    			});
    			msg.setRecipient(message.from);
    			msg.setSubject(`Re: ${subject}`);
    
    			// Add plain text version
    			msg.addMessage({
    				contentType: "text/plain",
    				data: "Thank you for contacting support. Your ticket number is 123.\n\nA member of our support team will get back to you shortly.",
    			});
    
    			// Add HTML version
    			msg.addMessage({
    				contentType: "text/html",
    				data: "<p>Thank you for contacting support. Your ticket number is <strong>123</strong>.</p><p>A member of our support team will get back to you shortly.</p>",
    			});
    
    			const replyMessage = new EmailMessage(
    				`support@${YOUR_DOMAIN}`,
    				message.from,
    				msg.asRaw(),
    			);
    
    			await message.reply(replyMessage);
    
    			// Forward to support team
    			await message.forward(FORWARD_TO_EMAIL);
    		} else {
    			// Default: forward to admin
    			await message.forward(FORWARD_TO_EMAIL);
    		}
    	},
    } satisfies ExportedHandler<Env>;
  5. Worker をデプロイします。

    npm run deploy

Worker へのルーティングを設定する

  1. Cloudflare ダッシュボードで Compute > Email Service > Email Routing を開きます。

    Email Routing を開く ↗
  2. ルーティングを設定するドメインを選択します。

  3. Routing Rules タブを選択します。

  4. Create routing rule を選択します。

  5. Worker へのルーティングを設定します。

    • Email pattern: メールのローカル部(support@yourdomain.com なら support など)を入力し、ドメインを選択します
    • Action: Send to a Worker
    • Worker: email-processor Worker を選択します
  6. Save を選択します。

メールルーティングをテストする

ルーティングルールを設定したら、動作を確認します。

  1. 個人のメールアカウントから、設定したアドレス(support@yourdomain.com など)へメールを送ります。

  2. FORWARD_TO_EMAIL の受信トレイで、転送されたメールを確認します。

  3. 受信アドレスが support@ だった場合は、個人のメールアドレスにも自動返信が届きます。

次のステップ

メールをルーティングできるようになったら、高度な機能を確認してください。

役に立ちましたか?