diff --git a/config/config.exs b/config/config.exs
index 68c054457..660ba1775 100644
--- a/config/config.exs
+++ b/config/config.exs
@@ -52,7 +52,8 @@
   limit: 5000,
   upload_limit: 16_000_000,
   registrations_open: true,
-  federating: true
+  federating: true,
+  rewrite_policy: Pleroma.Web.ActivityPub.MRF.NoOpPolicy
 
 config :pleroma, :media_proxy,
   enabled: false,
diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex
index 04b50c1cc..bfb0e04be 100644
--- a/lib/pleroma/web/activity_pub/activity_pub.ex
+++ b/lib/pleroma/web/activity_pub/activity_pub.ex
@@ -10,6 +10,9 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
 
   @httpoison Application.get_env(:pleroma, :httpoison)
 
+  @instance Application.get_env(:pleroma, :instance)
+  @rewrite_policy Keyword.get(@instance, :rewrite_policy)
+
   def get_recipients(data) do
     (data["to"] || []) ++ (data["cc"] || [])
   end
@@ -17,7 +20,8 @@ def get_recipients(data) do
   def insert(map, local \\ true) when is_map(map) do
     with nil <- Activity.get_by_ap_id(map["id"]),
          map <- lazy_put_activity_defaults(map),
-         :ok <- insert_full_object(map) do
+         :ok <- insert_full_object(map),
+         {:ok, map} <- @rewrite_policy.filter(map) do
       {:ok, activity} =
         Repo.insert(%Activity{
           data: map,
diff --git a/lib/pleroma/web/activity_pub/mrf/drop_policy.ex b/lib/pleroma/web/activity_pub/mrf/drop_policy.ex
new file mode 100644
index 000000000..4333bca28
--- /dev/null
+++ b/lib/pleroma/web/activity_pub/mrf/drop_policy.ex
@@ -0,0 +1,8 @@
+defmodule Pleroma.Web.ActivityPub.MRF.DropPolicy do
+  require Logger
+
+  def filter(object) do
+    Logger.info("REJECTING #{inspect(object)}")
+    {:reject, object}
+  end
+end
diff --git a/lib/pleroma/web/activity_pub/mrf/noop_policy.ex b/lib/pleroma/web/activity_pub/mrf/noop_policy.ex
new file mode 100644
index 000000000..9dd3acb04
--- /dev/null
+++ b/lib/pleroma/web/activity_pub/mrf/noop_policy.ex
@@ -0,0 +1,5 @@
+defmodule Pleroma.Web.ActivityPub.MRF.NoOpPolicy do
+  def filter(object) do
+    {:ok, object}
+  end
+end