discourse/db/post_migrate
Martin Brennan e3d495850d
FEATURE: Overhaul email threading (#17996)
See https://meta.discourse.org/t/discourse-email-messages-are-incorrectly-threaded/233499
for thorough reasoning.

This commit changes how we generate Message-IDs and do email
threading for emails sent from Discourse. The main changes are
as follows:

* Introduce an outbound_message_id column on Post that
  is either a) filled with a Discourse-generated Message-ID
  the first time that post is used for an outbound email
  or b) filled with an original Message-ID from an external
  mail client or service if the post was created from an
  incoming email.
* Change Discourse-generated Message-IDs to be more consistent
  and static, in the format `discourse/post/:post_id@:host`
* Do not send References or In-Reply-To headers for emails sent
  for the OP of topics.
* Make sure that In-Reply-To is filled with either a) the OP's
  Message-ID if the post is not a direct reply or b) the parent
  post's Message-ID
* Make sure that In-Reply-To has all referenced post's Message-IDs
* Make sure that References is filled with a chain of Message-IDs
  from the OP down to the parent post of the new post.

We also are keeping X-Discourse-Post-Id and X-Discourse-Topic-Id,
headers that we previously removed, for easier visual debugging
of outbound emails.

Finally, we backfill the `outbound_message_id` for posts that have
a linked `IncomingEmail` record, using the `message_id` of that record.
We do not need to do that for posts that don't have an incoming email
since they are backfilled at runtime if `outbound_message_id` is missing.
2022-09-26 09:14:24 +10:00
..
20210513125608_remove_length_constrain_from_topic_excerpt.rb FIX: errors that're triggering by too long excerpts (#13056) 2021-05-31 14:59:40 +04:00
20210525112226_remove_length_constrain_from_topic_link_url.rb FIX: PG::StringDataRightTruncation when linking posts (#13134) 2021-06-02 15:27:04 +04:00
20210528003603_fix_badge_image_avatar_upload_security_and_acls.rb FIX: Do not mark badge image uploads as secure (#13193) 2021-05-28 12:35:52 +10:00
20210621234939_backfill_email_log_topic_id.rb PERF: optimise backfilling of topic_id (#13545) 2021-06-28 16:16:22 +10:00
20210624023831_remove_highest_seen_post_number_from_topic_users.rb FEATURE: Add last visit indication to topic view page. (#13471) 2021-07-05 14:17:31 +08:00
20210628035905_drop_duration_column_from_topic_timers.rb DEV: Drop duration column from topic timers (#13543) 2021-06-29 09:27:12 +10:00
20210706091905_drop_disable_jump_reply_column_from_user_options.rb DEV: Drop user_options.disable_jump_reply column (#13646) 2021-07-06 10:47:17 +01:00
20210709053030_drop_uploads_verified.rb DEV: Drop uploads verified column (#13677) 2021-07-09 16:16:13 +10:00
20210802131421_remove_post_processed_trigger_option.rb DEV: Remove `PostProcessed` trigger option (#13916) 2021-08-04 22:24:47 +02:00
20210909041448_make_topic_id_nullable_for_bookmarks.rb DEV: Ignore bookmarks.topic_id column and remove references to it in code (#14289) 2021-09-15 10:16:54 +10:00
20210922064213_alter_bumped_at_indexes_on_topics.rb PERF: Improve database query perf when loading topics for a category. (#14416) 2021-09-28 10:05:00 +08:00
20211019152356_populate_pending_posts_count_column.rb FEATURE: Display pending posts on user’s page 2021-11-29 10:26:33 +01:00
20211124161346_queue_internal_onebox_rebake.rb FIX: Use CDN URL for internal onebox avatars (#15077) 2021-11-25 12:07:34 +00:00
20211201221028_migrate_email_to_normalized_email.rb PERF: migrate normalized_emails in a migrations (#15166) 2021-12-02 15:08:22 +11:00
20211206160212_drop_token_from_email_tokens.rb DEV: Drop unused column email_tokens.token (#15203) 2021-12-13 16:29:47 +11:00
20211224010204_drop_old_bookmark_columns.rb DEV: Drop old bookmark columns (#15405) 2022-01-04 11:19:27 +10:00
20220202223955_migrate_selectable_avatars_enabled.rb FEATURE: upload an avatar option for uploading avatars with selectable avatars (#15878) 2022-02-24 12:57:39 -08:00
20220214224506_reset_custom_emoji_post_bakes_version_secure_fix.rb DEV: Remove use of Discourse application code in migration. (#16068) 2022-02-28 10:48:46 +08:00
20220215015538_drop_user_stat_count_constraints.rb DEV: Drop user_stats count column constraints (#15949) 2022-02-16 12:49:11 +11:00
20220220234155_conform_bounce_error_code.rb DEV: Fix SMTP bounce regexp (#16019) 2022-02-22 08:54:01 +10:00
20220302171443_rebake_old_avatar_service_urls.rb FIX: Update and rebake uses of the old centralized avatar service (#16086) 2022-03-07 09:45:20 +00:00
20220309132720_copy_post_uploads_to_upload_references_for_sync.rb FEATURE: Create upload_references table (#16146) 2022-06-09 09:24:30 +10:00
20220325064954_make_some_bookmark_columns_nullable.rb DEV: Make Bookmark#post_id column nullable (#16287) 2022-03-28 13:09:13 +10:00
20220401140745_drop_category_required_tag_group_columns.rb FEATURE: Allow multiple required tag groups for a category (#16381) 2022-04-06 14:08:06 +01:00
20220429164301_delete_hotlinked_image_custom_fields.rb DEV: Drop old hotlinked image data from post_custom_fields (#16594) 2022-05-12 15:34:35 +01:00
20220512011531_backfill_polymorphic_bookmarks.rb FEATURE: Promote polymorphic bookmarks to default and migrate (#16729) 2022-05-23 10:07:15 +10:00
20220617151846_rename_default_categories_regular_setting.rb UX: Change wording for 'regular' categories to 'normal' (#17134) 2022-06-20 06:49:33 +03:00
20220621164914_drop_flair_url_from_groups.rb DEV: drop unused column `flair_url` from groups table. (#17179) 2022-06-22 00:15:05 +05:30
20220825005115_backfill_outbound_message_id.rb FEATURE: Overhaul email threading (#17996) 2022-09-26 09:14:24 +10:00