案例研究:Canonical 如何利用 Forward Email 的开源企业解决方案为 Ubuntu 电子邮件管理提供支持

了解 Canonical 如何使用 Forward Email 的开源、抗量子企业解决方案和无缝 SSO 集成简化 Ubuntu、Kubuntu、Lubuntu 和 Edubuntu 域中的电子邮件管理。

在开源软件领域,很少有名字像 典范,背后的公司 乌班图是全球最受欢迎的 Linux 发行版之一。其庞大的生态系统涵盖了包括 Ubuntu 在内的多个发行版, 库本图, 卢本图, 教育版等,Canonical 在管理其众多域中的电子邮件地址时面临着独特的挑战。本案例研究探讨了 Canonical 如何与 Forward Email 合作创建无缝、安全且注重隐私的企业电子邮件管理解决方案,该解决方案与他们的开源价值观完美契合。

挑战:管理复杂的电子邮件生态系统

Canonical 的生态系统多样而广泛。由于全球有数百万用户和数千名来自不同项目的贡献者,管理跨多个域的电子邮件地址是一项巨大的挑战。核心贡献者需要官方电子邮件地址(@ubuntu.com、@kubuntu.org 等),以反映他们对项目的参与,同时通过强大的 Ubuntu 域管理系统保持安全性和易用性。

在实施“转发电子邮件”之前,Canonical 面临以下困难:

  • 跨多个域管理电子邮件地址(@ubuntu.com、@kubuntu.org、@lubuntu.me、@edubuntu.org 和 @ubuntu.net)
  • 为核心贡献者提供一致的电子邮件体验
  • 将电子邮件服务与现有 乌班图一号 单点登录 (SSO) 系统
  • 寻找符合其对隐私、安全和开源电子邮件安全承诺的解决方案
  • 经济高效地扩展其安全电子邮件基础设施

关键要点

  • Canonical 成功跨多个 Ubuntu 域实施了统一的电子邮件管理解决方案
  • Forward Email 的 100% 开源方法与 Canonical 的价值观完美契合
  • SSO 与 Ubuntu One 的集成为贡献者提供了无缝身份验证
  • 抗量子加密可确保所有电子邮件通信的长期安全
  • 该解决方案能够以经济高效的方式进行扩展,以支持 Canonical 不断增长的贡献者群体

为什么要转发电子邮件

作为唯一一家专注于隐私和安全的 100% 开源电子邮件服务提供商,Forward Email 非常适合 Canonical 的企业电子邮件转发需求。我们的价值观与 Canonical 对开源软件和隐私的承诺完美契合。

使 Forward Email 成为理想选择的关键因素包括:

  1. 完整的开源代码库:我们的整个平台都是开源的,可以在 GitHub,实现透明度和社区贡献。与许多只开放前端而保持后端封闭的“注重隐私”的电子邮件提供商不同,我们已将整个代码库(包括前端和后端)开放给任何人检查 GitHub.

  2. 注重隐私的方法:与其他提供商不同,我们不会将电子邮件存储在共享数据库中,并且我们使用 TLS 进行强大的加密。我们的基本隐私理念很简单: 您的电子邮件仅属于您自己。这一原则指导着我们做出的每一项技术决策,从如何处理电子邮件转发到如何实施加密。

  3. 不依赖第三方:我们不使用 Amazon SES 或其他第三方服务,而是完全控制电子邮件基础设施,并消除通过第三方服务可能造成的隐私泄露。

  4. 经济高效的扩展:我们的定价模式允许组织扩大规模而无需按用户付费,这使其成为 Canonical 庞大贡献者群体的理想选择。

  5. 抗量子加密:我们使用单独加密的 SQLite 邮箱 ChaCha20-Poly1305 作为密码 量子安全加密。每个邮箱都是一个单独的加密文件,这意味着一个用户的数据访问权限并不会授予其他用户访问权限。

实施:无缝 SSO 集成

