thunderbird / thunderbird/thunderbird-android

Support SMTP CHUNKING extension

Open
#2,340 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

type: architecture type: enhancement
Dominant language
Kotlin
Stars
14k
Forks
2.8k
Avg merge
3d 3h
Merged PRs (30d)
57

Description

Sending large messages over SMTP is often slow due to the need to line-wrap content.

The CHUNKING extension (RFC 3030) allows for a BDAT command to replace the DATA command. This allows for messages to be sent as continual chunks of data rather than line-wrapped.

It is supported by Gmail and other providers.

Implementation of this will need to be aware of the PIPELINE extension (see #2338) and 8BITMIME extension.

We will need to pick an appropriate chunk size. This might involve investigation of what other providers use (the RFC uses 100000 but it's unclear whether this figure was arbitrarily chosen). It seems over-the-top to allow it to be configurable.

Obviously if the extension instead present we will need to use the normal data command.

Tests should cover use and lack of the extension, as well interaction with PIPELINING

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing the SMTP implementation's DATA handling and reviewing the existing PIPELINE support referenced by issue #2338. Read RFC 3030 and determine how CHUNKING interacts with PIPELINING and 8BITMIME; done means using BDAT when advertised, falling back to DATA otherwise, with tests for both paths and their interaction.

Written by the indexing model from the issue text.

Assessment

Tech stack
kotlin
Domain
networking
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.