diff --git a/Makefile b/Makefile
index 86516402..34716c29 100644
--- a/Makefile
+++ b/Makefile
@@ -13,7 +13,7 @@ all: $(PROGS)
 %.o: %.c
 	$(CC) -c $(CFLAGS) $(MYCFLAGS) $< -o $@
 
-notmuch: notmuch.o database.o date.o message.o xutil.o
+notmuch: notmuch.o database.o date.o message-file.o xutil.o
 	$(CC) $(MYLDFLAGS) $^ -o $@
 
 Makefile.dep: *.c *.cc
diff --git a/database.cc b/database.cc
index 59e83736..7e678d87 100644
--- a/database.cc
+++ b/database.cc
@@ -501,7 +501,7 @@ notmuch_database_add_message (notmuch_database_t *notmuch,
 {
     Xapian::WritableDatabase *db = notmuch->xapian_db;
     Xapian::Document doc;
-    notmuch_message_t *message;
+    notmuch_message_file_t *message;
 
     GPtrArray *parents, *thread_ids;
 
@@ -512,16 +512,16 @@ notmuch_database_add_message (notmuch_database_t *notmuch,
     time_t time_value;
     unsigned int i;
 
-    message = notmuch_message_open (filename);
+    message = notmuch_message_file_open (filename);
 
-    notmuch_message_restrict_headers (message,
-				      "date",
-				      "from",
-				      "in-reply-to",
-				      "message-id",
-				      "references",
-				      "subject",
-				      (char *) NULL);
+    notmuch_message_file_restrict_headers (message,
+					   "date",
+					   "from",
+					   "in-reply-to",
+					   "message-id",
+					   "references",
+					   "subject",
+					   (char *) NULL);
 
     try {
 	doc = Xapian::Document ();
@@ -530,16 +530,16 @@ notmuch_database_add_message (notmuch_database_t *notmuch,
 
 	parents = g_ptr_array_new ();
 
-	refs = notmuch_message_get_header (message, "references");
+	refs = notmuch_message_file_get_header (message, "references");
 	parse_references (parents, refs);
 
-	in_reply_to = notmuch_message_get_header (message, "in-reply-to");
+	in_reply_to = notmuch_message_file_get_header (message, "in-reply-to");
 	parse_references (parents, in_reply_to);
 
 	for (i = 0; i < parents->len; i++)
 	    add_term (doc, "ref", (char *) g_ptr_array_index (parents, i));
 
-	header = notmuch_message_get_header (message, "message-id");
+	header = notmuch_message_file_get_header (message, "message-id");
 	if (header) {
 	    message_id = parse_message_id (header, NULL);
 	    /* So the header value isn't RFC-compliant, but it's
@@ -592,21 +592,21 @@ notmuch_database_add_message (notmuch_database_t *notmuch,
 
 	free (message_id);
 
-	date = notmuch_message_get_header (message, "date");
+	date = notmuch_message_file_get_header (message, "date");
 	time_value = notmuch_parse_date (date, NULL);
 
 	doc.add_value (NOTMUCH_VALUE_DATE,
 		       Xapian::sortable_serialise (time_value));
 
-	from = notmuch_message_get_header (message, "from");
-	subject = notmuch_message_get_header (message, "subject");
-	to = notmuch_message_get_header (message, "to");
+	from = notmuch_message_file_get_header (message, "from");
+	subject = notmuch_message_file_get_header (message, "subject");
+	to = notmuch_message_file_get_header (message, "to");
 
 	if (from == NULL &&
 	    subject == NULL &&
 	    to == NULL)
 	{
-	    notmuch_message_close (message);
+	    notmuch_message_file_close (message);
 	    return NOTMUCH_STATUS_FILE_NOT_EMAIL;
 	} else {
 	    db->add_document (doc);
@@ -617,7 +617,7 @@ notmuch_database_add_message (notmuch_database_t *notmuch,
 	return NOTMUCH_STATUS_XAPIAN_EXCEPTION;
     }
 
-    notmuch_message_close (message);
+    notmuch_message_file_close (message);
 
     return NOTMUCH_STATUS_SUCCESS;
 }
diff --git a/message.c b/message-file.c
similarity index 88%
rename from message.c
rename to message-file.c
index d888b24d..4f4f551b 100644
--- a/message.c
+++ b/message-file.c
@@ -30,7 +30,7 @@ typedef struct {
     size_t len;
 } header_value_closure_t;
 
-struct _notmuch_message {
+struct _notmuch_message_file {
     /* File object */
     FILE *file;
 
@@ -70,12 +70,12 @@ strcase_hash (const void *ptr)
     return hash;
 }
 
-notmuch_message_t *
-notmuch_message_open (const char *filename)
+notmuch_message_file_t *
+notmuch_message_file_open (const char *filename)
 {
-    notmuch_message_t *message;
+    notmuch_message_file_t *message;
 
-    message = xcalloc (1, sizeof (notmuch_message_t));
+    message = xcalloc (1, sizeof (notmuch_message_file_t));
 
     message->file = fopen (filename, "r");
     if (message->file == NULL)
@@ -93,13 +93,13 @@ notmuch_message_open (const char *filename)
 
   FAIL:
     fprintf (stderr, "Error opening %s: %s\n", filename, strerror (errno));
-    notmuch_message_close (message);
+    notmuch_message_file_close (message);
 
     return NULL;
 }
 
 void
-notmuch_message_close (notmuch_message_t *message)
+notmuch_message_file_close (notmuch_message_file_t *message)
 {
     if (message == NULL)
 	return;
@@ -120,13 +120,13 @@ notmuch_message_close (notmuch_message_t *message)
 }
 
 void
-notmuch_message_restrict_headersv (notmuch_message_t *message,
-				   va_list va_headers)
+notmuch_message_file_restrict_headersv (notmuch_message_file_t *message,
+					va_list va_headers)
 {
     char *header;
 
     if (message->parsing_started ) {
-	fprintf (stderr, "Error: notmuch_message_restrict_headers called after parsing has started\n");
+	fprintf (stderr, "Error: notmuch_message_file_restrict_headers called after parsing has started\n");
 	exit (1);
     }
 
@@ -142,13 +142,13 @@ notmuch_message_restrict_headersv (notmuch_message_t *message,
 }
 
 void
-notmuch_message_restrict_headers (notmuch_message_t *message, ...)
+notmuch_message_file_restrict_headers (notmuch_message_file_t *message, ...)
 {
     va_list va_headers;
 
     va_start (va_headers, message);
 
-    notmuch_message_restrict_headersv (message, va_headers);
+    notmuch_message_file_restrict_headersv (message, va_headers);
 }
 
 void
@@ -192,8 +192,8 @@ copy_header_unfolding (header_value_closure_t *value,
 }
 
 const char *
-notmuch_message_get_header (notmuch_message_t *message,
-			    const char *header_desired)
+notmuch_message_file_get_header (notmuch_message_file_t *message,
+				 const char *header_desired)
 {
     int contains;
     char *header, *value;
diff --git a/notmuch-private.h b/notmuch-private.h
index a8ec8ebe..0c20a3c4 100644
--- a/notmuch-private.h
+++ b/notmuch-private.h
@@ -57,13 +57,13 @@ xstrdup (const char *s);
 char *
 xstrndup (const char *s, size_t n);
 
-/* message.c */
+/* message-file.c */
 
 /* XXX: I haven't decided yet whether these will actually get exported
  * into the public interface in notmuch.h
  */
 
-typedef struct _notmuch_message notmuch_message_t;
+typedef struct _notmuch_message_file notmuch_message_file_t;
 
 /* Open a file containing a single email message.
  *
@@ -71,12 +71,12 @@ typedef struct _notmuch_message notmuch_message_t;
  *
  * Returns NULL if any error occurs.
  */
-notmuch_message_t *
-notmuch_message_open (const char *filename);
+notmuch_message_file_t *
+notmuch_message_file_open (const char *filename);
 
 /* Close a notmuch message preivously opened with notmuch_message_open. */
 void
-notmuch_message_close (notmuch_message_t *message);
+notmuch_message_file_close (notmuch_message_file_t *message);
 
 /* Restrict 'message' to only save the named headers.
  *
@@ -95,12 +95,12 @@ notmuch_message_close (notmuch_message_t *message);
  * returned even if that header exists in the actual message.
  */
 void
-notmuch_message_restrict_headers (notmuch_message_t *message, ...);
+notmuch_message_file_restrict_headers (notmuch_message_file_t *message, ...);
 
 /* Identical to notmuch_message_restrict_headers but accepting a va_list. */
 void
-notmuch_message_restrict_headersv (notmuch_message_t *message,
-				   va_list va_headers);
+notmuch_message_file_restrict_headersv (notmuch_message_file_t *message,
+					va_list va_headers);
 
 /* Get the value of the specified header from the message.
  *
@@ -114,8 +114,8 @@ notmuch_message_restrict_headersv (notmuch_message_t *message,
  * 'header'.
  */
 const char *
-notmuch_message_get_header (notmuch_message_t *message,
-			    const char *header);
+notmuch_message_file_get_header (notmuch_message_file_t *message,
+				 const char *header);
 
 /* date.c */