feat: introduce keyupdate messages informing contacts about relay changes

When the published relay list changes, key-contacts are informed with an
unsigned message carrying the re-signed key, encrypted to a chunk of contacts
at a time. It is shaped like a receipt notification naming no message, so that
cores which know nothing about keyupdates trash it as well.

See the src/keyupdate.rs module docs for the design.
This commit is contained in:
holger krekel
2026-08-29 23:11:05 +02:00
parent 370cc5c1fd
commit f162749dfe
17 changed files with 830 additions and 26 deletions
+4 -3
View File
@@ -327,14 +327,15 @@ pub(crate) async fn smtp_send(
status
}
/// Inserts a rendered message into the `smtp` table for sending.
/// Inserts a tombstone for `rfc724_mid`
/// and queues the rendered message for SMTP sending.
pub(crate) async fn insert_into_smtp(
context: &Context,
rfc724_mid: &str,
recipients: &str,
rendered_message: String,
msg_id: MsgId,
) -> Result<(), Error> {
) -> Result<()> {
let msg_id = message::insert_tombstone(context, rfc724_mid).await?;
context
.sql
.execute(