实施过程中最关键的方面之一是与 Canonical 现有的 Ubuntu One SSO 系统集成。这种集成将允许核心贡献者使用他们现有的 Ubuntu One 凭证管理他们的 @ubuntu.com 电子邮件地址。

身份验证流程可视化

下图说明了完整的身份验证和电子邮件配置流程:

flowchart TD
    A[User visits forwardemail.net/ubuntu] --> B[User clicks 'Log in with Ubuntu One']
    B --> C[Redirect to Ubuntu SSO service]
    C --> D[User authenticates with Ubuntu One credentials]
    D --> E[Redirect back to Forward Email with authenticated profile]
    E --> F[Forward Email verifies user]
subgraph "User Verification Process"
    F --> G{Is user banned?}
    G -->|Yes| H[Error: User is banned]
    G -->|No| I[Query Launchpad API]
    I --> J{Is user valid?}
    J -->|No| K[Error: User is not valid]
    J -->|Yes| L{Has signed Ubuntu CoC?}
    L -->|No| M[Error: User has not signed CoC]
    L -->|Yes| N[Fetch Ubuntu team membership]
end

subgraph "Email Provisioning Process"
    N --> O[Get Ubuntu members map]
    O --> P{Is user in team?}
    P -->|Yes| Q[Check for existing alias]
    Q --> R{Alias exists?}
    R -->|No| S[Create new email alias]
    R -->|Yes| T[Update existing alias]
    S --> U[Send notification email]
    T --> U
    P -->|No| V[No email provisioned]
end

subgraph "Error Handling"
    H --> W[Log error with user details]
    K --> W
    M --> W
    W --> X[Email team at Ubuntu]
    X --> Y[Store error in cache to prevent duplicates]
end

技术实现细节

Forward Email 与 Ubuntu One SSO 之间的集成是通过自定义实施 Passport-ubuntu 身份验证策略实现的。这使得 Ubuntu One 与 Forward Email 系统之间的身份验证流程无缝衔接。

身份验证流程

身份验证过程如下:

  1. 用户访问专门的 Ubuntu 电子邮件管理页面 forwardemail.net/ubuntu
  2. 他们点击“使用 Ubuntu One 登录”并被重定向到 Ubuntu SSO 服务
  3. 使用 Ubuntu One 凭证进行身份验证后,他们会被重定向回转发电子邮件,其中包含经过身份验证的个人资料
  4. 转发电子邮件可验证其贡献者身份,并相应地提供或管理其电子邮件地址

技术实施利用了 passport-ubuntu 包,它是一个 护照 使用 Ubuntu 进行身份验证的策略 开放ID.配置包括:

passport.use(new UbuntuStrategy({
  returnURL: process.env.UBUNTU_CALLBACK_URL,
  realm: process.env.UBUNTU_REALM,
  stateless: true
}, function(identifier, profile, done) {
  // User verification and email provisioning logic
}));

Launchpad API 集成和验证

我们实施的一个关键部分是与 启动板的 API 来验证 Ubuntu 用户及其团队成员资格。我们创建了可重复使用的辅助函数来高效可靠地处理此集成。

sync-ubuntu-user.js 辅助函数负责通过 Launchpad API 验证用户并管理他们的电子邮件地址。以下是其工作原理的简化版本:

async function syncUbuntuUser(user, map) {
  try {
    // Validate user object
    if (!_.isObject(user) ||
        !isSANB(user[fields.ubuntuUsername]) ||
        !isSANB(user[fields.ubuntuProfileID]) ||
        !isEmail(user.email))
      throw new TypeError('Invalid user object');
// Get Ubuntu members map if not provided
if (!(map instanceof Map))
  map = await getUbuntuMembersMap(resolver);

// Check if user is banned
if (user[config.userFields.isBanned]) {
  throw new InvalidUbuntuUserError('User was banned', { ignoreHook: true });
}

// Query Launchpad API to validate user
const url = `https://api.launchpad.net/1.0/~${user[fields.ubuntuUsername]}`;
const response = await retryRequest(url, { resolver });
const json = await response.body.json();

// Validate required boolean properties
if (!json.is_valid)
  throw new InvalidUbuntuUserError('Property "is_valid" was false');

if (!json.is_ubuntu_coc_signer)
  throw new InvalidUbuntuUserError('Property "is_ubuntu_coc_signer" was false');

// Process each domain for the user
await pMap([...map.keys()], async (name) => {
  // Find domain in database
  const domain = await Domains.findOne({
    name,
    plan: 'team',
    has_txt_record: true
  }).populate('members.user');

  // Process user's email alias for this domain
  if (map.get(name).has(user[fields.ubuntuUsername])) {
    // User is a member of this team, create or update alias
    let alias = await Aliases.findOne({
      user: user._id,
      domain: domain._id,
      name: user[fields.ubuntuUsername].toLowerCase()
    });

    if (!alias) {
      // Create new alias with appropriate error handling
      alias = await Aliases.create({
        user: user._id,
        domain: domain._id,
        name: user[fields.ubuntuUsername].toLowerCase(),
        recipients: [user.email],
        locale: user[config.lastLocaleField],
        is_enabled: true
      });

      // Notify admins about new alias creation
      await emailHelper({
        template: 'alert',
        message: {
          to: adminEmailsForDomain,
          subject: `New @${domain.name} email address created`
        },
        locals: {
          message: `A new email address ${user[fields.ubuntuUsername].toLowerCase()}@${domain.name} was created for ${user.email}`
        }
      });
    }
  }
});

return true;

} catch (err) { // Handle and log errors await logErrorWithUser(err, user); throw err; } }

为了简化跨不同 Ubuntu 域的团队成员资格管理,我们在域名和其对应的 Launchpad 团队之间创建了简单的映射:

ubuntuTeamMapping: {
  'ubuntu.com': '~ubuntumembers',
  'kubuntu.org': '~kubuntu-members',
  'lubuntu.me': '~lubuntu-members',
  'edubuntu.org': '~edubuntu-members',
  'ubuntustudio.com': '~ubuntustudio-core',
  'ubuntu.net': '~ubuntu-smtp-test'
},

这种简单的映射使我们能够自动检查团队成员资格和提供电子邮件地址的过程,使得系统在添加新域时易于维护和扩展。

错误处理和通知

我们实施了一个强大的错误处理系统:

  1. 记录所有错误以及详细的用户信息
  2. 检测到问题时向 Ubuntu 团队发送电子邮件
  3. 当新的贡献者注册并创建电子邮件地址时通知管理员
  4. 处理特殊情况,例如未签署 Ubuntu 行为准则的用户

这可确保快速发现和解决任何问题,从而维护电子邮件系统的完整性。

DNS 配置和电子邮件路由

对于通过 Forward Email 管理的每个域,Canonical 添加了一个简单的 DNS TXT 记录进行验证:

❯ dig ubuntu.com txt
ubuntu.com.             600     IN      TXT     "forward-email-site-verification=6IsURgl2t7"

此验证记录可确认域名所有权,并使我们的系统能够安全地管理这些域名的电子邮件。Canonical 通过 Postfix 通过我们的服务路由邮件,这提供了可靠且安全的电子邮件传递基础设施。

结果:简化电子邮件管理并增强安全性

Forward Email 企业解决方案的实施为 Canonical 所有域的电子邮件管理带来了显著的益处:

运营效率

  • 集中管理:所有与 Ubuntu 相关的域现在都通过单一界面进行管理
  • 减少管理开销:为贡献者提供自动配置和自助管理
  • 简化入职流程:新贡献者可以快速获得他们的官方电子邮件地址

增强安全性和隐私性

  • 端到端加密:所有电子邮件均采用高级标准加密
  • 没有共享数据库:每个用户的电子邮件都存储在单独的加密 SQLite 数据库中,提供比传统共享关系数据库更安全的沙盒加密方法
  • 开源安全:透明的代码库允许社区进行安全审查
  • 内存处理:我们不会将转发的电子邮件存储到磁盘,从而增强隐私保护
  • 无元数据存储:与许多电子邮件提供商不同,我们不会保留谁给谁发送电子邮件的记录

节省成本

  • 可扩展的定价模型:无需按用户收费,Canonical 可以在不增加成本的情况下添加贡献者
  • 减少基础设施需求:无需为不同的域名维护单独的电子邮件服务器
  • 降低支持要求:自助服务管理减少了 IT 支持单

改善贡献者体验

  • 无缝身份验证:使用现有 Ubuntu One 凭证进行单点登录
  • 一致的品牌:所有 Ubuntu 相关服务的统一体验
  • 可靠的电子邮件传递:高质量的 IP 信誉确保电子邮件到达目的地

与 Forward Email 的集成大大简化了 Canonical 的电子邮件管理流程。贡献者现在可以无缝管理他们的 @ubuntu.com 电子邮件地址,同时减少管理开销并增强安全性。

展望未来:持续合作

Canonical 和 Forward Email 之间的合作关系不断发展。我们正在合作开展多项计划:

  • 将电子邮件服务扩展到其他与 Ubuntu 相关的域
  • 根据贡献者的反馈增强用户界面
  • 实施额外的安全功能
  • 探索利用开源协作的新方法

结论:完美的开源合作伙伴关系

Canonical 和 Forward Email 之间的合作体现了建立在共同价值观基础上的伙伴关系的力量。通过选择 Forward Email 作为其电子邮件服务提供商,Canonical 找到了一种解决方案,它不仅满足了他们的技术要求,而且完全符合他们对开源软件、隐私和安全的承诺。

对于管理多个域并需要与现有系统进行无缝身份验证的组织,Forward Email 提供了灵活、安全且注重隐私的解决方案。我们的 开源方法 确保透明度并允许社区做出贡献,使其成为重视这些原则的组织的理想选择。

由于 Canonical 和 Forward Email 都在各自的领域不断创新,此次合作证明了开源协作和共同价值观在创造有效解决方案方面的力量。

您可以查看我们的 实时服务状态 查看我们当前的电子邮件传递性能,我们会持续监控以确保高质量的 IP 信誉和电子邮件传递率。

支持企业客户

虽然本案例研究的重点是我们与 Canonical 的合作关系,但 Forward Email 自豪地为各行各业的众多企业客户提供支持,他们重视我们对隐私、安全和开源原则的承诺。

我们的企业解决方案专为满足各种规模组织的特定需求而量身定制,提供:

  • 自定义域 电子邮件管理 跨多个域
  • 与现有身份验证系统无缝集成
  • 专用的 Matrix 聊天支持频道
  • 增强的安全功能包括 抗量子加密
  • 完整的数据可移植性和所有权
  • 100% 开源基础设施,确保透明度和信任度

联系我们

如果您的组织有企业电子邮件需求,或者您有兴趣了解有关 Forward Email 如何帮助简化电子邮件管理同时增强隐私和安全性的更多信息,我们很乐意听取您的意见:

  • 直接发送电子邮件至 support@forwardemail.net
  • 在我们的 帮助页面
  • 查看我们的 定价页面 适用于企业计划

我们的团队随时准备讨论您的具体要求并制定符合您组织价值观和技术需求的定制解决方案。

关于转发电子邮件

Forward Email is the 100% open-source and privacy-focused email service. We provide custom domain email forwarding, SMTP, IMAP, and POP3 services with a focus on security, privacy, and transparency. Our entire codebase is available on GitHub,我们致力于提供尊重用户隐私和安全的电子邮件服务。详细了解 为什么开源电子邮件是未来趋势, 我们的电子邮件转发如何运作, 和 我们的电子邮件隐私保护方法.