diff --git a/lib/diaspora/federation/receive.rb b/lib/diaspora/federation/receive.rb
index fb0953210538c019c111e54e833e3836f7f76038..a61566402cf1c7950d00de1e070f80f2565ce863 100644
--- a/lib/diaspora/federation/receive.rb
+++ b/lib/diaspora/federation/receive.rb
@@ -180,7 +180,7 @@ module Diaspora
       end
 
       private_class_method def self.author_of(entity)
-        Person.find_by(diaspora_handle: entity.author)
+        Person.by_account_identifier(entity.author)
       end
 
       private_class_method def self.build_location(entity)
diff --git a/spec/lib/diaspora/federation/receive_spec.rb b/spec/lib/diaspora/federation/receive_spec.rb
index a1c206e2541dfb42164d79ac18119d468e730137..df9e5da67762d4770010dc7b0f792651f34f5e76 100644
--- a/spec/lib/diaspora/federation/receive_spec.rb
+++ b/spec/lib/diaspora/federation/receive_spec.rb
@@ -585,6 +585,17 @@ describe Diaspora::Federation::Receive do
 
         Diaspora::Federation::Receive.perform(status_message_entity)
       end
+
+      it "finds the correct author if the author is not lowercase" do
+        status_message_entity = FactoryGirl.build(:status_message_entity, author: sender.diaspora_handle.upcase)
+
+        received = Diaspora::Federation::Receive.perform(status_message_entity)
+
+        status_message = StatusMessage.find_by!(guid: status_message_entity.guid)
+
+        expect(received).to eq(status_message)
+        expect(status_message.author).to eq(sender)
+      end
     end
 
     context "with poll" do