INTEGRITY Документация

Маршрутизация писем

Маршрутизируйте входящие письма, отправленные на ваш домен, в существующие почтовые ящики, Workers для обработки или другие места назначения.

Настройте свой домен

Перед использованием Email Routing настройте домен.

  1. В панели управления Cloudflare перейдите в Вычисления > Служба электронной почты > Email Routing.

    Перейдите в Email Routing ↗
  2. Выберите Подключить домен.

  3. Выберите домен в своей учетной записи Cloudflare. При необходимости ознакомьтесь с DNS записями, которые Cloudflare добавит в ваш корневой домен:

    • MX-записи для маршрутизации входящих писем в Cloudflare.
    • TXT-запись для SPF разрешает маршрутизацию писем.
    • TXT-запись для DKIM обеспечивает аутентификацию перенаправляемых писем.
  4. Выберите Готово.

После подключения домена вы можете начать маршрутизацию писем.

Маршрутизируйте своё первое письмо

Направить первое письмо можно, настроив правила маршрутизации в дашборде, либо обрабатывая письма с помощью Workers.

Самый простой способ маршрутизации писем: пересылка на существующие адреса электронной почты.

Добавить целевой адрес

Прежде чем создавать правило маршрутизации, добавьте и подтвердите адрес назначения, на который будут пересылаться письма. Адреса назначения управляются на уровне учетной записи и могут использоваться для нескольких доменов.

  1. В панели управления Cloudflare перейдите в Вычисления > Служба электронной почты > Email Routing > Destination Addresses.

    Перейдите в Email Routing ↗
  2. В разделе Адреса получателей, введите в форму адрес электронной почты, который хотите использовать в качестве адреса получателя, и отправьте его.

  3. Откройте письмо для подтверждения, которое Cloudflare отправляет на этот адрес, и выберите Подтверждение адреса электронной почты.

Полное описание см. в Добавить целевой адрес.

Создайте правило маршрутизации

  1. В панели управления Cloudflare перейдите в Вычисления > Служба электронной почты > Email Routing.

    Перейдите в Email Routing ↗
  2. Выберите домен, для которого нужно создать email-адрес.

  3. Выберите Правила маршрутизации на вкладке.

  4. Выберите Создать правило маршрутизации.

  5. Настройте первое правило (например, пересылку писем на [email protected] на ваш личный адрес электронной почты):

    • Шаблон адреса электронной почты: Введите локальную часть адреса электронной почты (например, support для [email protected]), и выберите свой домен
    • Действие: Отправить на email-адрес
    • Назначение: Ваш личный адрес электронной почты (например, [email protected])
  6. Выберите Save.

Проверьте правило маршрутизации

Убедитесь, что правило маршрутизации работает:

  1. Отправьте письмо с другого почтового аккаунта на только что созданный адрес (например, [email protected]). Отправляйте письмо с адреса, отличного от адреса получателя. Некоторые провайдеры отклоняют сообщения, которые выглядят так, будто отправлены с того же адреса, на который они доставляются.

  2. Проверьте почтовый ящик адреса назначения на предмет пересланного письма.

  3. Если письмо не появилось сразу, проверьте папку «Спам».

Используйте Workers для обработки писем с пользовательской логикой перед пересылкой или ответом.

Создайте Worker для обработки писем

  1. Создайте новый проект Worker:

    npm create cloudflare@latest email-processor

    Когда появится запрос, выберите Worker «Hello World» в качестве шаблона. Затем перейдите в каталог проекта:

    cd email-processor
  2. Установите пакет, необходимый для создания ответов на письма:

    npm install mimetext
  3. Добавьте nodejs_compat флаг совместимости в файл конфигурации Wrangler. Это необходимо для 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 = "[email protected]"; // 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 перейдите в Вычисления > Служба электронной почты > Email Routing.

    Перейдите в Email Routing ↗
  2. Выберите домен, для которого нужно настроить маршрутизацию.

  3. Выберите Правила маршрутизации на вкладке.

  4. Выберите Создать правило маршрутизации.

  5. Настройте маршрутизацию Worker:

    • Шаблон адреса электронной почты: Введите локальную часть адреса электронной почты (например, support для [email protected]), и выберите свой домен
    • Действие: Отправить в Worker
    • Worker: Выберите свой email-processor Worker
  6. Выберите Save.

Проверьте маршрутизацию писем

После настройки правила маршрутизации проверьте его работу:

  1. Отправьте письмо со своего личного почтового аккаунта на настроенный адрес (например, [email protected]).

  2. Проверьте FORWARD_TO_EMAIL почтовый ящик для перенаправленного письма.

  3. Если адрес получателя был support@, вы также должны получить автоответ на свой личный адрес электронной почты.

Следующие шаги

Теперь, когда вы можете маршрутизировать письма, ознакомьтесь с дополнительными возможностями: