diff --git a/src/error.rs b/src/error.rs
index 98df5c9..141b25e 100644
--- a/src/error.rs
+++ b/src/error.rs
@@ -26,6 +26,10 @@ impl Error {
     pub(crate) fn is_bad_request(&self) -> bool {
         matches!(self.kind, ErrorKind::Status(_, StatusCode::BAD_REQUEST))
     }
+
+    pub(crate) fn is_gone(&self) -> bool {
+        matches!(self.kind, ErrorKind::Status(_, StatusCode::GONE))
+    }
 }
 
 impl std::fmt::Debug for Error {
diff --git a/src/middleware/verifier.rs b/src/middleware/verifier.rs
index 8166fda..6b201b0 100644
--- a/src/middleware/verifier.rs
+++ b/src/middleware/verifier.rs
@@ -65,11 +65,21 @@ impl MyVerify {
 
             actor_id
         } else {
-            self.0
+            match self
+                .0
                 .fetch::<PublicKeyResponse>(public_key_id.as_str())
-                .await?
-                .actor_id()
-                .ok_or(ErrorKind::MissingId)?
+                .await
+            {
+                Ok(res) => res.actor_id().ok_or(ErrorKind::MissingId),
+                Err(e) => {
+                    if e.is_gone() {
+                        tracing::warn!("Actor gone: {}, trusting it for now.", public_key_id);
+                        return Ok(true);
+                    } else {
+                        return Err(e);
+                    }
+                }
+            }?
         };
 
         // Previously we verified the sig from an actor's local cache
diff --git a/src/routes/inbox.rs b/src/routes/inbox.rs
index b4db18d..41c25f9 100644
--- a/src/routes/inbox.rs
+++ b/src/routes/inbox.rs
@@ -27,14 +27,26 @@ pub(crate) async fn route(
     verified: Option<(SignatureVerified, DigestVerified)>,
 ) -> Result<HttpResponse, Error> {
     let input = input.into_inner();
+    println!("ActivityActor: {:?}", input);
 
-    let actor = actors
+    let actor = match actors
         .get(
             input.actor()?.as_single_id().ok_or(ErrorKind::MissingId)?,
             &client,
         )
-        .await?
-        .into_inner();
+        .await
+    {
+        Ok(actor) => actor.into_inner(),
+        Err(e) => {
+            // Eat up the message if actor is 410 and message is delete
+            let kind = input.kind().ok_or(ErrorKind::MissingKind)?;
+            if e.is_gone() && *kind == ValidTypes::Delete {
+                return Ok(accepted(serde_json::json!({})));
+            } else {
+                return Err(e);
+            }
+        }
+    };
 
     let is_allowed = state.db.is_allowed(actor.id.clone()).await?;
     let is_connected = state.db.is_connected(actor.id.clone()).await?;