Remove the capability to send and receive unencrypted
Maintainer thường phản hồi trong vòng 1 ngày
@Hocuri đang làm issue này rồi.
Từ ngày 7/10/2026.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 25/100
Hướng nghiên cứu
Start by mapping the core migration, legacy Securejoin handling, ForceEncryption configuration, and the listed APIs and types. Read the relevant core code and existing migration or messaging tests first. Done means unencrypted messages are no longer sent or received, existing data is rewritten as specified, obsolete APIs and UI-dependent code are removed, and the migration behavior is tested.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
We would like to remove the capability to send and receive unencrypted messages/emails. This is both in order to have a simpler and safer security model that encrypts without exceptions, and to be able to implement new features more easily since the whole concept and complexity is easier.
first round, UI and user facing:
- In the UIs, the password needs to be visible, so that users can switch away from DC to a classical MUA. Already in progress: https://github.com/deltachat/deltachat-android/pull/4717 https://github.com/deltachat/deltachat-ios/pull/3338 https://github.com/deltachat/deltachat-desktop/issues/6806
- In core: A migration that rewrites unencrypted chats into encrypted ones; the new 0-member groups will get the gray letter icon as an avatar and a fake, deterministically generated group-id (i.e. the group-id should be the same on all devices, if possible).
- all unencrypted (i.e. ad-hoc) groups into regular groups with 0 members.
all unencrypted 1:1 chats into a group with 0 members.(that turned out to be unnecessary; can_send() will return false simply because there is no key)- all chats of type
Mailinglistinto a group with 0 members. - all address-contacts into a key-contact with "Hidden" origin, and with a fake key fingerprint. We still need the contacts because we want to keep the messages, and every message needs a sender.
- We should make sure that the address is available somewhere, e.g. by explicitly setting the name of these contacts to their email address (or appending the email address if there is a name already)
- Users can try and send a message to these contacts or add them to a group, but it will fail since there is no key (we should test that this is actually the case).
- If this turns out to be hard, we try something else, like rewriting the messages to all come from some "ghost" contact.
- A device message that is added into the "Device messages" chat. We might also put a system message into every migrated chat. At the same time, the "Force Encryption" config is removed from the UIs, and it is always enabled for everyone. The device message says something like
We are removing support for unencrypted messages. You can still see old messages, but not send or receive them. Please use a different application for your emails; if you need it, you can see your email password in Delta Chat at "Settings -> Advanced -> Relays -> Tap or right-click on your email address -> Edit Relay". See https://... for more details.
- Remove APIs for
is_encrypted,is_key_contact,Chattype::Mailinglistandshow_padlock/showpadlock, and have the UIs adapt - In UIs, remove all the now-unused code and UI elements that was only needed if
ForceEncryptionis off - It needs to be announced publicly in a blog post.
- what to do with legacy blog posts and forum posts, eg. https://delta.chat/en/2021-05-05-email-compat
second round, core cleanup, we want to have that soon, but not necessarily required immediately, if larger refactorings are needed
- In core, remove support for legacy Securejoin, which sends the first message unencrypted. This means that getting into contact via QR codes or links will be incompatible with versions before core v2.45.0, which was released 6 months ago (on Android, it was released on 2026-03-24, on Desktop on 2026-03-30, and on iOS, on 2026-03-31).
- We could defer this step a bit, but then we need to keep around quite some code that is needed for these unencrypted messages
- If we want, on scanning a legacy Securejoin QR code, we can show an error message like
This QR code or link was generated with an outdated version of Delta Chat. Please ask this person to update Delta Chat, and then give you a new QR code.
- In core, remove all the code that was needed for unencrypted messages, which includes:
is_encryptedis_key_contactEncryption::NoParam::ForcePlaintextandParam::GuaranteeE2EE- We can also remove
ChatAssignment::AdHocGroup, but we need to consider the case of an encrypted email being sent with a classical MUA to multiple recipients. The simplest approach is to just assign it to the 1:1 chat. In this case, we can also get rid of settingmime_referencesin the database,lookup_chat_by_reply(…),ChatAssignment::ExistingChat, all calls togrpid.is_empty(), andSyncId::Msgids.- A this point,
References:headers will only be used for an ephemeral timer rollback protection (https://github.com/chatmail/core/commit/085a899de2a0284d7217d97d295a3dfdead48c46). We may be able to remove it since we already haveEphemeralSettingsTimestamp. Then, we can stop sending and receivingReferences:headers, which will also make every outgoing message a bit smaller. (we may need it in the future e.g. for message-ordering, but this should not affect what code we remove now; we can easily re-add it later.)
- A this point,
- Ngôn ngữ chính
- Rust
- Star
- 937
- Fork
- 149
- Merge trung bình
- 1 ngày 6 giờ
- Pull request đã merge (30 ngày)
- 95
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của chatmail/core
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 68/100
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 45/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 54/100
chatmail/core#8814 · 1 reaction ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Prefer chatmail relays over classic email transports for SMTP sendingCó thể đã có người làm @link2xt đã nhận 2 ngày trước. Đang mở
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
chatmail/core#8804 · 1 bình luận · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 56/100
chatmail/core#8802 · 2 bình luận · 1 reaction ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của chatmail/core
Issue tương tự
-
docs(openclaw): RTK_REWRITE_HOST relaxes every default ask, not only commands no rule matchedĐang mởarea:docs documentation good first issue priority:low
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
rtk-ai/rtk#4500 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
triage:accepted
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
open-telemetry/otel-arrow#4343 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
mishraprafful/multihull#150 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
`npx --package=vite-plus vp create` fails with exit 127 when npm is the chosen package managerĐang mởbug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
voidzero-dev/vite-plus#2970 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
ai_p2 comp-parquet-reader-v3
Độ khó 2/5 Nửa ngày Mức phù hợp với người mới 66/100
ClickHouse/ClickHouse#124986 ·
Maintainer thường phản hồi trong vòng 1 ngày