Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

servless/worker-email

Repository files navigation

邮件过滤处理

CloudFlare 邮箱转发(Catch-all)过滤规则服务。

特征

  • 支持收件人白名单
  • 支持多邮箱发件人白名单
  • 支持多邮箱发件人黑名单
  • 支持指定发件人域名黑名单
  • 支持邮件标题过滤

部署教程

通过 GitHub Actions 发布至 CloudFlare

  1. 从 CloudFlare 获取 CLOUDFLARE_API_TOKEN 值,并设置到项目。

    https://github.com/<ORG>/<REPO>/settings/secrets/actions

  2. 可选)设置别名。创建 KV、,并绑定到此 Workers 服务。

    • 2.1a 手动后台绑定,(Settings -> Variables -> KV Namespace Bindings -> Add binding -> Variable name (data), 选择创建的 KV)
    • 2.1b 通过命令行创建。按照本地部署的第 6 步,创建和保存 KV

本地部署到 CloudFlare

  1. 注册 CloudFlare 账号,并且设置 Workers 域名 (比如:xxx.workers.dev)

  2. 安装 Wrangler 命令行工具

     npm install -g wrangler
  3. 登录 Wrangler(可能需要扶梯):

    # 若登录不成功,可能需要使用代理。
    wrangler login
  4. 拉取本项目,并进入该项目目录:

    git clone https://github.com/servless/worker-email.git
    cd worker-email
  5. 修改 wrangler.toml 文件中的 name(proj)为服务名 xxx(访问域名为:proj.xxx.workers.dev)

  6. 创建 WorkersKV,并绑定 KVWorkers

    1. 创建 KV,并设置 email 对象值

      创建名为 datanamespace

       wrangler kv:namespace create data

      得到

      		⛅️ wrangler 2.19.0
      		--------------------
      		🌀 Creating namespace with title "email-data"
      		✨ Success!
      		Add the following to your configuration file in your kv_namespaces array:
      		{ binding = "data", id = "2870141d9f274c6db12d170e01e0b953" }

      将上述命令得到的 kv_namespaces 保存到 wrangler.toml 中,即

       # 替换当前项目该文件内相关的数据,即只需要将 id 的值替换为上一步骤得到的值
       kv_namespaces = [
       { binding = "data", id = "2870141d9f274c6db12d170e01e0b953" }
       ]
    2. 设置邮箱相关值

        1. 设置接收邮箱 注意: 此邮箱必须已经在 CloudFlare 通过验证。
        # json 格式
        wrangler kv:key put --binding=data 'forward' 'dest@email.com'
        1. 收件人白名单列表 设置后,若收件人不在白名单中,则会立即拒收件,不会执行后续规则的检测。
        # json 格式
        wrangler kv:key put --binding=data 'target' '["me@myemail.com"]'
        1. 发件人白名单列表 设置后,若发件人不在白名单中,则会立即拒收件,不会执行后续规则的检测。
        # json 格式
        wrangler kv:key put --binding=data 'allow' '["ex1@email.com"]'
        1. 发件人黑名单列表
        wrangler kv:key put --binding=data 'block' '["ex1@email.com","ex2@email.com"]'
        1. 发件人黑名单域名列表
        wrangler kv:key put --binding=data 'block_domains' '["abc.com","block.com"]'
        1. Subject 过滤词列表
        wrangler kv:key put --binding=data 'filter_words' '["财务"]'
  7. 发布

     wrangler deploy

    发布成功将会显示对应的网址

    Proxy environment variables detected. We'll use your proxy for fetch requests.
    ⛅️ wrangler 2.19.0
    --------------------
    Your worker has access to the following bindings:
    - KV Namespaces:
    	- data: 2870141d9f274c6db12d170e01e0b953
    Total Upload: 0.90 KiB / gzip: 0.37 KiB
    Uploaded email (0.87 sec)
    Published email (3.85 sec)
    	https://email.xxx.workers.dev
    Current Deployment ID: 85d498d5-57c7-4970-8844-e5057a3d29f7
  8. 指定的域名 -> Email -> Email Routing -> Routes -> Catch-all address -> Edit -> Action (Send to A Worker), Destination (email,该 Worker 服务)

  9. 设置目标邮箱(按第 8 步,在 Routes 中),Destination addresses -> Add destination address 添加收件箱地址。

仓库镜像

About

CloudFlare 邮箱转发(Catch-all)过滤规则服务

Resources

License

Stars

Watchers

Forks

Contributors

AltStyle によって変換されたページ (->オリジナル) /